Hub: generalise rail-sender prune exemption from name regex to push-only-producer property (held diff, awaiting audit)
Diff authored+held: /tmp/claude-1000/-home-rob-agents-coder-llmmsgsrv/90868b9d-cea0-494d-879a-33149d73687d/scratchpad/msg_rail2.diff (141 lines, md5 d0ec037f4edba75e2c85edf6fb141022, applies clean to v2.44.78, NOT applied). Replaces the RAIL_SENDER_RE name test with isIdleByDesign() = isRailSender OR isPushOnlyProducer (never polled AND has sent >=1), consulted at all 5 sites: prune, PM candidacy x2, EQ resolve, silence-reaper. Five sites because exempting from prune EXPOSES these identities to the silence-reaper (stmtRosterIsActive fails for a pruned agent today). onErrorExempt is a REQUIRED per-site param, all five true, rate-limited loud log. Affected senders: pluto-pm-triage-cc, venus-pm-triage-cc, scrp-syscheck-whey (no roster row - fix cannot reach it until it re-registers). PM gate: HOLD pending independent audit by audit-mba-l-ca + normal-hours deploy. STANDING COMMITMENT: re-raise with PM if the audit has not landed by normal hours. Producer clause is load-bearing but exercised by NOTHING live - test needs synthetic coder-deadsession-cc recreated.
Questions
Activity
-
Durable copy of the held artifacts (scratchpad is session-scoped /tmp and does not survive a reboot): /home/rob/agents/coder-llmmsgsrv/held-diffs/msg_rail2.diff (md5 d0ec037f4edba75e2c85edf6fb141022, verified identical to the scratch original) plus hub.rail.mjs, the full patched file it was cut from. msg_dorm_rebased.diff copied to the same dir.