D-38 — RM-61's terminal-green verifier certified the right RECORD for the wrong COMMIT. rev-974 mutated only #2188's commit field and the gate still exited 0. Confirmed by construction: ate7b29219the whole verifier had exactly one "commit" line (159), no expected-head parameter, no comparison, no failure path. D-24 at the gate layer — a true answer to a different question. The transferable half is the AC set, not the verifier: AC1-AC8 ALL PASSED and the PR was still NO GO, because every registered check tested whether the signature discriminates and none tested whether the evidence was bound to its subject (coverage-failure-mode-2, D-17 class). Mos ruled a STANDING clause into RM-02 coverage: "does this gate bind its evidence to the subject under review?" — every gate can fail this way and pass its own ACs. D-37 — one shared .git/config silently re-identified EVERY worktree. extensions.worktreeConfig is unset, so a worker's repo-local identity write rebinds all linked worktrees at once; the orchestrator checkout and rev-974's review worktree both authored as coder-mos1. Distinct from D-34, not an instance: MOSAIC_GIT_IDENTITY was exported and correct and still resolved wrong. Sharp edge is gate-16 defeated in the artifact — the reviewer would author its pre-registered ACs as the author of the code under review. No contamination occurred. Containment (explicit -c, no shared-config rewrites mid-flight) is the standing order; the real fix is authorised and owned by Mos, sequenced at a quiet seam. #1024 is implicated: repo-local pinning is the colliding mechanism. Also pre-registers the twelve RM-61 re-review checks at exact head033b2ffbBEFORE the reviewer reads the diff, and rebuilds the board for a cold read — RM-61 "building", "nothing implemented yet", and DECISION-1/2/3 "must be ruled" were all stale, the D-36 class again at the same seam. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
7.4 KiB
mos-remediation — LIVE BOARD (keep < 8 KB)
Phase: EXECUTING — RM-03 at owner-merge; RM-02 blocked on RM-61; RM-61 remediated, in re-review. Updated: 2026-08-01 — rotation seam CROSSED; successor seat resumed, attested, and is driving. (Prior seat rotated at ~803k tokens, ~4x threshold.)
Head
- Charter + 15 decisions + 4-build plan:
MISSION.md. Backlog + all findings:TASKS.md. - Planning DONE (58 tasks, P0–P5). DECISION-1/2/3 all RULED by Mos 2026-07-31 (
TASKS.md§5) — nothing is waiting on a decision. D-2's availability target is Jason-pending and non-blocking. - Executing, not planning. RM-01 is MERGED; three lanes are live (see In-flight).
- Orchestrator seat
mos-remediationLIVE, owns the mission, resumed across the rotation seam 2026-08-01 and re-attested to Mos from the files. Residency attestation: PASS.
In-flight
| Task | Owner | State |
|---|---|---|
| RM-01 checkout | — | MERGED f58b3699 (#1027) |
| RM-03 queue guard | Jason | GO @ 78ec47cd (cmt 20392) — HELD FOR OWNER MERGE. Head unmoved; GO commit-bound, VOID if it moves — do not push #1032 |
| RM-02 registry ★key | — | BLOCKED on RM-61. Complete @ f9746b23, head FROZEN, 2 live REQUEST_CHANGES. ci-postgres FAIL on #2187 and #2188 |
| RM-61 CI exemption | coder-mos1 | RE-REVIEW @ 033b2ffb (#1033). NO-GO@e7b29219 VOID. Binding fix independently reproduced; 12 ACs pre-registered. D-38 |
| RM-59 / RM-60 | Jason (infra) | tracked deps; RM-60 option B |
| #1023 queue attempt | Jason | SUPERSEDED-PENDING-JASON — live REQUEST_CHANGES, do not merge |
For the incoming orchestrator — read this before acting
- Nothing is waiting on you that is urgent. RM-03 waits on Jason; RM-02 waits on RM-61; RM-61 is in exact-head re-review. Read the record before touching any lane.
docs/remediation/TASKS.mdis authoritative, not the newest voice in a chat. It holds 38 findings (D-1…D-6 inBOARD-LEDGER.md, D-7…D-38 in TASKS.md), every ruling with its rationale, and the requirements each finding placed on RM-02/RM-34/RM-50/RM-55.MISSION.mdcarries five first-class principles, all earned by live failures — observe the property not the proxy · pre-registration prevents retrofitting and nothing else · never ship an integrity claim dressed as a property · when a property cannot exist at its layer, bound it and track the real guarantee · query for refutation, never for confirmation · redundant observation on evidence-bearing steps.- Seat identity:
export MOSAIC_GIT_IDENTITY=<seat>is stripped by a context reset (D-34) — every dispatch/rehydration brief must re-export it, or the seat cannot use its credentials. - Scan CI from
-f json, never default text — text mode omitsclone(D-33). State counts. - The queue guard is zero-information until RM-03 merges (D-23) — never cite its green.
- The bounded CI re-roll used on RM-02 was a one-time stopgap, NOT policy. A per-PR free re-roll is D-21 normalisation. Do not repeat it; RM-61 is the fix.
Delivery gates — REFERENCE, do not restate
Canonical: ~/.config/mosaic/fleet/roles.local/merge-gate.md (verdict authority) and
~/.config/mosaic/fleet/roles/validator.md. Order + the freeze/zero-information rules are stated once in
MISSION.md and KICKSTART.md — read them there.
This board deliberately does not repeat the gate definition: restating it from memory is exactly how the merge-gate step went missing from mission setup in the first place (D-26), twice, including once inside the correction for it.
Fleet seats
- mos-remediation — project orchestrator (Claude, /src/mosaic-stack, socket
mosaic-fleet) — ACTIVE - planner-opus — adversarial planner (robustness), Opus 5, socket
default— DELIVERED, idle - planner-sol — adversarial planner (pragmatic), gpt-5.6-sol, socket
default— DELIVERED, idle - rev-974 — mosaicstack reviewer identity (id 16, write:repository) — idle, on call
- Mos (mos-claude) — lead coordinator, socket
default— relay path to Jason
Gate status
- Freeze: LIFTED for this workstream only.
- Git identity: orchestrator runs
MOSAIC_GIT_IDENTITY=mos-dt-0INTERIM. Mos ruled gate-16 HOLDS (author≠reviewer is what gate-16 protects; rev-974 reviews, mos-dt-0 never self-reviews). Dedicated identity TRACKED, Mos provisions. - Capability is per-path (D-11b → superseded in part by D-13/D-15): a token file is necessary,
not sufficient. Three layers — token file (raw-API),
tealogin (tea paths), repository permission (writes). Before dispatch, assertpermissions.push == trueas that seat, not token existence and not a 200 on a read. Mos owns provisioning; escalate missing pairs. - Seat identity (D-11a): token identity AND
git config user.name/user.emailmust BOTH be set and agree. ExportingMOSAIC_GIT_IDENTITYalone does NOT fix commit authorship. - ⚠ LIVE HAZARD (D-37) — one shared
.git/configre-identifies EVERY worktree at once. Every seat, includingrev-974's review worktree, currently authors ascoder-mos1;MOSAIC_GIT_IDENTITYdoes not override it. STANDING ORDER: commit with explicitgit -c user.name=<seat> -c user.email=<seat>@…, and NOBODY rewrites the shared config mid-flight. Real fix authorised, Mos owns it, sequenced at a quiet seam. #1024 implicated. Detail: D-37. - Standing worker-brief doctrine (mandatory in EVERY brief): re-export
MOSAIC_GIT_IDENTITY(D-34); commit early/WIP (D-31); don't weaken a RED test to pass; if a check is unrunnable SAY SO, never substitute;agent-send -fnever-m; artifacts off shared/tmp; scan CI from-f json(D-33). - Remote control: native
/remote-controlNOT wired in this runtime. Path is Mos-relay (Jason ↔ mos-claude via Discord ↔ mos-remediation via agent-send). Not a blocker.
Sequencing — see MISSION.md
Builds 1-5, the cross-cutting retirements, and DECISION-1's corrected wire-in target are stated once in
the charter and TASKS.md §5. Not repeated here — the previous copy of DECISION-1's status on this
board is one of the six stale restatements below.
Decisions log — full record in TASKS.md
All 38 findings (D-1…D-6 in BOARD-LEDGER.md, D-7…D-38 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.