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
+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