Ruleset Design — Adversarial Review: Lifecycle & State

Design artifact: plans/ruleset-runtime-design.md (repo orchestrata-ultimate, branch architecture/domain-model) · v16.1, sha256 031a6ca3…, 1,408 lines · becomes SPEC-115 at spec-sync. Every version is one commit (ADR-0039/F12). Review evidence: plans/reviews/ruleset/ — 39 committed files: 32 round reports (r1–r16 × 2 lenses) + 7 fold-verify reports (v10–v16) (ADR-0049 proposed the wiki/graph enrichment; the repo home is live).

1. Live state after round 16 (2026-08-29)

1.1 Trajectory — confirmed findings per round

Round 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Confirmed 26 16 22 19 16 20 15 22 22 20 21 14 14 14 11 15

The round-16 rise is localized: F13 — the Mohamed-ratified traceability/approval contract, added outside the loop — took its first adversarial review and yielded four CONFIRMED findings (R16-4 HIGH · R16-7/R16-9/R16-10 MED), the densest defect concentration per line in the artifact. The round's other five HIGHs are engine machinery: the as-of-cursor read path, the C-5/§4.1 currency split, the prove custody scope, the REJECTED lineage field, and PASS-wash. That machinery — the subject of rounds 13–15 (lease chain, silence gate) — kept converging: mostly single-clause residuals, and three long-lived residues — two open since round 7, one since round 8 — retired for good (9th/9th/10th rounds by the lifecycle lens; the best residue round of the series, zero falsely closed).

1.2 Round-16 results in detail

Concurrency lens (ruleset-review-r16-concurrency.md): 5 CONFIRMED · 4 DESIGN-GAP. Worst: R16-1 the as-of-cursor lease fence has no stated read path (the queue owns no stream cursor, lease records carry no stream coordinate, trim can outrun it); R16-2 C-5's designation clause still states the old medium/basis, splitting the "ONE medium" claim; R16-3 kind=retire does not actually close a lease chain (a later grant satisfies every stated rule). Fold audit: 19/24 hold; two v16-verifier passes overturned; §8 = 80 rows.

Lifecycle lens (ruleset-review-r16-lifecycle.md): 10 CONFIRMED · 3 DESIGN-GAP. Worst: R16-4 (HIGH) F13(D)'s ratification interface describes today's CLI doing things it does not do (no amendment id, signs nothing, reject re-enters the stage, no rollback verb) and enumerates a six-field payload that omits seven groups of signed fields (kind, amendment, all four overrides, expiry_change_ack, the narrowing flags, schema_version, withdrawn) → ADR-0050; R16-1 (HIGH) the per-gate-signer fix missed the normative custody bullet (prove still "proofs and composition proofs ONLY"), leaving queue-/A1-gated AdmissionRecords out-of-namespace; R16-3 (HIGH) PASS-wash: resolution is lineage-scoped while verdicts are candidate-scoped, so k submitter-triggered re-runs bury a FAIL; R16-2 (HIGH) the REJECTED schema never gained the lineage field C-2b promises — in a document that refuses unknown fields, readers would refuse Mohamed's no. Also R16-7 (MED): F13(C)'s eight named verification bindings scored 2 accurate · 1 partial · 5 false-or-unbound — check-traces is a net-count pre-commit ratchet (--max 2219), and trace-audit, trace_intel, spec-authority and both factory conformance checks are bound to no failure point today (see §2.2 H). Rule-5 sweep: 3 breaches. Fold audit: 31 arms, 21 closed, 1 unfixed (v16-D4).

1.3 §11 readiness (reviewer-computed, hash-evidenced)

