RS4A-PATCH1 Index — Contract Identity, Inert State, Suite Reconciliation — 2026-06-21
RS4A-PATCH1 Index — Contract Identity, Inert State, Persistence Boundary, and Suite Reconciliation — 2026-06-21
Macro: RS4A-PATCH1 — correction addendum opened after Codex NEED_RS4A_PATCH (HOLD on RS4A).
Class: read-only / KB-design · 0 mutations (read-only query_pg directus + AgentData KB) · design-only (no implementation, no DDL/DML, no schema/column/constraint, no Owner/APR, no gate flip, no registrar/validator patch, no registration).
Gate: REGISTRATION_HOLD · REGISTRATION_CAN_PROCEED = NO
Verdict: RS4A_PATCH1_READY_FOR_CODEX_REVIEW
Does NOT overwrite RS4A. PATCH1 is an addendum; the RS4A files remain rev1.
1. Why this macro exists
Codex reviewed RS4A and returned NEED_RS4A_PATCH (HOLD): the package was complete and its replace-not-wrap decision correct, but the controlling contract was not precise enough — stable effect identity, exact uniqueness axes, canonical inert state, persistence-carrier boundaries, phase/audit semantics, and acceptance-suite arithmetic/tests had to be corrected first. RS4A-PATCH1 makes exactly those 13 corrections (C1–C13) and nothing more.
2. Package files
| File | Closes | Subject |
|---|---|---|
rs4a-patch1-index-… (this) |
— | inventory, verdict, sequencing |
01-codex-defect-closure-map-… |
C1–C13 (+ C13 detail) | the closure spine: defect → correction → evidence → status |
02-stable-effect-identity-and-uniqueness-axes-… |
C1, C3 | canonical effect_identity; axes U1/U2/U3/U4 |
03-canonical-inert-state-resolution-… |
C2 | inert status = draft (governed, live-proven) |
04-persistence-carrier-boundary-correction-… |
C4 | logical envelope ≠ dot_tools columns; carriers REQUIRED_NOT_PRESENT |
05-nonce-classification-and-phase-semantics-correction-… |
C5, C6, C7, C8 | nonce = authority credential; Phase 2/3/4/5 fixes |
06-interface-f-and-audit-overclaim-narrowing-… |
C9, C10 | "no proven carrier" / "immutability not proven" |
07-acceptance-suite-reconciliation-97-cases-… |
C11, C12 | T-P5-1/T-P6-3 repair; 50+47=97 (+8 ⇒ 105) |
08-rs4a-patch1-decision-packet-… |
— | verdict, axes, counts, next step |
codex-review-packet-rs4a-patch1-… |
— | review request (PATCH1 only) |
…/reports/macro-rs4a-patch1-… (rollup) |
— | executive rollup |
11 files total (this index + 9 under rs4a-patch1/ + 1 rollup under reports/).
3. Headline results
- C2 RESOLVED →
draft(Directus governed choice;draft≠'active'⇒ activation trigger never fires). Option 1, not a HOLD. - C1 → one canonical
effect_identity; run_id/attempt/nonce/timestamp/approval-instance excluded; authority canonicalized to scope+policy;AUTHORITY_BINDING_IDENTITY_UNSTABLEfail-closed. - C3 → U1(effect)+U2(nonce) mandatory & separate; U3(code-head)+U4(artifact) policy; all
REQUIRED_NOT_PRESENT⇒ fail-closed. - C4 → logical envelope fields separated from the 28 live
dot_toolscolumns; carriersREQUIRED_NOT_PRESENT. - C5 → nonce =
AUTHORITY_CREDENTIAL. - C6/C7/C8 → Phase 2 reserves; Phase 3 sole atomic consume+write; Phase 4 independent verifier ref; Phase 5 audit after rollback (separate txn), failure-audit only.
- C9/C10 → overclaims narrowed to "no proven carrier" / "immutability not proven" (conclusions unchanged: fail-closed).
- C11 → T-P5-1 + T-P6-3 repaired.
- C12 → 97 reconciled (was 92); +8 PATCH1 ⇒ 105 augmented.
- C13 → D13 relabeled SRC+SCHEMA blocker.
4. Live facts used (Claude read-only query_pg, db directus, 2026-06-21)
directus_fields status choices {draft,active,deprecated,retired} · dot_tools only PRIMARY KEY (id) + 3 CHECK + 1 FK (no UNIQUE, no status CHECK) · status data active 291 / published 16 / null 2 · dot_tools 28 cols (no hash/owner/approval carrier) · governance_object_ownership 0 · apr_action_types 14 (no register_dot) · iu_route_attempt UNIQUE(idempotency_key,attempt_no) · context_pack_manifest no checksum UNIQUE / no immutability trigger · event_outbox only BEFORE INSERT validate trigger.
5. Blockers carried (unchanged class; not resolved by PATCH1)
- G2 owner-of-record = 0 (deciding authority) — NEEDS_OWNER_DECISION.
- G3 no
register_dotAPR action — NEEDS_OWNER_DECISION. - G4 no per-artifact hash carrier (Interface F) — NEEDS_FUTURE_SURFACE.
- G5 no replay/consume surface (U1/U2) — NEEDS_FUTURE_SURFACE.
- G6 no append-only audit sink — NEEDS_FUTURE_SURFACE.
- G7 activation side-effect (fenced by inert
draft);G7-consumerbody unread. - NEW
STATUS_DOMAIN_NOT_DB_ENFORCED— add a governed status CHECK (CONTRACT_BACKSTOP).
None blocks PATCH1 readiness for Codex review (same posture as RS4A's own open blockers).
6. Next step
Codex reviews RS4A-PATCH1 only. On ACCEPT_RS4A_PATCH1 → single next step = G2 Owner-of-record decision; RS-VALIDATOR-HARDENING, per-block hardening (replay surface, hash carrier, audit sink, status CHECK), and registrar-replacement implementation are sequenced after acceptance + Owner decision, not bundled.
Builds on / corrects [[project_laws_new_macro_rs4a_registrar_hardening_design_source_aware_2026_06_21]]. Default HOLD; engineering PASS ≠ authority PASS; hash ≠ signature; caller ≠ authority; KB admission ≠ runtime registration.