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:
co-authored by
Claude Opus 5
parent
9a7ab73952
commit
cbbe3e1ce2
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user