#1033 mergedf4fd5967, verified by property: merged=true + merge commit, #1034 (delivery) CLOSED, #1000 (retirement trigger) still OPEN. The exemption is on main and RM-02 is unblocked. D-43 is mine. Compressing RM-02's board row to meet the 8KB budget, I turned "2 reviews clear" into "2 live REQUEST_CHANGES" — an inversion. Provider truth: reviews 63 and 65 are at superseded heads and live REQUEST_CHANGES atf9746b23is empty. The real state is subtler than either wording: no live blocker AND no live approval, because the head carries no review at all. Caught only by re-deriving RM-02's state from the provider before dispatching, not by re-reading the board. I was one message from briefing f10-coder to remediate two blocking reviews that do not exist. The transferable part: this board carries a hard <8KB budget, it exceeded that budget four times in one session, and each time I shaved prose to fit. Compression IS restatement, and this board's own rule is "REFERENCE, do not restate" (D-26) because restatement is lossy every time. The budget therefore forces the exact operation the board forbids, on its most load-bearing table. I flagged that as a risk earlier in the session; it then materialised as an actual error. Rule banked: meet a size budget by ROLLING content out to BOARD-LEDGER.md, never by rewording what stays. Deleting a row and pointing at its authoritative home is safe; paraphrasing to save bytes is not. Applied immediately — this commit rolls the Decisions-log narrative out verbatim rather than trimming it, and the board is back under budget at 8096. And the deeper one, onto RM-34: the orchestrator is the board's sole writer, so nothing external checks the board against reality. Code has rev-974, gates have the merge-gate, CI has the JSON scan — the control plane has no independent verifier. Handoff validation must include re-deriving the board's claims from the provider, not merely confirming a successor can read the file. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
54 lines
5.2 KiB
Markdown
54 lines
5.2 KiB
Markdown
<!-- board-roll: 1 entry rolled from BOARD.md -->
|
||
|
||
### **D-1 / P-ACTIVATION + hygiene — committed `.npmrc` hard-pins `store-dir=/root/.local/share/pnpm/store`.**
|
||
|
||
Correct for the CI container (runs as root), fatal for EVERY non-root local checkout: `EACCES` on `/root/.local/share/pnpm/store/v10/server/server.json`. A committed config that only works on one runtime is exactly the activation-skew class. Fix candidate: make store-dir env-overridable, not hardcoded.
|
||
|
||
<!-- board-roll: 2 entries rolled from BOARD.md -->
|
||
|
||
### **D-3 / P-FLEET-001 — the seats running this mission are UNMANAGED.** `mos-remediation`, `rev-974`,
|
||
|
||
`planner-opus`, `planner-sol` appear in NO roster (`~/.config/mosaic/fleet/roster.yaml`, `agents/`). Planners run on socket `default`; the roster declares `mosaic-fleet`. This is the exact "one roster-owned socket/host + quarantine unmanaged + stale GC" failure P-FLEET-001 indicts — observed on the remediation mission's own fleet. Prerequisite for INBOX identity-addressing.
|
||
|
||
### **D-2 / hygiene — husky `prepare` fails `EPERM` copying into root-owned `.husky/_/`.** Repo working
|
||
|
||
tree has root-owned dirs (`.husky/`, repo root) under a non-root agent. Worked around with the intended `HUSKY=0` escape hatch (does NOT disable the existing pre-commit/pre-push hooks).
|
||
|
||
<!-- board-roll: 2 entries rolled from BOARD.md -->
|
||
|
||
### **D-5 / P-QUEUE-001 + P-CONFORMANCE-001 — KEYSTONE: an inert gate that erased its own evidence.**
|
||
|
||
Merged PR #868 (`b79336a8`) shipped a file that FAILS `pnpm format:check` ⇒ the CI format gate did not block. An unrelated later PR (#872) then reformatted that file via its own `lint-staged`, so `main` went green again and nobody learned the gate had failed to fire. Verified blob-level under the repo's own config. **Detection must be per-merge-commit against that commit's own tree** — a "is main green today" check reports all-clear on this exact defect. Binding on RM-02/RM-55. Full chain in `TASKS.md` §1a. NOT quiet-patched, by Mos's ruling: patching the symptom destroys the signal.
|
||
|
||
### **D-4 / P-LIFECYCLE + hygiene — a dispatched agent silently IGNORED an in-message context reset.**
|
||
|
||
planner-sol was at 64.3%/372k; the brief asked it to reset first; it began work on dirty context anyway. Only an out-of-band `/new` driven by the orchestrator guaranteed clean state. Confirms the postmortem thesis: **instructions are not enforcement.** Reset must be a mechanical pre-dispatch step, not a request.
|
||
|
||
<!-- board-roll: 2 entries rolled from BOARD.md -->
|
||
|
||
### **D-7 / P-FLEET-001 — stale-GC-on-disk: shared 30G /tmp hit 100% ENOSPC, degrading two seats.**
|
||
|
||
~5.2G was session scratch dead 8-9 days (this session's own footprint: 88K). Same missing capability as orphaned-tmux-session GC, applied to disk — not a quota or discipline problem. Resolved manually by Mos (lead coordinator) after independent verification; `/tmp` now 79%. **The gap IS the finding:** the authority to reap exists, the deterministic reaper does not. Folded into RM-50 with explicit requirements (mechanical liveness, age threshold, dry-run, audit event per reap — never a heuristic sweep). Refusing to unilaterally delete another session's scratch was correct doctrine; the fix is a reaper, not braver agents.
|
||
|
||
### **D-6 / P-QUEUE-001 — the mandated queue guard returned PASS on an UNKNOWN state, live, today.**
|
||
|
||
Running the required `ci-queue-wait.sh --purpose push` before pushing produced `state=unknown ... exit 0` — the exact defect at `ci-queue-wait.sh:282-288` that PR #1023 is parked on. It also evaluated `branch=main` rather than the branch being pushed. The mission's own required pre-push gate passed me on an indeterminate result. Third independent live instance of the class.
|
||
|
||
<!-- board-roll: 1 entry rolled from BOARD.md -->
|
||
|
||
### **D-8 / P-CONFORMANCE-001 — a PRE-REGISTERED acceptance check that was not runnable as written.**
|
||
|
||
PR #1025 AC2's fixture `mkdir -p apps/*/venv/lib` creates a literal `apps/*/venv/lib` dir when the glob is unmatched — it did not test what it claimed. rev-974 ran it exactly as written, caught it, re-ran the intended assertion at an explicit path, and **disclosed** rather than silently substituting a working fixture and reporting PASS. **Pre-registration protects a check from being retrofitted to the implementation; it does not make the check correct.** An unverified gate appeared inside the mechanism built to catch unverified gates. Hard requirement on RM-02: the registry must self-verify that every registered case runs AND can fail — presence is not evidence.
|
||
|
||
<!-- board-roll: Decisions-log narrative rolled from BOARD.md 2026-08-01 (D-43: meet the
|
||
byte budget by ROLLING OUT, never by rewording what stays) -->
|
||
|
||
### Decisions log — full record in [`TASKS.md`](./TASKS.md)
|
||
|
||
All 44 findings (D-1…D-6 in `BOARD-LEDGER.md`, D-7…D-43 + D-38c in `TASKS.md`) and every ruling with its
|
||
rationale live there. **Not duplicated here** — a second copy is a second thing to go stale, which this
|
||
board had done three times in one night (gate list, capability registry, DECISION-1 status), and three
|
||
more times by the next rotation seam (RM-61 "building", "nothing implemented yet", DECISION-1/2/3
|
||
"must be ruled"). The rulings a fresh seat needs are items 4–7 above; they are **not** repeated here,
|
||
because that repetition is what went stale.
|