docs(remediation): gate definition now REFERENCES canonical roles; bank D-26

The delivery-gate definition was incomplete from setup — the merge-gate verdict step
was missing because the gates were restated from memory rather than referenced, and the
omission propagated into every worker brief since.

Then it recurred inside the correction: the correcting message was itself a restatement
and dropped five things, including a security precondition (an unminted gate seat fails
open to the owner's admin account — the #3084 breach mechanism) and a citation to a file
that does not exist.

D-26 is the definitive case because every condition favoured success: attention maximal,
actor knew the rule best, subject was the rule itself. A rule its own enforcer cannot
follow while enforcing it is not a discipline — it is a requirement for a mechanism.

MISSION.md and KICKSTART.md now reference fleet/roles.local/merge-gate.md and
fleet/roles/validator.md and state only the gate ORDER. Every reference resolves; a
dangling pointer is worse than a restatement.

Precondition independently verified: merge-gate token is least-privilege,
pull=True push=False admin=False — structurally cannot merge.

Co-Authored-By: Claude Opus 5 (1M context) <[email protected]>
This commit is contained in:
mos-dt-0
2026-07-31 22:53:13 -05:00
co-authored by Claude Opus 5
parent 9a7ab73952
commit cbbe3e1ce2
3 changed files with 83 additions and 4 deletions
+9 -2
View File
@@ -25,8 +25,15 @@ mechanically until Build 3 (rotation) makes it automatic.
## Standing invariants (never violate)
- **North star:** deterministic-right-answer → code/gate; LLM only for judgment.
- **Delivery gates:** author≠reviewer; PRE-REGISTERED diff-blind checks committed before reading the diff;
CI terminal-green; completion = merged PR + closed issue. rev-974 = the mosaicstack reviewer identity.
- **Delivery gates — REFERENCE the canonical files, never restate them:**
`~/.config/mosaic/fleet/roles.local/merge-gate.md` (verdict authority) and
`~/.config/mosaic/fleet/roles/validator.md` (validator role). Order:
independent review (author ≠ reviewer, `rev-974`; pre-registered diff-blind checks committed before the
diff is read) → remediation → **CI terminal-green at the exact head by full step scan**
**merge-gate verdict `GO`/`NO-GO`/`HOLD`**, commit-bound and **void the instant the head moves**, posted
durably with enumerated evidence under its own minted identity → **coordinator head-pinned merge**.
The queue guard runs but is **zero-information until RM-03 lands** (D-23) and must not be cited as evidence.
**After a `GO`, freeze pushes** — even a doc tweak voids the verdict. The coordinator assigns the gate seat.
- **Dogfooding:** every fix validated against its live seed case (MISSION.md lists them).
- **Tracking → DB** (hard cutover); do NOT re-invest in flat-file tracking. jarvis-brain PDA is off-limits.
- **Git identity:** export `MOSAIC_GIT_IDENTITY=<your-seat>` so wrappers author correctly and survive respawn.
+25 -2
View File
@@ -186,6 +186,29 @@ orphaned context loader, a fail-open bypass. **Work = wire + consolidate + retir
- **Project orchestrator** `mos-remediation` (this seat) owns the mission; coordinates under Mos (lead).
- **Adversarial task decomposition:** `planner-opus` (robustness) + `planner-sol` (pragmatic) each decompose
the plan independently; orchestrator reconciles into `TASKS.md`/DB tasks. Oppositional by design.
- **Delivery gates (non-negotiable):** author≠reviewer, PRE-REGISTERED diff-blind acceptance checks committed
before reading the diff, CI terminal-green, completion = merged PR + closed issue. rev-974 = mosaicstack reviewer.
- **Delivery gates — REFERENCE, do not restate.** The authoritative definitions live at
[`~/.config/mosaic/fleet/roles.local/merge-gate.md`](file:///home/hermes/.config/mosaic/fleet/roles.local/merge-gate.md)
(verdict authority) and
[`~/.config/mosaic/fleet/roles/validator.md`](file:///home/hermes/.config/mosaic/fleet/roles/validator.md)
(validator/certificate role). **Read them; do not paraphrase them.** Restating an authoritative source
is lossy every time — see D-26, where a subset restated from memory dropped a security precondition.
**Gate order** (the sequence only; the definitions are in the files above):
1. Independent review, **author ≠ reviewer** (`rev-974` on mosaicstack), with PRE-REGISTERED diff-blind
acceptance checks committed before the diff is read
2. Remediation of findings
3. **CI terminal-green** at the exact full-40 head, by **full step scan**
4. **Merge-gate verdict — `GO` / `NO-GO` / `HOLD`** (class `merge-gate`; "Ultron" is an _instance name_,
display data, never an authority source). **Bound to a commit and VOID the instant the head moves.**
`HOLD` persists until replaced; a `NO-GO` answered by an empty commit must be re-issued as `NO-GO`.
Posted durably on the PR under the gate's own minted identity, **enumerating** its evidence — a bare
"GO — gates verified" is non-conforming.
5. **Coordinator merge**, head-pinned. The gate never merges; it holds `push=False` by design.
**The CI queue guard runs but is ZERO-INFORMATION until RM-03 lands** (D-23: it returns pass for every
possible input). It must not be cited as evidence by any gate, including the coordinator's own merge path.
**Assignment:** the coordinator assigns the merge-gate seat; the orchestrator does not. The orchestrator
owns getting a PR _gate-ready_.
- **Compaction survival:** see `KICKSTART.md` in this dir — the resume procedure. Persist typed state, not transcript.
+49
View File
@@ -146,6 +146,55 @@ exposure or changing provider protected-pipeline posture is a host security-post
infrastructure authority. Nothing is blocked meanwhile — RM-02's head is unprivileged and fail-closed,
the privileged experiment stays uncommitted and out of branch history.
### D-26 — render-not-restate failed at maximal attention, committed by the rule's own enforcer
**The definitive justification for making render-not-restate mechanical.**
The mission's delivery-gate definition was **incomplete from setup**: the merge-gate verdict step was
missing. Root cause, stated by the coordinator: when `MISSION.md` / `KICKSTART.md` were written, the
gates were **restated from memory** — _"author ≠ reviewer, diff-blind checks, CI-green, merged-PR
completion"_ — a subset of an authoritative document that was not open at the time. The omission then
**propagated into every worker brief issued for the rest of the mission.**
**Then it happened again, in the correction.** The message correcting the restatement error was itself a
restatement: delivered from memory, without the source open, and it dropped or altered five things —
| stated | actual (`fleet/roles.local/merge-gate.md`) |
| ----------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
| verdict is `APPROVE`/`BLOCK` | **`GO` / `NO-GO` / `HOLD`** |
| — | **verdict is commit-bound and VOID the instant the head moves**; `HOLD` persists; an empty-commit answer to `NO-GO` must be re-issued as `NO-GO` |
| — | the gate verifies mechanical gates **itself from primary evidence** (reviewed-SHA == CI-SHA == head, full step scan, `Closes #N`, queue guard) |
| — | the verdict must be **posted durably, enumerating evidence**; a bare "GO — gates verified" is **non-conforming** |
| cite `guides/CANONICAL-DELIVERY-CYCLE.md` | **that file does not exist** — the path was taken from another brief and cited without checking it resolves |
**And the omission was safety-relevant.** The role doc carries a hard install precondition: an unminted
gate seat's credentials **fail open to the owner's admin account**, so its verdicts would post as admin —
_"the exact mechanism of the #3084 breach this seat exists to prevent."_ Verified: gate identities existed
for USC only, none for mosaicstack (D-15's class, on the seat that authorises merges). Assigning the gate
at that moment would have reproduced the breach it was created to stop.
**Why this is the definitive case, and not just a third instance.** The failure occurred when every
condition favoured success: **attention was maximal** (a deliberate correction), **the actor knew the rule
best** (its author and enforcer), and **the subject was the rule itself** — the message was _about_
render-vs-restate while committing it. A discipline that fails under those conditions does not fail from
carelessness; it fails because **human recall of a structured document is lossy by construction, and the
loss is silent.**
> **A rule that its own enforcer cannot follow while enforcing it is not a discipline. It is a
> requirement for a mechanism.**
**Requirement.** Governing documents must **reference** authoritative sources, never paraphrase them, and
**every reference must resolve** — a dangling pointer to a non-existent authority is _worse_ than a
restatement, because it reads as authoritative and cannot be checked. RM-02 registers both: a link-resolution
case (every cited authority path exists) with a must-fail control, and the D-20 clause that prose asserting a
property needs a negative control.
**Resolved:** `MISSION.md` and `KICKSTART.md` now **reference** `fleet/roles.local/merge-gate.md` and
`fleet/roles/validator.md` and state only the gate _order_. The precondition was cleared properly —
`gitea-mosaicstack-merge-gate.token` minted at **least privilege**, independently verified by this
orchestrator as the seat's own token: `pull=True, push=False, admin=False` — it **structurally cannot merge**,
which is what a verdict authority must be.
### D-25 — self-verification by the audited party, a second time, one layer down
RM-02's per-commit replay needs isolation. Docker denied Bubblewrap namespace creation; the obvious fix