Per Mos's item 4. The gate definition was incomplete from setup because the gates were restated from memory rather than referenced, and the omission propagated into every worker brief since — then recurred inside the correction itself (D-26). Board now carries the referenced sources, the gate order, freeze-after-GO, the coordinator/orchestrator split, and the queue-guard zero-information field form. Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
7.8 KiB
mos-remediation — LIVE BOARD (keep < 8 KB)
Phase: EXECUTING — RM-02 (keystone) at review; RM-03 design-first; 27 findings banked.
Updated: 2026-07-31 (mos-remediation orchestrator; seat active on mosaic-fleet).
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-remediationis 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-02 gate registry ★keystone | f10-coder | PR #1030 @ e4c30a33; rev-974 reviewing; CI #2180 running — NOT gate-ready |
| RM-03 queue guard (3 defects) | coder-mos1 | design-first; build to READY then HOLD for Jason |
| RM-59 D-19 residual risk | — | blocked on RM-12/21/25 (tracked edge) |
| RM-60 / #1031 CI trust boundary | Jason (infra) | option B recommended; A does not fix the ordering defect |
| #1023 queue-guard attempt | Jason | SUPERSEDED-PENDING-JASON — live REQUEST_CHANGES; do not merge |
Delivery gates — DOCTRINE CHANGE 2026-08-01
The gate definition was incomplete from mission setup: the merge-gate verdict step was missing.
Root cause (D-26): the gates were restated from memory into MISSION.md/KICKSTART.md instead of
referenced, and the omission propagated into every worker brief issued since. It then recurred inside
the correction — which dropped five details including a security precondition and cited a file that does
not exist.
Fix is render-not-restate, mechanically. MISSION.md and KICKSTART.md now reference
~/.config/mosaic/fleet/roles.local/merge-gate.md and ~/.config/mosaic/fleet/roles/validator.md and
state only the gate order:
independent review (author ≠ reviewer) → remediation → CI terminal-green at the exact head, full step scan → merge-gate verdict
GO/NO-GO/HOLD(commit-bound; VOID on head move; posted durably with enumerated evidence under its own minted identity) → coordinator head-pinned merge
- After a
GO, pushes freeze — a doc tweak voids the verdict. Gate-ready is a freeze point. - The coordinator assigns the gate seat; the orchestrator owns getting a PR gate-ready.
- Queue guard is ZERO-INFORMATION until RM-03 lands (D-23) — record it as
queue-guard: ZERO-INFORMATION (inert, D-23, owner RM-03). A mandated field must not become a manufactured one. - Gate seat identity:
gitea-mosaicstack-merge-gateminted least-privilege, verifiedpush=False— it structurally cannot merge.
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
- Delivery gates active: author≠reviewer, diff-blind pre-registered checks, CI-green, merged-PR completion.
- Freeze: LIFTED for this workstream only.
- Git identity:
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 check (D-11b): before dispatching seat X to provider Y, verify
~/.config/mosaic/secrets/gitea-tokens/gitea-<Y>-<X>.tokenexists. Token-file set = authoritative capability registry. Mos owns provisioning; escalate missing pairs to him. - 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. - Standing worker-brief doctrine (accreted, mandatory in every brief): don't weaken a RED test to make
it pass; if a check is unrunnable as written SAY SO, never silently substitute;
agent-send -fnever-m; heavy artifacts off shared/tmp. - 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 (from MISSION.md)
- Spine + choke-point service (MACP wiring @ mosaic_orchestrator.py::run_single_task) + PG/Redis
⚠ CONTESTED — see DECISION-1. Both planners independently reject this wire-in point: that
controller is
"enabled": falseand references a dispatcher that does not exist here. Charter text left UNCHANGED pending Mos/Jason ruling; do not treat it as settled. - Rotation daemon (finish Mission Control Plane, reuse packages/coord)
- Comms service (envelope→service→PG/Redis→adapters)
- Hygiene + conformance harness Cross-cutting retirements: flat-file tracking, 3 MACP islands, silent MOSAIC BYPASS.
Dogfood evidence — live failure classes, not hypotheticals
Newest first. Oldest entries roll to
BOARD-LEDGER.mdviaboard-roll.shwhen this file exceeds its 8 KB cap. Keystone detail is duplicated inTASKS.md§1a, so rolling loses nothing.
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.
Decisions log
- 2026-07-31 — Mission set up by Mos post-postmortem (15/15 decided). Dogfood posture active.
- 2026-07-31 — Mos: stale
.mosaic/orchestrator/mission.jsonis RESIDUE of the disabled Python orchestrator rail that this plan RETIRES. Do NOT invest in it; do NOT build on that rail. The 0/0 milestone banner is cosmetic. (Supersedes any plan to repair it.) - 2026-07-31 — Mos: planners must be dispatched with GUARANTEED clean context, not requested-clean. Prior default-socket planner sessions predate this mission; dirty context is the indicted hygiene.
- 2026-07-31 — mos-remediation: worker briefs forbid all git ops and restrict each worker to a single named output file, so two planners can share one checkout without a branch race (M2-era incident doctrine).