From bf8c6f4a89bdabefe19778a032c8f211c1ae4110 Mon Sep 17 00:00:00 2001 From: mos-dt-0 Date: Sat, 1 Aug 2026 00:07:59 -0500 Subject: [PATCH] =?UTF-8?q?docs(remediation):=20bank=20D-31=20=E2=80=94=20?= =?UTF-8?q?seat=20ran=20past=20100%=20context=20with=2028=20uncommitted=20?= =?UTF-8?q?files?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit coder-mos1 hit 102.5%/372k on RM-03 with 28 modified files uncommitted and its branch still at base — a full context window spent with nothing durable. Caught by polling seat state, not by any system signal. Nothing warned anyone: no threshold alert, no pre-compaction hook. The founding failure mode of this mission — compaction destroying in-flight work — nearly hit the mission's own delivery twice in one night. RM-01 survived because it had committed work when checkpointed; this one had none. Commit-then-rotate works; rotate-without-commit loses everything. RM-34: a context threshold is not enough — rotation must force a durable checkpoint and refuse to rotate a seat with uncommitted work. RM-50: seat context is observable state and must be monitored; relying on an orchestrator to poll is instructions-not-enforcement applied to lifecycle. Brief doctrine: commit early, commit WIP. Adjacent: the diff spans 5 guides and 11 templates against a brief scoped to one script. Queried, not assumed — but a 28-file diff from a one-script brief is a scope signal regardless of the answer. Co-Authored-By: Claude Opus 5 (1M context) --- docs/remediation/TASKS.md | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/docs/remediation/TASKS.md b/docs/remediation/TASKS.md index 76d60a65..80bf9153 100644 --- a/docs/remediation/TASKS.md +++ b/docs/remediation/TASKS.md @@ -221,6 +221,38 @@ reviewer, and no other seat holds mosaicstack write. Flagged to the coordinator busy lane. Not blocking today — RM-02's code blockers are independently disqualifying — but the next otherwise-clean PR meets this. +### D-31 — a seat ran past 100% context with 28 uncommitted files and no commits + +`coder-mos1` reached **102.5% / 372k context** on RM-03 with **28 modified files uncommitted** and its +branch still at the base commit — i.e. **a full context window spent (~\$27) with nothing durable**. The +orchestrator caught it by polling seat state, not by any signal from the system. + +**Nothing warned anyone.** No threshold alert, no pre-compaction hook, no "you are about to lose this" +prompt. The seat did not report distress because from inside, running low on context feels like ordinary +work right up until it is not. **The one failure mode the mission was founded on — compaction destroying +in-flight work — very nearly happened to the mission's own delivery, twice in one night** (RM-01 was +checkpointed at 69%; this one was already past the window). + +**What made RM-01 survivable and this one nearly not:** RM-01 had _committed_ work when it was +checkpointed, so rotation was cheap. Here the work existed only in the worktree and the seat's context. +**Commit-then-rotate works; rotate-without-commit loses everything.** + +**Requirements.** + +- **RM-34 (rotation daemon):** a context-threshold trigger is not enough — it must **force a durable + checkpoint before rotating**, and refuse to rotate a seat with uncommitted work until that work is + committed or explicitly discarded. Rotation without a commit is data loss with extra steps. +- **RM-50 (fleet ownership):** seat context level is **observable state** and must be monitored, with a + threshold alert to the coordinator. Relying on an orchestrator to poll is exactly the "instructions, + not enforcement" pattern (D-4) applied to lifecycle. +- **Worker briefs (immediate, mechanical):** _commit early, commit WIP, an imperfect commit that exists + beats perfect work that vanishes._ Added to standing brief doctrine rather than left to judgement. + +**Adjacent observation — scope drift, unverified.** The same diff spans 5 framework guides and 11 agent +templates against a brief scoped to the queue guard and its tests. Queried rather than assumed: if the +edits are consequential to the tri-state change they stay; if drive-by, they split. Recorded here because +**a 28-file diff from a brief that named one script is a scope signal regardless of the answer.** + ### D-29 — the registry's own coverage clause was SYNTACTIC, not semantic `rev-974` blocked PR #1030 with a finding that lands in the keystone's own enforcement: