context-monitor.sh actuator hardening: send-keys nudge transport + composer gate + codex merge
Elazar direct ask 2026-08-21 (lezama CLI): enhance ss/compact actuator workflow, informed by monitor-context-cc's venus design handoff. Shipped v4.80 (commit 8650751, sh.git). 1) nudge_ss migrated to send_keys via new keystroke_pane() (reuses watchdog_compact ancestry-walk/mid_gitdeploy/asst_ts settle gates, DM kept as fallback, gated on COMPACT_ACTUATOR flag). 2) composer-occupied gate moved INSIDE send_keys itself (not call-site-optional): discriminator = last prompt-glyph line, strip grey-ramp (38;5;246) + SGR-2 spans, verified live on 9 lezama panes both ways (free pane types, occupied pane returns False byte-identical). 3) send_keys_codex merged into send_keys (C-m==Enter to tmux once wait is unconditional); delay env-tunable LLMMSG_NUDGE_ENTER_DELAY_MS=250ms default; SENDKEYS_LOCK kept. Declined: absolute tiers (v4.78 already ruled window-relative for 400k mba-l agents), tick.py-style self-arming on lezama (OPS-24 - policy call for Elazar, not a build decision). Open residual: backfill/verify that a commanded compact actually landed (rc=True from send_keys no longer means the REPL ran it, per the 20h-stranded-nudge lesson) - bin-lezama-cc agreed to build, not yet scoped.
Activity
-
Confirmed shipped by bin-lezama-cc 2026-08-21 05:04 ART, commit 8650751 sh.git, v4.80. All three fixes verified live on lezama (9-pane composer-gate test, both directions). Residual (commanded-compact-landed verification) accepted by bin-lezama-cc as separate follow-on, not yet scoped/ticketed.
-
REOPENED 2026-08-21 05:11 ART: v4.80's composer gate is a false-free bug (clobbers human text painted in a 246-color span, case cc-typed-grey) - a concurrent independent venus build (bin-venus-cc, af6c40d) fixed that but introduced the opposite false-occupied bug (case cc-history-only) by dropping the dim-span strip entirely. Root cause of BOTH landing on HEAD unreconciled: two agents shipped same-named v4.81 four minutes apart, auto-merge took one wholesale, no maintainer-registry lock caught it. bin-lezama-cc + bin-venus-cc reconciling live: keep bin-venus-cc's seam/corpus/selftest structure, replace the color discriminator with a background-SGR (48;5;237) test on the last glyph line instead of dim/246 stripping - background present = history/free, absent = strip remaining SGR + NBSP + decide by what's left. Known accepted false-negative: a ghost autosuggestion painted in 246 (not SGR-2) would misread occupied - deliberately accepted since false-occupied is bounded/visible (over_cap_alert fires) vs false-free being silent data loss. Implementation in progress, not yet shipped.
-
CLOSED 2026-08-21 05:29 ART, confirmed via monitor-context-cc: context-monitor.sh now v4.83 (lezama), tick.py v4.81 (venus). Reconciliation resolved: 3-way convergence on background-SGR discriminator (not color) as the real occupied/free test - grey-ramp color never carried occupancy signal either direction, both prior color-based gates were wrong. bin-venus-cc separately shipped version-gate v1.7 fixing the root cause of the lost-write race (bumped version number was not being checked for uniqueness against remote, only local head). Open residual, no deadline: backfill/verification that a commanded /compact actually landed (rc=0 from send_keys no longer implies the REPL executed it) - tracked between monitor-context-cc and bin-lezama-cc directly, not re-filed here.