RS-TKT-1 (Phase 1) · 06 TKT Base Status Propagation Truth Table
RS-TKT-1 (Phase 1) · 06 — TKT Base Status Propagation Truth Table
Lane: RS-TKT-1 — Phase 1 TKT Base Design Package (design-only)
Date: 2026-06-22
Gate: REGISTRATION_HOLD · REGISTRATION_CAN_PROCEED = NO · 0 runtime mutations (KB design-doc writes only)
Authority: NON_AUTHORITY · may_gate=false · decision_effect=NONE · design-only
Inherits: RS-TKT-0A-PATCH2 03 (P7, Codex-CLOSED). This Phase-1 doc reproduces the propagation rules and the 10-row aggregate truth table, and closes Codex caveat §6 (the unreachable aggregate N/A).
1. Status definitions (exact)
PASS = this exact check was assessed and passed.
FAIL = this exact check was assessed and failed.
HOLD = required context is missing, ambiguous, unsafe, or unauthorized to assess.
N/A = a prerequisite failed/held, OR the check is genuinely out of scope.
N/A is NOT PASS. HOLD is NOT PASS. HOLD is NOT N/A.
HOLD = could-not-safely-assess. N/A = prerequisite failed/held or out of scope.
2. Five status fields (count fixed at five — PATCH2)
level_status : PASS | FAIL | HOLD | N/A # per level/brick
aggregate_status : PASS | FAIL | HOLD # combiner over levels (advisory) <-- see §3 (caveat-§6 closure)
review_readiness : REVIEW_READY | NOT_READY | BLOCKED
authority_effect : NONE # ALWAYS NONE
registration_effect : NONE # ALWAYS NONE
3. Closure of Codex caveat §6 — aggregate N/A removed
PATCH2 noted that aggregate_status still listed N/A in its type while the contract said a completely unassessable required packet aggregates to HOLD. Phase 1 resolves this by removing the aggregate N/A value:
aggregate_status ∈ { PASS, FAIL, HOLD } — N/A is NOT a legitimate aggregate value.
Rationale and the case it used to cover:
N/Ais a level/brick state (a level downstream of a failed/held prerequisite, or an out-of-scope optional checker). It is never the top-level aggregate.- The "nothing was assessable at all" case (e.g. L0 itself could not be read) is a HOLD condition, not an
N/Aaggregate. It maps toaggregate_status = HOLD,review_readiness = BLOCKED(row 2 covers the L0-HOLD form). - An out-of-scope optional checker reporting
N/Adoes not change the aggregate (row 10).
So aggregate N/A was unreachable; it is deleted from the type. level_status keeps N/A (it is reachable and meaningful there).
4. Propagation rules (FAIL and HOLD — PATCH2 §5)
L0 = FAIL → L1/L2/L3 = N/A; aggregate = FAIL; review_readiness = NOT_READY.
L0 = HOLD → L1/L2/L3 = N/A; aggregate = HOLD; review_readiness = BLOCKED.
L1 = FAIL → L2/L3 = N/A; aggregate = FAIL; review_readiness = NOT_READY.
L1 = HOLD → L2/L3 = N/A; aggregate = HOLD; review_readiness = BLOCKED.
L2 = FAIL → L3 = N/A; aggregate = FAIL; review_readiness = NOT_READY.
L2 = HOLD → L3 = N/A; aggregate = HOLD; review_readiness = BLOCKED.
any L3 sub-brick = FAIL → L3 = FAIL; aggregate = FAIL; review_readiness = NOT_READY.
any L3 sub-brick = HOLD (none FAIL) → L3 = HOLD; aggregate = HOLD; review_readiness = BLOCKED.
L0/L1/L2/L3 all PASS → aggregate = PASS; review_readiness = REVIEW_READY.
5. Aggregate priority
FAIL > HOLD > PASS
N/A participates only as a propagated downstream level state. It never upgrades an aggregate and is not a legitimate aggregate value (§3). Within L3, the four sub-bricks combine by the same priority.
6. Aggregate truth table (≥10 rows; every row authority/registration = NONE)
| # | L0 | L1 | L2 | L3 | aggregate_status | review_readiness | authority_effect | registration_effect |
|---|---|---|---|---|---|---|---|---|
| 1 | FAIL | N/A | N/A | N/A | FAIL | NOT_READY | NONE | NONE |
| 2 | HOLD | N/A | N/A | N/A | HOLD | BLOCKED | NONE | NONE |
| 3 | PASS | FAIL | N/A | N/A | FAIL | NOT_READY | NONE | NONE |
| 4 | PASS | HOLD | N/A | N/A | HOLD | BLOCKED | NONE | NONE |
| 5 | PASS | PASS | FAIL | N/A | FAIL | NOT_READY | NONE | NONE |
| 6 | PASS | PASS | HOLD | N/A | HOLD | BLOCKED | NONE | NONE |
| 7 | PASS | PASS | PASS | FAIL (any sub-brick FAIL) | FAIL | NOT_READY | NONE | NONE |
| 8 | PASS | PASS | PASS | HOLD (any sub-brick HOLD, none FAIL) | HOLD | BLOCKED | NONE | NONE |
| 9 | PASS | PASS | PASS | PASS | PASS | REVIEW_READY | NONE | NONE |
| 10 | PASS | PASS | PASS | PASS (+ out-of-scope optional checker = N/A) | PASS | REVIEW_READY | NONE | NONE |
Row 10: an out-of-scope optional checker reporting N/A does not downgrade the aggregate; required levels all PASS ⇒ aggregate PASS. N/A from out-of-scope ≠ N/A from a failed/held prerequisite.
7. Required-row coverage check (macro §4.6)
L0 FAIL → row 1 · L0 HOLD → row 2 · L1 FAIL → row 3 · L1 HOLD → row 4 · L2 FAIL → row 5 · L2 HOLD → row 6 ·
L3 sub-brick FAIL → row 7 · L3 sub-brick HOLD → row 8 · all PASS → row 9 · optional out-of-scope N/A while required PASS → row 10.
All ten required rows present.
8. Aggregate ≠ authority / gating (PATCH2 §8)
aggregate_status is ADVISORY ONLY.
aggregate_status = PASS does NOT imply authority granted, gate opened, registration moved, CAN_PROCEED=YES,
HOLD cleared, or any semantic / implementation / runtime / production PASS.
authority_effect and registration_effect are ALWAYS NONE, independent of aggregate_status.
HOLD can never become PASS. N/A can never upgrade the aggregate.