abr:ss attribution false-negative: fast responders fail the text_in_pane visibility test
After delivering abr:ss the executor waits 30s and requires busy=True AND the abr:ss text still visible in a 15-line pane tail (scan-context.py capture()). Premise inverts: an agent that IGNORES abr:ss leaves the text on screen and PASSES; an agent that ANSWERS it scrolls the text off within 30s and FAILS as skip_compact_abrss_never_ran / abort_abrss_never_ran (busy=True, text_in_pane=False), so no /compact is sent. Confirmed on monitor-context-cc 2026-08-09 04:24-04:28 (three dispatches, ctx 68.8->80.4%, zero compacts) and coder-mars-cc 2026-08-07T08:33:43. Distinct from OPS-108 (no re-arm after abort) and OPS-116 (stuck-busy). Fix direction: attribute on something that survives the agent working - post-delivery transcript user-message text, or a persist marker the agent writes - not pane-text visibility.
Questions
Activity
-
Fixed in tick.py v4.65, 2026-08-09. Attribution now reads pane SCROLLBACK via a new capture_scrollback() (tmux capture-pane -S -500, whitespace-normalized, returns '' on tmux failure so an unreadable pane fails CLOSED). The 15-line tail is kept for the liveness half of the check - 'is it working now' is a present fact needing a present window, 'did our text appear' is a historical one. Marker is baseline-COUNTED before send_keys and required to increase, because scrollback durability reintroduces history: under the OPS-108 retry ladder a retry at the same ctx% and reason produces a byte-identical marker, and membership would match the prior dispatch. Also probes once before the first 1s sleep - the head start is exactly what fast responders were losing. Same tail-vs-scrollback fix applied to the escalation persist-banner check, which had the identical inversion (an agent that persisted and kept working scrolled its own banner away). Verified on live panes: 3 of 31 agents have abr:ss in scrollback and NONE of the 3 have it in the 15-line tail - all three would have failed attribution under the old read. Bad tmux target returns ''. Live dry-run clean.