# mos-remediation — LIVE BOARD (keep < 8 KB) **Phase:** EXECUTING — RM-03 at owner-merge; RM-02 blocked on RM-61; RM-61 building. **Updated:** 2026-08-01 — **ORCHESTRATOR ROTATION SEAM** (prior seat rotated at ~803k tokens, ~4x threshold). ## Head - Mission charter + 15 decisions + 4-build plan: PERSISTED (`docs/remediation/MISSION.md`). - HOLD lifted for this workstream (Jason 2026-07-31). Nothing implemented yet — planning first. - Orchestrator seat `mos-remediation` is LIVE and owns the mission. Residency attestation: PASS. - **TASK-0 DONE** — checkout repaired, all three gates green HONESTLY (no `--no-verify`), branch pushed. - **TASK-1 DONE** — both planners delivered independently on clean context; reconciled into `TASKS.md` (58 tasks across P0–P5, 7 convergences, 7 adjudicated disagreements, 3 escalated decisions). - **NEXT ACTION IS NOT MINE:** DECISION-1/2/3 (`TASKS.md` §5) must be ruled before P0 dispatch. RM-01 is dispatchable immediately regardless — it depends on nothing and blocks everything. ## In-flight | Task | Owner | State | | ----------------------------- | ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | RM-01 reproducible checkout | — | **MERGED** `f58b3699` (#1027) | | RM-03 queue guard | **Jason** | **merge-gate GO** @ `78ec47cd` (comment 20392) — **HELD FOR OWNER MERGE**. Head verified unmoved; GO is commit-bound and VOID if it moves — **do not push to #1032** | | RM-02 gate registry ★keystone | — | **BLOCKED on RM-61.** Code complete @ `f9746b23`, own harness green in CI, 2 reviews clear, head FROZEN. Cannot certify terminal-green: `ci-postgres` FAIL on #2187 **and** #2188 | | RM-61 CI-contract exemption | coder-mos1 | design APPROVED, **building**. Controls first → prove discrimination → then exempt | | RM-59 / RM-60 | Jason (infra) | tracked deps; RM-60 option **B** (A does not fix the ordering defect) | | #1023 queue-guard attempt | Jason | SUPERSEDED-PENDING-JASON — RM-03 supersedes; 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 building. Read the record before touching any lane. 2. **`docs/remediation/TASKS.md` is authoritative**, not the newest voice in a chat. It holds 35 findings (D-1…D-6 in `BOARD-LEDGER.md`, D-7…D-35 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=` 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. - 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 and the cross-cutting retirements are stated once in the charter. **Not repeated here.** ⚠ **DECISION-1 is RULED, not contested** (this board previously said otherwise — stale for hours after the ruling). The choke point targets a **new production Node `TaskExecutor` on the LIVE dispatch path** (`packages/mosaic` launch + `packages/coord`); the disabled Python rail is **deleted, not ported**. ## Decisions log — full record in [`TASKS.md`](./TASKS.md) All 35 findings (D-1…D-6 in `BOARD-LEDGER.md`, D-7…D-35 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 has now done three times in one night (gate list, capability registry, DECISION-1 status). Live rulings a fresh seat most needs: - **D-23** queue guard is inert → zero-information until RM-03 merges. Never cite its green. - **D-33** scan CI from `-f json`; text mode omits `clone`. State counts. - **D-34** a context reset strips `MOSAIC_GIT_IDENTITY` → re-export in every brief. - **RM-61** exemption: controls FIRST, prove discrimination, THEN adopt — or fall to option A. - The RM-02 bounded CI re-roll was a **one-time stopgap, never policy**.