RS4A-PATCH1-08 — Decision Packet — 2026-06-21
RS4A-PATCH1-08 — Decision Packet — 2026-06-21
Macro: RS4A-PATCH1 — CONTRACT IDENTITY, INERT STATE, PERSISTENCE BOUNDARY, AND SUITE RECONCILIATION
Deliverable: 08 of 10 · design-only
Gate: REGISTRATION_HOLD · REGISTRATION_CAN_PROCEED = NO
1. Verdict
RS4A_PATCH1_READY_FOR_CODEX_REVIEW
Not forced. The verdict is earned: every Codex defect C1–C13 is closed or fail-closed with a precise disposition, and the one defect that could have forced a HOLD — C2 canonical inert status — is resolved to a concrete, governed, live-proven value (draft), so RS4A_PATCH1_HOLD_INERT_STATE_UNPROVEN does not apply. No implementation drift, no scope drift, no fail-open.
Controlling finding retained from RS4A/RS3C: SOURCE_CONFIRMS_UNSAFE_REGISTRAR_BEHAVIOR · REPLACE_FOR_GOVERNED_REGISTRATION + REJECT_CURRENT_REAL_RUN_PATH.
2. Exact corrections C1–C13 (one line each)
- C1 — one canonical
effect_identity = logical_request_key; excludes run_id/attempt/nonce/timestamp/replaceable-approval-instance; authority canonicalized to scope+policy;AUTHORITY_BINDING_IDENTITY_UNSTABLEfail-closed. → CLOSED - C2 — canonical inert status =
draft(governed Directus choice;draft≠active⇒ no activation notify). → CLOSED - C3 — uniqueness axes U1(effect, mandatory) / U2(nonce, mandatory, separate) / U3(code-head, policy) / U4(artifact, policy); all
REQUIRED_NOT_PRESENT⇒ fail-closed. → CLOSED_FAIL_CLOSED - C4 — logical envelope fields separated from
dot_toolscolumns; carriersREQUIRED_NOT_PRESENT; no column implied. → CLOSED_FAIL_CLOSED - C5 —
authorization_noncereclassifiedAUTHORITY_CREDENTIAL, notrequest_proposed. → CLOSED - C6 — Phase 2 = validation/reservation (no durable consume); Phase 3 = only atomic consume + inert write + attempt. → CLOSED
- C7 — Phase 4 verifier = independent
postcondition_verifier_ref; no auto-created/per-target pair; carry RS3C-C2. → CLOSED - C8 — Phase 5 audit written after rollback in a separate txn; failure-audit only (success-audit not required);
audit_envelopenullable/scoped. → CLOSED - C9 — Interface F narrowed to "no proven carrier among reviewed candidates"; emits nothing. → CLOSED_FAIL_CLOSED
- C10 — audit "immutability not proven" (not disproved by trigger absence); event_type/lane/dedup_key = contract requirements. → CLOSED_FAIL_CLOSED
- C11 — T-P5-1 repaired (audit-after-rollback/separate-txn); T-P6-3 repaired (consumer-injected OR active-update-outside-registration). → CLOSED
- C12 — count corrected to 50 + 47 = 97 (+8 PATCH1 ⇒ 105 augmented, explained); 42/92 superseded. → CLOSED
- C13 — D13 relabeled SRC+SCHEMA environment/contract blocker; "all-24-line-cited" claim corrected (23 line-cited + D13 schema-tier). → CLOSED
3. Inert-state outcome
CANONICAL_INERT_STATE_RESOLVED = "draft" (Option 1).
- Governed (not invented):
directus_fields.dot_tools.status.options.choicesincludesdraft(LIVE). - Accepted: no PG CHECK on
status; Directusvalidation=null,required=false(LIVE). - Inert at producer:
draft ≠ 'active'⇒fn_context_pack_on_dot_registernotify condition false ⇒ nocontext_pack_event(LIVE body). - Carried backstop (not a blocker):
STATUS_DOMAIN_NOT_DB_ENFORCED— add a governed status CHECK so the vocabulary can't be bypassed;G7-consumerfor the separate activation-UPDATE path only.
4. Uniqueness axes
| Axis | Constraint | Required | Live status |
|---|---|---|---|
| U1 | UNIQUE(effect_identity) |
mandatory | absent (only PK(id)) → fail-closed |
| U2 | UNIQUE(authorization_nonce) (separate record) |
mandatory | absent → fail-closed |
| U3 | UNIQUE(code) WHERE status='active' |
policy (Owner) | absent → undecided/fail-closed |
| U4 | UNIQUE(artifact_identity/hash) |
policy (Owner) | absent (no hash col) → undecided/fail-closed |
5. Suite count
- Reconciled baseline: 97 (50 carried + 47 new T-series). Corrects RS4A-11's 92.
- PATCH1 additions: +8 (T-PX-1…8: inert-value, effect-stability across run_id/approval, U1–U4 axes, carrier-absent).
- Augmented total: 105. Designed, not executed; no PASS claimed.
6. Files created (PATCH1 package, all rev1)
knowledge/dev/laws-new/reports/rs4a-patch1/
rs4a-patch1-index-contract-identity-inert-state-suite-reconciliation-2026-06-21.md
01-codex-defect-closure-map-2026-06-21.md
02-stable-effect-identity-and-uniqueness-axes-2026-06-21.md
03-canonical-inert-state-resolution-2026-06-21.md
04-persistence-carrier-boundary-correction-2026-06-21.md
05-nonce-classification-and-phase-semantics-correction-2026-06-21.md
06-interface-f-and-audit-overclaim-narrowing-2026-06-21.md
07-acceptance-suite-reconciliation-97-cases-2026-06-21.md
08-rs4a-patch1-decision-packet-2026-06-21.md
codex-review-packet-rs4a-patch1-contract-identity-inert-state-suite-reconciliation-2026-06-21.md
knowledge/dev/laws-new/reports/
macro-rs4a-patch1-contract-identity-inert-state-suite-reconciliation-2026-06-21.md
RS4A files are not overwritten; PATCH1 is an addendum.
7. Registration gate
REGISTRATION_HOLD · REGISTRATION_CAN_PROCEED = NO. No Owner created, no APR created, no register_dot action created, no gate flipped, no registrar/validator patch, no schema/column/constraint, no DOT registered/wired/run, no RISK-BYPASS cleared, no implementation, no migration SQL, no Directus mutation payload. RS-VALIDATOR and registrar-replacement implementation remain unopened.
8. Single next recommendation
Codex reviews RS4A-PATCH1 only. On ACCEPT, the controlling RS4A contract is accepted-as-corrected and the single next step is the G2 Owner-of-record decision (author the governance_object_ownership accountable head + a governed register_dot APR action with quorum binding) — the deciding blocker. Per-block hardening design (U1/U2 replay surface, Interface F carrier, append-only audit sink, status CHECK backstop) and RS-VALIDATOR-HARDENING are sequenced after Codex acceptance and the Owner decision; they are not bundled here.
If Codex instead finds a residual defect, the next step is a scoped RS4A-PATCH2 on that item only; do not reopen the whole package.