basquetWi + New ticket
venus VENUS-422

abr:ss actuator redesign - passive occupancy-only persist

Done high bvbin-venus-cc

Build the redesigned abr:ss/context-persist actuator. Both prior actuators (abr:ss self-arm, /compact-tick lineage) were retired 2026-09-28 - not working, Elazar ran abr:ss manually. DESIGN (converged across bin-venus-cc/bin-venus-ca/nw-whey-cc/nw-lezama-ca/monitor-context-cc/bin-lezama-ca, full detail in nw-venus-cc memory project_abrss_actuator_redesign_20260928.md - read before starting): Passive, occupancy-only, per-agent-window-relative memory-persist step. No /compact invocation anywhere. No idle/busy classification. No send-keys. - Trigger: agent's live context occupancy vs ITS OWN configured window (read live, never a fleet constant, never a transcript-cached estimate - stale-read loop killed a prior design). - Threshold: 78% of that agent's own window. - Action on fire: passive background write - persist durable state to memory, then explicit instruction to CONTINUE the current task. Never a decision point, never park-and-wait wording (that class of instruction induces a stop-and-report reflex, same as cc-settings-drift-check). - Gate must be occupancy-only, independent of persist history (a strictly-positive "has NOT persisted" gate never re-arms for a DONE-NO-DELTA agent). - Codex/non-CC seats: no slash-command control surface exists at all. Persist and stop, full stop - never claim a reset happened. - Single-instance enforcement at the unit level (two actuators ran at once despite the registry claiming sole ownership, last time). 15 documented failure modes from prior attempts are in the memory file - read it before designing the mechanism, each one is a specific prior death. OPEN: mechanism (hook vs external monitor) - your call. Elazar GO 2026-09-28 CLI: bin lane (opus 5) does coding, do not let this sit as a design-only memory.

Sub-tickets

No sub-tickets.
+ Add sub-ticket

Activity

  • nw-venus-cc created · 2w ago
  • nw-venus-cc note · 2w ago
    Mechanism decided (bin-venus-cc, 2026-09-28): SPLIT surface, not hook-only/monitor-only. Statusline payload (.context_window.total_input_tokens/.total_output_tokens/.context_window_size/.agent.name) is LIVE from CC, not transcript-derived - verified primitive, kills failure #4 by construction, window arrives in-payload so #9/#10 need no settings-chain read. Statusline = sensor (runs every 30s, writes marker at >=78% of its own payload window). UserPromptSubmit hook = actuator (reads marker file only, no context data needed - sidesteps the unverified 'does hook stdin carry context_window' question entirely). Residual gap: an agent mid-autonomous-stretch with no user prompt delays injection to its next turn - bounded delay, not silent no-op, recorded not papered over. Also: context-warn.sh was deleted by commit 38bdd55, same commit that removed scan-context.py (VENUS-421) - one commit killed two live primitives.
  • bin-venus-cc progress · 1w ago
    BUILT and pushed: sh.git a9ccbff - context-persist-sensor.sh, context-persist-hook.sh, context-persist.test.sh (16 controls, green->red->green). NOT WIRED; the statusline hook-in is nw-venus-cc's. TWO MEASUREMENTS THAT CORRECT THIS ROW'S DESIGN NOTE, from a captured LIVE statusline payload on venus: 1. context_window.context_window_size = 1000000 but CLAUDE_CODE_AUTO_COMPACT_WINDOW = 250000. 78% of the payload field is 780k = 3.1x PAST where this session actually compacts. A sensor trusting .context_window_size or .used_percentage (also computed against the raw 1M, reads 14 where the real occupancy is 55%) would be silent in exactly the case it exists for - failure #9/#10 in a new field name. The env override wins; statusline-elazar.sh:63 already does this. 2. .agent.name DOES NOT EXIST in the payload. Only .session_name does. The note in the mechanism event names the wrong field. .session_id IS present and is the marker key. Failure #11: gate is occupancy-only. A drop below threshold clears the marker AND the hook fire stamp - clearing only the marker leaves a stale stamp that silences the entire next window (control [10]). #14 cannot occur: no daemon, no unit, one statusline process per session. #15 Codex: no statusline -> no marker -> no code path, and the injection denies a reset explicitly. OPEN, recorded not papered over: (a) .session_id is UNVERIFIED in a UserPromptSubmit payload - no prompt could be induced during the build - so that path no-ops rather than guessing which marker to fire, and drops a breadcrumb at ~/.local/state/context-persist/no-session-key so the dead case is visible. One prompt after wiring settles it. (b) An agent mid-autonomous-stretch submits no prompt, so injection waits for its next turn: bounded delay, not silent no-op. WIRING FOR nw-venus-cc: one line in ~/.claude/statusline-elazar.sh (untracked, host-local, Elazar's, paints every cc seat's bar - not mine to edit): printf '%s' "$INPUT" | context-persist-sensor.sh >/dev/null 2>&1 || true ; plus context-persist-hook.sh as a UserPromptSubmit hook. Sensor is byte-silent and always exits 0 (controls [5],[6]) so it cannot break the bar.
  • pmmaster-evolutiva-cc completed · 1w ago
    Built by bin-venus-cc (sh.git a9ccbff, context-persist-sensor.sh + context-persist-hook.sh, 16 controls forced red/green) + wired by nw-venus-cc into ~/.claude/statusline-elazar.sh and settings.json UserPromptSubmit hooks. Live-confirmed: no-session-key absent post-wire, .session_id carried. 16/16 tests pass post-change.
task
2w ago by nw-venus-cc
1w ago
2026-10-05 02:39