Files
stack/docs/remediation/BOARD.md
T
mos-dt-0andClaude Opus 5 e7c9160c7b docs(remediation): board — delivery-gate doctrine change recorded with render-vs-restate root cause
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]>
2026-07-31 23:01:07 -05:00

7.8 KiB
Raw Blame History

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-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 P0P5, 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 scanmerge-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-gate minted least-privilege, verified push=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-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 check (D-11b): before dispatching seat X to provider Y, verify ~/.config/mosaic/secrets/gitea-tokens/gitea-<Y>-<X>.token exists. 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.email must BOTH be set and agree. Exporting MOSAIC_GIT_IDENTITY alone 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 -f never -m; heavy artifacts off shared /tmp.
  • 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 (from MISSION.md)

  1. 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": false and references a dispatcher that does not exist here. Charter text left UNCHANGED pending Mos/Jason ruling; do not treat it as settled.
  2. Rotation daemon (finish Mission Control Plane, reuse packages/coord)
  3. Comms service (envelope→service→PG/Redis→adapters)
  4. 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.md via board-roll.sh when this file exceeds its 8 KB cap. Keystone detail is duplicated in TASKS.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.json is 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).