RS5A-PATCH4-01 — Codex PATCH3 Rejection Closure Map — 2026-06-21
RS5A-PATCH4-01 — Codex PATCH3 Rejection Closure Map — 2026-06-21
Macro: RS5A-PATCH4 · Deliverable: 01 of 5 (+ index + rollup + codex-packet) · scoped total-quorum-precedence / G02-domain correction.
Opened after: Codex REJECT_RS5A_PATCH3_QUORUM_PRECEDENCE_INSUFFICIENT (HOLD · stop state QUORUM_PRECEDENCE_INSUFFICIENT).
Does NOT overwrite RS5A, RS5A-PATCH1, RS5A-PATCH2, or RS5A-PATCH3. The prior files remain at revision 1 for audit. PATCH4 authors corrected wording here (files 02–04) that supersedes only the two cited residual phrases: PATCH3-03's "within a band, the listed predicates are mutually exclusive" and PATCH3-04's "the three branches partition every same-nonce input."
Gate carried: REGISTRATION_HOLD · REGISTRATION_CAN_PROCEED = NO · 0 mutations.
1. Codex source
knowledge/dev/laws-new/reports/codex/codex-review-rs5a-patch3-deterministic-lifecycle-and-oracle-predicates-2026-06-21.md (read full this macro, revision 1, truncated=false, content_length=13304). STATUS HOLD; VERDICT REJECT_RS5A_PATCH3_QUORUM_PRECEDENCE_INSUFFICIENT; stop state QUORUM_PRECEDENCE_INSUFFICIENT; REGISTRATION_CAN_PROCEED = NO. Single next step (§10, §13): RS5A-PATCH4, narrowly limited to total code-level quorum precedence / exclusive predicates and the G02 partition caveat.
Codex accepted and not-to-be-reopened (§7): complete additive 8-file PATCH3 package; R1 lifecycle correction; replay/audit hard pre-admission + persist after; activation as the only post-registration business transition; delegation half-open interval and boundary outcomes; named spoof/unresolved and alias/canonical overlap cases; G02a/b/c mutually exclusive for their stated predicates; G08 distinct client-observation fixture; 84 parent IDs / 86 executable scenarios as definition; no RS4A/PATCH2 owner/bootstrap/handler/identity/U1-U2-U3/hard-prerequisite semantics reopened; no runtime artifact created.
Codex required PATCH4 corrections (§5 corrections 1–4; §6 caveat): (1) mutually-exclusive predicates for every multi-code band — especially P1 and P3 — or a total order between every code; (2) compound adversarial fixtures, not only pairwise P1-vs-P3; (3) state the exact evaluation unit (single vote, claimed slot, resolved slot, or whole APR) so a multi-fault input has one canonical outcome; (4) propagate the corrected total order to oracle and decision packet; (5) fix the G02 partition overclaim — narrow the domain to same-nonce inputs with a prior durable decision, or define the missing in-flight / no-durable-decision state.
2. Residual closure table
| Codex residual | PATCH3 source phrase (superseded) | PATCH4 correction | status | caveat |
|---|---|---|---|---|
| R1 — P1 multi-code ambiguity (Codex §5 blocking counterexample) | PATCH3-03 §2: "Within a band, the listed predicates are mutually exclusive (no input matches two predicates in the same band)" — asserted, not proven for P1. One input (free-text approver='president-bot' and approver_type='ai_council' without canonical_voting_body membership) matches both FREE_TEXT_PRESIDENT_REJECTED and SELF_DECLARED_COUNCIL_IDENTITY_REJECTED. |
PATCH4-02 replaces the unproven exclusivity claim with a total code-level order Q00→Q50 plus the explicit rule predicates MAY overlap; the total Q-order selects exactly one canonical code (lowest matching Q-code at the evaluation unit). P1 split: Q10 FREE_TEXT_PRESIDENT_REJECTED < Q11 SELF_DECLARED_COUNCIL_IDENTITY_REJECTED. See [[rs5a-patch4-02]], fixture CQ01 in [[rs5a-patch4-03]]. |
CLOSED | design-only; surface CANONICAL_PRINCIPAL_SURFACE_REQUIRED_NOT_PRESENT; Q-order is total even when P0/Q00 does not fire (future surface-present state), so it is not merely masked by P0 |
| R2 — P3 multi-code ambiguity (Codex §5 "P3 has the same specification weakness") | PATCH3-03 §2: P3 lists PRESIDENT_ROLE_UNRESOLVED and COUNCIL_PRINCIPAL_UNRESOLVED in one band with no input discriminator or internal precedence. A single vote claiming both an unresolved president slot and an unresolved council slot matches both. |
PATCH4-02 total order: Q30 PRESIDENT_ROLE_UNRESOLVED < Q31 COUNCIL_PRINCIPAL_UNRESOLVED. Same vote claim → lowest Q = Q30. See [[rs5a-patch4-02]], fixture CQ03 in [[rs5a-patch4-03]]. |
CLOSED | design-only; fail-closed |
| R3 — evaluation unit unspecified (Codex §5 correction 3) | PATCH3-03 never stated whether a code is selected per vote, per claimed slot, per resolved slot, or per whole APR; a multi-fault APR had no single canonical outcome. | PATCH4-02 §2 defines the primary evaluation unit = a single vote claim within one APR (carries Q10–Q31, comparing claimed slots against resolved slots), and the APR-level unit = the whole APR over its VALID vote claims (carries Q40/Q41/Q50). Q00 is a structural precondition over the whole context. Per-vote invalidity is evaluated before APR-level count. A single canonical APR outcome is the lowest Q across emitted codes. See [[rs5a-patch4-02]]. | CLOSED | primary unit = vote claim; APR-level rollup = lowest-Q; both deterministic |
| R4 — compound fixtures missing (Codex §5 correction 2) | PATCH3 supplied only pairwise P1-vs-P3 named outcomes (A11/A12/F07/F08); no compound multi-fault adversarial fixtures. | PATCH4-03 adds eight compound adversarial fixtures CQ01–CQ08, each stating input shape, matching predicates, total-order winner, expected canonical code, and evaluation unit. See [[rs5a-patch4-03]]. | CLOSED | fixtures are design-only; suite remains DEFINED_NOT_EXECUTED |
| R5 — G02 partition overclaim (Codex §6 caveat, §9.4) | PATCH3-04 §2: "The three branches partition the 'same nonce' space — every same-nonce input matches exactly one." same nonce + same effect + same envelope + NO prior durable decision matches none of G02a/b/c. |
PATCH4-04 narrows the partition domain to same-nonce inputs for which a prior durable decision exists for that nonce; all of G02a/b/c require a prior durable decision, so the partition is exhaustive within that domain. The no-prior-durable-decision (in-flight / concurrent) case is outside this RS5A oracle's domain, marked NO_PRIOR_DURABLE_DECISION_STATE_UNSPECIFIED (design-only label, not a reject code, not an executable scenario). Count unchanged. See [[rs5a-patch4-04]]. |
CLOSED | does NOT reopen accepted G02a/b/c mutual exclusion (Codex §7.7); count stays 84 parent IDs / 86 executable scenarios |
3. Accepted-and-not-reopened (Codex §7)
- Complete additive 8-file PATCH3 package.
- R1 lifecycle correction (availability ≠ persistence ≠ business-transition).
- Replay/audit hard pre-admission and persist/operate afterward.
- Activation as the only post-registration business transition with separate authority.
- Delegation half-open interval
[effective_from, effective_to)and boundary outcomes;DELEGATION_NOT_YET_EFFECTIVElower-bound code. - Named spoof/unresolved and alias/canonical overlap outcomes (A11/A12/F07/F08).
- G02a/b/c mutually exclusive for their stated predicates — PATCH4 narrows only the partition-domain claim, not the predicates.
- G08 distinct client-observation fixture, same server-side outcome.
- 84 parent IDs / 86 executable scenarios as definition, not execution evidence.
- No RS4A/PATCH2 owner, bootstrap, handler, identity, U1/U2/U3, or hard-prerequisite semantics reopened.
- No runtime artifact created.
None reopened. PATCH4 touches only the two cited wordings (PATCH3-03 §2 band-exclusivity claim; PATCH3-04 §2 partition claim) — additively, without editing any PATCH3 file. The accepted inter-band order P0→P5, the P2 internal order, and the P4 internal order are preserved; PATCH4's only new orderings are the two within-band orderings Codex flagged (P1: Q10<Q11; P3: Q30<Q31).
4. Net
Both Codex blocking points (P1/P3 non-total precedence; missing evaluation unit; missing compound fixtures) and the G02 partition overclaim are CLOSED at the contract layer, fail-closed, with no mutation. No residual STILL_OPEN_BY_DESIGN blocks review. ⇒ verdict candidate RS5A_PATCH4_READY_FOR_CODEX_REVIEW (see [[rs5a-patch4-05]]).