KB-6747

RS5A-PATCH2-04 — Test Oracle Canonical Outcomes & Count — 2026-06-21

6 min read Revision 1
rs5a-patch2g2negative-testscanonical-oracle84-parent-86-executableno-alias-passdefined-not-executed2026-06-21

RS5A-PATCH2-04 — Test Oracle Canonical Outcomes & Count — 2026-06-21

Macro: RS5A-PATCH2 · Residual R5-oracle · Deliverable: 04 of 6. Supersedes: RS5A-PATCH1-06 §1 parenthetical alias outcomes and §3 "still 84 enumerated" count statement only. The corrected per-case oracle codes from PATCH1-06 stand; only their alias-ambiguity and count-ambiguity are fixed. Suite remains DEFINED_NOT_EXECUTED. Reason (Codex §8): an executable oracle must have exactly one canonical expected outcome; a count that says "84 enumerated" while G02 is split into three executable subcases is ambiguous.

1. Canonicalization rules

  1. Every executable scenario has exactly one canonical expected outcome. No scenario may PASS on either a primary code or an alias.
  2. Aliases are documentation_alias_only. They may appear as descriptive prose but are never accepted executable oracle outcomes. There is no active alias-normalization registry; if one is ever desired it is future / not active and must be explicitly versioned before any alias becomes acceptable.
  3. G02a / G02b / G02c are executable scenarios, each with its own ID and its own single canonical outcome — not hidden parent-only text.
  4. The count distinguishes parent IDs from executable scenarios (see §3). It is never stated as "84 enumerated" while three G02 subcases exist.

2. Canonical expected outcomes (authoritative, one per scenario)

scenario canonical expected outcome class documentation_alias_only (NOT accepted)
D07register_dot authored with risk tier weaker than high REGISTER_DOT_RISK_TIER_MISMATCH rejection REGISTER_DOT_ACTION_CONTRACT_VIOLATION
H03 — registration writes out-of-vocabulary status (live published×16) STATUS_VALUE_OUT_OF_VOCABULARY rejection (none)
H07 — success-audit row emitted on registration SUCCESS_AUDIT_FORBIDDEN_BY_PHASE4_CONTRACT rejection SUCCESS_AUDIT_NOT_PART_OF_REGISTER_DOT_CONTRACT
I03draft write fires activation notify DRAFT_WRITE_EMITTED_ACTIVATION_NOTIFY rejection ACTIVATION_SIDE_EFFECT_ON_INERT_WRITE
G02a — same effect + same nonce, already committed IDEMPOTENT_PRIOR_DECISION_RETRIEVAL idempotency behavior (no new write, no reject) (none)
G02b — same nonce + changed request/effect NONCE_REUSE_DIFFERENT_EFFECT rejection (none)
G02c — same nonce + changed authorization envelope NONCE_REUSE_AUTHORIZATION_MISMATCH rejection (none)
G08 — exact retry: same effect / same nonce / same envelope IDEMPOTENT_PRIOR_DECISION_RETRIEVAL idempotency behavior (returns prior durable decision; not a rejection) (none)

Notes:

  • IDEMPOTENCY_BEHAVIOR_CASE (used in PATCH1-06) is the class label, not the per-scenario oracle outcome. The canonical outcome for G02a and G08 is IDEMPOTENT_PRIOR_DECISION_RETRIEVAL. Two distinct scenarios may share one canonical outcome; that is not an alias.
  • No parenthetical "(alias …)" form may be used as an accepted PASS code. The alias column above is documentation_alias_only.

3. Canonical count — 84 parent IDs / 86 executable scenarios

Parent IDs (RS5A-09 enumerated rows): A01–A12 (12) + B01–B10 (10) + C01–C08 (8) + D01–D10 (10) + E01–E10 (10) + F01–F10 (10) + G01–G08 (8) + H01–H08 (8) + I01–I08 (8) = 84 parent IDs.

Executable scenarios: every parent ID is one executable scenario except G02, which splits into three executable scenarios (G02a, G02b, G02c).

component count
parent IDs unaffected by PATCH1/PATCH2 corrections (each 1 executable) 78
single-case re-canonicalizations D07, H03, H07, I03 (each 1 executable) 4
G02 → G02a, G02b, G02c (executable subcases) 3
G08 re-canonicalization (1 executable) 1
executable scenarios total 86

Arithmetic: original 84 parent IDs; G02 (one parent) becomes three executable scenarios ⇒ net 84 − 1 + 3 = 86. Equivalently 78 + 4 + 3 + 1 = 86.

Canonical statement to publish: "84 top-level parent IDs / 86 executable scenarios." The suite must never be described as "84 enumerated" while G02a/G02b/G02c are separately enumerated, nor as "86 parent IDs."

4. Dependent identity-case mapping (consumes [[rs5a-patch2-03]])

The canonical principal contract sharpens four existing RS5A-09 identity cases without adding scenarios (they keep their parent IDs and remain single-outcome):

case prior coarse outcome canonical outcome (from [[rs5a-patch2-03]] §4)
A11 — approver='president-bot' substring treated as president QUORUM_APPROVER_IDENTITY_UNVERIFIED FREE_TEXT_PRESIDENT_REJECTED
A12 — self-declared approver_type='ai_council' QUORUM_APPROVER_IDENTITY_UNVERIFIED SELF_DECLARED_COUNCIL_IDENTITY_REJECTED
F07 — president via approver='vice-president' substring QUORUM_APPROVER_IDENTITY_UNVERIFIED FREE_TEXT_PRESIDENT_REJECTED
F08 — two aliases of one principal double-counted QUORUM_NOT_SATISFIED (literal-string guard) APPROVER_ALIAS_DOUBLE_COUNT

These are re-canonicalizations of existing parent IDs, not new scenarios; the count stays 84 parent / 86 executable.

5. Status

R5-oracle residual CLOSED — exactly one canonical expected outcome per executable scenario; aliases are documentation_alias_only and never accepted; count declared 84 parent IDs / 86 executable scenarios. Suite remains DEFINED_NOT_EXECUTED; no PASS result is accepted; no test was run; no runtime driven; no mutation. …TEST_ORACLE_INSUFFICIENT HOLD condition does not apply.

Back to Knowledge Hub knowledge/dev/laws-new/reports/rs5a-patch2/04-test-oracle-canonical-outcomes-and-count-2026-06-21.md