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]>
100 lines
7.4 KiB
Markdown
100 lines
7.4 KiB
Markdown
# 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-remediation` LIVE, 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
|
||
|
||
1. **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.
|
||
2. **`docs/remediation/TASKS.md` is authoritative**, not the newest voice in a chat. It holds 38 findings
|
||
(D-1…D-6 in `BOARD-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.
|
||
3. **`MISSION.md` carries 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.
|
||
4. **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.
|
||
5. **Scan CI from `-f json`, never default text** — text mode omits `clone` (**D-33**). State counts.
|
||
6. **The queue guard is zero-information until RM-03 merges** (**D-23**) — never cite its green.
|
||
7. **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`](./MISSION.md) and [`KICKSTART.md`](./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-0` INTERIM. 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), `tea` login (tea paths), **repository permission**
|
||
(writes). Before dispatch, assert `permissions.push == true` **as 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.email` must BOTH be set and
|
||
agree. Exporting `MOSAIC_GIT_IDENTITY` alone does NOT fix commit authorship.
|
||
- ⚠ **LIVE HAZARD (D-37) — one shared `.git/config` re-identifies EVERY worktree at once.** Every seat,
|
||
including `rev-974`'s review worktree, currently authors as **`coder-mos1`**; `MOSAIC_GIT_IDENTITY`
|
||
does **not** override it. **STANDING ORDER: commit with explicit
|
||
`git -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 -f` never `-m`; artifacts off shared `/tmp`; scan CI from `-f json` (**D-33**).
|
||
- Remote control: native `/remote-control` NOT 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`](./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`](./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.
|