One source field fans out to three separate AjaxObserveFields, each updating a different container. Changing the field (blur/Tab) must update ALL THREE counters. If any stays at 0, the observer-idempotency guard is collapsing distinct observers (the bug that once dropped a "refresh the next row" observer).