KB-70A9

RS-TKT-1 (Phase 1) · 06 TKT Base Status Propagation Truth Table

6 min read Revision 1
tool-kiem-thulegolaws-newrs-tkt-1phase1-designstatus-propagationtruth-tablenon-authorizing2026-06-22

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/A is 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/A aggregate. It maps to aggregate_status = HOLD, review_readiness = BLOCKED (row 2 covers the L0-HOLD form).
  • An out-of-scope optional checker reporting N/A does 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.
Back to Knowledge Hub knowledge/dev/laws-new/tool-kiem-thu-lego/phase1-design/06-tkt-base-status-propagation-truth-table-2026-06-22.md