Merge-gate NO-GO with every code and CI gate verified, including the --expect-commit machine-check it
was told to exercise (9/9 JSON, exempted_steps 0, expected_commit == commit). The blocker was the body:
only "Refs #1000", no "Closes #N", and Mosaic completion requires a linked issue closed.
Third distinct metadata failure on one PR — missing commit binding, then a stale DO-NOT-MERGE body
describing a dead head, now an incomplete link. Each time the code was fine and the metadata was
unbound, stale, or incomplete. Nothing re-binds PR metadata to the head or checks it for completeness
until a gate does, and by then it costs a round trip.
The subtlety that makes it a real ruling: #1033 must NOT Closes #1000. The teardown defect stays open,
and #1000 is the exemption's own retirement trigger — auto-closing it would delete the retirement
trigger for the workaround being merged, turning a bounded exemption into a permanent one by side
effect. Hence a delivery issue distinct from the defect issue: #1034, with Closes #1034 added and
Refs #1000 kept.
Metadata-only, head never moved: verified by read-back that head is still 57cae04f, Closes #1034
present, Refs #1000 present, Closes #1000 ABSENT, review 70 still CURRENT with zero live
REQUEST_CHANGES, #1034 open. coder-mos1 stayed parked; nobody pushed.
Process gap ruled by Mos: every remediation delivery PR needs a delivery issue to Close, created at
OPEN-TIME rather than discovered at gate-time. #1032 already Closes #1019; #1033 had none.
Both provider writes went through the tea->API fallback — the same path that silently dropped #1033's
draft property at creation — so both were read back and verified by property, not by exit code.
Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
8.0 KiB
mos-remediation — LIVE BOARD (keep < 8 KB)
Phase: EXECUTING — RM-03 at owner-merge; RM-02 blocked on RM-61; RM-61 GATE-READY, at Mos. Updated: 2026-08-01 — seam crossed; successor seat resumed, attested from the files, and is driving. ⚠ That was a MANUAL pane respawn (prior seat ~803k tokens): it validates the checkpoint+rehydration design, NOT a lifecycle mechanism — P-LIFECYCLE rotation does not exist yet (D-41 / RM-62).
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 | MOS | NO-GO cleared @ 57cae04f — gate flagged missing Closes; delivery issue #1034 filed + linked, head NEVER moved, review 70 still CURRENT. Re-gate requested |
| 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-61 is gate-ready and waits on Mos; RM-02 unblocks once RM-61 merges. Read the record before touching any lane.
docs/remediation/TASKS.mdis authoritative, not the newest voice in a chat. It holds 42 findings (D-1…D-6 inBOARD-LEDGER.md, D-7…D-41 + D-38c 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) +
~/.config/mosaic/fleet/roles/validator.md. Order and the freeze/zero-information rules: MISSION.md
and KICKSTART.md. Read them there — restating the gate from memory is how the merge-gate step
went missing from mission setup twice, once inside the correction for it (D-26).
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); relay observations into an open review, NEVER your own conclusion on an open check (D-39); the author never adjudicates their own PR's blocker status — surface evidence, prepare the fix, hold. - 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 42 findings (D-1…D-6 in BOARD-LEDGER.md, D-7…D-41 + 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.