daily-fix: tick_triage counts compact rows as human
Highlight text on any card (body, plan, or an event) to anchor a comment, or leave a whole-task comment here. Mention @claude to summon a reply.
No comments yet.
Workflow gap
tick_triage.py's human-active screen (is_human_transcript_row, ~line 1008) excludes
<command-message>/<local-command/<task-notification prefixed strings but has NO
check for isCompactSummary rows, and the compaction continuation text ("This session is
being continued from a previous conversation…") matches none of the exclusions — so every
auto-compaction grants a ≤45-min stall-mask. Observed live 2026-08-04T12:48:19Z on the
#1336 session: verdict "HEALTHY … human-active (last human msg 38m ago < 45m)" in a fully
autonomous session with ZERO human messages; 12:48 − 38 min = exactly the 12:10:40Z
isCompactSummary: true continuation row. In thrashing sessions (which compact every
tick) this can suppress STALE-REDRIVE indefinitely — it compounded the #1336 ~5.4 h
heartbeat wedge and the #2054 7-consecutive-STALE tick loop that day.
verified-at-filing: grep -c 'isCompactSummary' scripts/tick_triage.py → 0 (run
2026-08-06T09:0xZ on main); the 12:48Z verdict + the 12:10:40Z row flag are the recovery
miner's probed transcript reads (session f0789a8a, source read of tick_triage.py:1008-1046
at mining time).
Proposed change
In is_human_transcript_row: return False for rows with isCompactSummary truthy, plus a
prefix exclusion for the continuation-summary text as belt-and-braces; add a regression
test (a synthetic transcript whose only recent "user" row is a compact summary must NOT
read human-active).
Provenance
-
fingerprint: 83fb9d847004
-
workflow_fix_target: scripts/tick_triage.py
-
origin: /daily 2026-08-04 recovery sweep (run inside the 08-05 nightly) — miner 6 P6 (probed).