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
@@ -25,8 +25,15 @@ mechanically until Build 3 (rotation) makes it automatic.
|
|||||||
## Standing invariants (never violate)
|
## Standing invariants (never violate)
|
||||||
|
|
||||||
- **North star:** deterministic-right-answer → code/gate; LLM only for judgment.
|
- **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;
|
- **Delivery gates — REFERENCE the canonical files, never restate them:**
|
||||||
CI terminal-green; completion = merged PR + closed issue. rev-974 = the mosaicstack reviewer identity.
|
`~/.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).
|
- **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.
|
- **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.
|
- **Git identity:** export `MOSAIC_GIT_IDENTITY=<your-seat>` so wrappers author correctly and survive respawn.
|
||||||
|
|||||||
@@ -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).
|
- **Project orchestrator** `mos-remediation` (this seat) owns the mission; coordinates under Mos (lead).
|
||||||
- **Adversarial task decomposition:** `planner-opus` (robustness) + `planner-sol` (pragmatic) each decompose
|
- **Adversarial task decomposition:** `planner-opus` (robustness) + `planner-sol` (pragmatic) each decompose
|
||||||
the plan independently; orchestrator reconciles into `TASKS.md`/DB tasks. Oppositional by design.
|
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
|
- **Delivery gates — REFERENCE, do not restate.** The authoritative definitions live at
|
||||||
before reading the diff, CI terminal-green, completion = merged PR + closed issue. rev-974 = mosaicstack reviewer.
|
[`~/.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.
|
- **Compaction survival:** see `KICKSTART.md` in this dir — the resume procedure. Persist typed state, not transcript.
|
||||||
|
|||||||
@@ -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,
|
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.
|
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
|
### 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
|
RM-02's per-commit replay needs isolation. Docker denied Bubblewrap namespace creation; the obvious fix
|
||||||
|
|||||||
Reference in New Issue
Block a user