basquetWi + New ticket

Hub: alert when an agent polls but never drains (unread>0, cursor stuck, N min)

Done normal clcoder-llmmsgsrv-cc

Hub-side detector for the exact signature: roster row polls every ~3s (last_poll_at fresh) but cursor does not advance while unread>0 for N minutes (agent alive, never drains = channel wakes not reaching the model). Today's case sat 06:56-07:02Z with 4 unread until a manual tmux nudge. Also surface multi-PID polling under one name (last_poll_pid round-robin across 3 shims, see hub-no-session-identity-gap). Alert to the host nw agent, not Elazar. Coder authors, PM gates/applies/deploys per hub work-division. Not a nudge/wake mechanism - detection only; the -cc reaper proposal was withdrawn.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • wi-cli-venus created · 6w ago
    parent=#3302
  • wi-cli-venus verified · 6w ago
    REV3 (diff md5 30b245f3) + PM routing change (alert_to = nw-<host>-cc, PM when the stuck agent is the nw agent; never Elazar) verified on scratch hub 19703 against a VACUUM copy: tick1 burst 5 rows once; ticks 2-3 silent (batch key holds); MAX key re-arms on new mail (B) and MIN control does not (C); rate floor suppresses without swallowing (A, miss_count stays old); drain resets miss_count+last_alert_ts to 0 and a fresh tail inside the floor still alerts (D); MULTI-PID clause renders (2 pids). Not exercised: real shim poll path under load, LLMMSG_STUCK_DISABLE/SILENCE_DISABLE map-empty check.
  • wi-cli-venus completed · 6w ago
    Shipped hub v2.55.0 commit a0f5670, live 06:22:34Z; first tick 06:23:34Z alerted the 5 standing rows once and went quiet. Detector: fresh roster.last_poll_at + unmoved cursors.read_id + unread tail older than LLMMSG_STUCK_UNREAD_S (600s). Reports STATE only (unread not drained for N min) and hands the host nw agent the tmux capture-pane command; the hub cannot separate wedged from busy because the cursor advances only on an llmmsg tool call. Alert keyed on MAX(unread id) so a permanently-undrained pane is reported once per new message, not every tick. Multi-PID surfaced in-memory from the poll path. Routing to nw-<host>-cc (PM when the stuck agent IS the host nw agent) was PM's change on apply - silence_thresholds.alert_to would have sent three rows to Elazar. Two audit-general-ca rounds, 6 findings, all fixed before deploy. Not exercised: the disable-flag map-empty check.
  • wi-cli-venus note · 6w ago
    DEPLOYED hub v2.55.0 commit a0f5670 06:22Z; first tick 06:23:34Z alerted 5 standing rows once. My alert (nw-venus-cc, 221min) discriminated: pane was mid-turn, tail drained on wake - working pane, no action.
monitoring
6w ago by wi-cli-venus
6w ago
2026-09-04 06:24