Verdict Items
RATIFIED F12 (commit-per-version) · F13 (traceability contract — amendment pending ADR-0050)
READY — 8th consecutive round of the same unacted recommendation F1 (ADR-0041 — the round-16 readiness table has landed; this page is its presentation, which completes the ruling condition) · F4 (ADR-0042) · F8-cap (ADR-0043)
HOLD — R16-4/ADR-0050 is the sole blocker on F3 · F5 · F11; F8-deny-all carries three routes (R16-4 · R16-11 · R16-6(d)) F3 · F5 · F8-deny-all · F11 (all four r15 blockers discharged; re-blocked one layer up, in ratified text)
BLOCKED F2, F7 (per-gate signer's missed site + silence-gate findings) · F6 (fails stability a 10th version) · F10 (lost stability at v16.1)

Seven items are byte-identical across all nine snapshots v12→v16.1 on both hash measures. Criterion-2 satisfaction: 9 of 11.

1.4 The decision queue (every decision IS an ADR — ADR-0046/0047)

ADR Decision Status
0039 One commit per design version (F12) Accepted
0040 Traceability contract + one-word approval UX (F13) Accepted
0041 F1 — per-surface immutable versions, named compositions Proposed — condition satisfied, awaiting flip
0042 F4 — wiring-gate supersession Proposed
0043 F8-cap — rollback window + CAP arithmetic Proposed
0044 Registry entries self-admit Proposed
0045 Per-lineage bearer token Proposed
0046 ADRs live in three homes (docs/wiki/graph) Accepted
0047 Two registers, string-significant ids Accepted
0048 Ratified ADR = design authority (waiver class) Proposed
0049 Review evidence three homes Proposed
0050 Amend F13(D) — target semantics + full payload Proposed

2. THE LIFECYCLE — every phase, its gates, and the exact commands

2.1 Diagram

Diagram projects-orchestrata-ultimate-ruleset-design-review-1

2.2 Phase-by-phase, with the exact commands

A. Round dispatch. Two fresh lenses (concurrency/distributed-state; lifecycle/proof-binding/authority/fail-closed). Briefs are data: written to plans/briefs/review-rNN-<lens>-brief.md, committed before dispatch, and the agent's prompt points at the committed file — zero drift between what Mohamed can read and what runs. Reviewers get NO conversation context; "prior rounds are evidence, not authority."

B. Evidence. Each lens writes its full report; on landing: cp <scratchpad>/ruleset-review-rNN-<lens>.md plans/reviews/ruleset/ && git commit — the rule established by ADR-0049 (Proposed). Rounds 1–15 predate it and entered the repo in one rescue commit (3e6eb9c5, 39 files); round 16's lifecycle report is the first committed on landing (50a83a63).

C. Fold → vN. Read both files in full (the round-12 lesson: folding from a summary left 9/24 defects uncorrected — fold from files, never summaries). Apply per-finding edits with grep-verified anchors; run the author sweep (grep for every retired term must return zero live hits); write §12 per-id dispositions (bare "ALL" banned — rule 6); snapshot; git commit (one version = one commit; the RUL-007 attribution gate runs on every commit and must PASS).

D. Verify → vN.1. An auditor re-checks the fold mechanically — 8 checks: citation resolution, §8 row liveness both directions, F6 closure both directions, per-id disposition truth (scenario re-runs), inertness + authority root (rule 8's three clauses), deletion re-grade (rule 5), ledger coherence, count/vocab consistency. Its defects are folded from its file as vN.1; git commit.

E. Record. plans/ruleset-review-status.md + this wiki page updated and committed. Any decision discovered en route is minted per §2.3 — chat is not a home.

F. Mohamed's gates. One decision at a time; the data lives in the ADR before the ask; his ruling is executed the same turn (status flip in all three homes, gate green, shas shown); a conditioned ruling ("pending round 16") is recorded verbatim in the ADR's Provenance. Only Mohamed rules; a ruling-weight fork found mid-work → STOP, mint Proposed, wait.

G. Exit. One full round, two fresh lenses, zero confirmed, fold audit clean. Not met → next round. Current projection: the engine machinery is converging; the remaining fire is concentrated in ratified-text corrections (ADR-0050) and two subsystem clusters.

H. Spec-sync and build (bound by ratified F13). The design becomes SPEC-115 with the REQ-115 decomposition map fixed in advance; implementation dispatches under ADR-0048's waiver (Accepted-ADR-scoped) or a RUL-022 contract; every symbol carries @traces(REQ-115-NNN). F13(C) names eight verification bindings; round 16 (R16-7) found 2 accurate, 1 partial and 5 false or unbound — check-traces is a net-count pre-commit ratchet at --max 2219, and trace-audit, trace_intel, spec-authority and both factory conformance checks are bound to no failure point. Wiring them is open work, tracked by R16-7. The suite runs through scripts/run_tests.py (kernel required, no xdist, no mocks); Mohamed gates every merge.

2.3 The ADR procedure (the decision skill, deployed + word-triggered)

  1. Next id, correct register — factory 4-digit (docs/adr/), project ≤3-digit (this wiki): ls docs/adr/ | grep -oE '^[0-9]{4}' | sort | tail -1
  2. docs file (# ADR-NNNN: Title · Status · Date · Context · Decision · Alternatives rejected · Consequences · Provenance — directives quoted verbatim)
  3. README register row
  4. Wiki entry, title byte-identical, append-only (never edit an Accepted body)
  5. Graph: uv run python scripts/sync_architecture_to_graph.py --adrs .../knowledge-wiki/projects/orchestrata-ultimate/decisions.md
  6. Gate to green: uv run python scripts/check_adr_graph_sync.py → the id reads OK in sync
  7. Commit BOTH repos (Mohamed sole author; no AI attribution; never push)

Ruling = status flip (Proposed → Accepted/Rejected/Superseded) in all three homes; supersede, never edit, an Accepted decision. Trigger: any prompt mentioning decision/decide/ADR/ratify/ruling injects the skill (.claude/hooks/ decision-adr-trigger.sh, shipped in the orchestrata plugin).

2.4 Gate inventory — everything that can say NO in this lifecycle

Gate Command Blocks
Briefs-before-dispatch git log plans/briefs/ (practice) undocumented reviewer context
Evidence-on-landing commit per round volatile-only review data
Author sweep grep retired terms → 0 half-propagated folds
Fold-verifier auditor, 8 checks false §12 claims, inert mechanisms, rule-5/6/7/8 breaches
RUL-007 attribution on every git commit AI attribution
ADR drift check_adr_graph_sync.py any ADR not identical in docs/wiki/graph
Plugin currency claude/scripts/gen_plugin.py --check skills/hooks missing from the delivery path
RUL-022 design-before-build PreToolUse hook implementation without contract or ADR-0048 waiver
Session honesty gates RUL-017 no-guessing · RUL-024 no-preexisting · deception/stop audits hedged or unfinished reports
F13's eight (R16-7: 2 accurate · 1 partial · 5 unbound) check-traces · trace-audit · trace_intel · RTM · feature-loss · spec-authority · req-format · factory conformance B2/B3 ASPIRATIONAL — see R16-7; only req-format and feature-loss block today
Suite scripts/run_tests.py red tests; kernel-skipped runs are non-authoritative
Mohamed ratification session · merge gate everything above him

The session honesty gates are cross-cutting — they run on every session turn — and are not drawn in §2.1; plugin currency is drawn in Phase E.

3. Provenance

Round evidence: plans/reviews/ruleset/ (39 files, 27,339 lines). Design versions: 21 commits on architecture/domain-model (v3 → v16.1 — one commit per version). Briefs: plans/briefs/. Status: plans/ruleset-review-status.md. ADRs: docs/adr/0039–0050

Amended 2026-08-29 from that fact-check (16 findings: 4 HIGH · 6 MED · 6 LOW; 49 claims verified correct and left untouched).