KB-5BF5
RS-TKT-1 (Phase 1) · 17 Negative Fixture Matrix and Expected Outcomes
5 min read Revision 1
tool-kiem-thulegolaws-newrs-tkt-1phase1-designnegative-fixture-matrixbad-inputnon-authorizing2026-06-22
RS-TKT-1 (Phase 1) · 17 — Negative Fixture Matrix and Expected Outcomes
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
Authority: NON_AUTHORITY · may_gate=false · decision_effect=NONE
The authoritative negative-fixture matrix for review. Every fixture states its input shape, expected status, expected failure/hold code, and why Codex would accept/reject the outcome. These are design specifications; no fixture is executed in Phase 1.
1. Fail-closed forbidden-output fixtures (BAD-FC-*, from PATCH2 01)
| Fixture | Input shape | Expected status | Expected code | Why Codex accepts/rejects |
|---|---|---|---|---|
| BAD-FC-001 | bare PASS to stdout + exit 3 |
FAIL | FAIL_UNSTRUCTURED_FORBIDDEN_TOKEN |
accepts: bare grant token forbidden even with nonzero exit (P1 closure) |
| BAD-FC-002 | cert/seal/authority-digest artifact + exit 3 | FAIL | FAIL_FORBIDDEN_AUTHORITY_ARTIFACT |
accepts: artifact created ⇒ fail regardless of exit |
| BAD-FC-003 | ORACLE_CLAIMS_SEAL_REJECTED, event_type=REJECTION, authority_effect=NONE, exit 3, no artifact |
SAFE_REJECT | SAFE_REJECT |
accepts: rejection ≠ grant; safe-rejection context valid |
| BAD-FC-004 | invalid input exits 0, no token/artifact | FAIL | FAIL_INVALID_EXIT_ZERO |
accepts: nonzero-exit conjunct violated |
| BAD-FC-005 | exits nonzero, no grant token/artifact, structured REJECTION/NONE |
SAFE_REJECT | SAFE_REJECT |
accepts: all six conjuncts hold |
| BAD-FC-006 | bare SEMANTIC_TEXT_AS_CODE_PASS + exit 3 |
FAIL | FAIL_UNSTRUCTURED_FORBIDDEN_TOKEN |
accepts: L5 overclaim token forbidden |
| BAD-FC-007 | result.md with REGISTRATION_CAN_PROCEED = YES + exit 3 |
FAIL | FAIL_UNSTRUCTURED_FORBIDDEN_TOKEN |
accepts: registration-open token forbidden |
| BAD-FC-008 | missing scan surface (stdout/stderr/result absent) | HOLD | HOLD_OUTPUT_SURFACE_UNAVAILABLE |
accepts: missing visibility ⇒ HOLD, never PASS |
2. Boundary fixtures (L1 / L3)
| Fixture | Input shape | Expected status | Expected code | Why Codex accepts/rejects |
|---|---|---|---|---|
| BAD-L1-001 | reconstruction requires subject-under-test runtime | HOLD | HOLD_RUNTIME_SURFACE_REQUIRED |
accepts: SUT runtime ⇒ Phase 4, never PASS in Base (P4) |
| BAD-L3-001 | an L3 brick reads another L3 brick's internals | FAIL / design REJECT | L3 boundary FAIL · design-time REJECT_MEGA_SYSTEM_DRIFT |
accepts: one-concern split is load-bearing (P2) |
3. NVSZ fixtures
| Fixture | Input shape | Expected status | Expected code | Why Codex accepts/rejects |
|---|---|---|---|---|
| BAD-NVSZ-001 | a raw log placed in a vector-KB path | FAIL | ESCROW_E5 (raw-log-in-vector-KB) |
accepts: R0.1 raw logs never in vector KB |
| BAD-NVSZ-002 | an agent-designated NON_VECTOR_ROOT |
FAIL | ESCROW_E9 / ROOT_E4 (invented root) |
accepts: root is owner/operator-only (R0.2, MCB-5) |
4. Provenance and propagation fixtures
| Fixture | Input shape | Expected status | Expected code | Why Codex accepts/rejects |
|---|---|---|---|---|
| BAD-RS-001 | RS5B BI0x draft promoted/applied as a generic rule | FAIL / config error | no auto-promotion (08 §5); RS5B stays SELF_REPORTED_DRAFT |
accepts: MCB-1; no automatic promotion |
| BAD-PROP-001 | an L0 HOLD treated as PASS | FAIL (design) | aggregate must be HOLD, review_readiness=BLOCKED (06 row 2) |
accepts: HOLD≠PASS |
| BAD-PROP-002 | an out-of-scope N/A used to upgrade the aggregate |
FAIL (design) | aggregate unchanged; N/A never upgrades (06 §5, row 10) |
accepts: N/A no-upgrade; aggregate has no N/A value |
5. Coverage check (macro §6.2 required fixtures)
Required: BAD-FC-001..008 (✓ §1), BAD-L1-001 (✓ §2), BAD-L3-001 (✓ §2),
BAD-NVSZ-001/002 (✓ §3), BAD-RS-001 (✓ §4), BAD-PROP-001/002 (✓ §4).
All required fixtures present, each with input shape + expected status + expected code + accept/reject rationale.
⇒ negative-fixture matrix COMPLETE (not RS_TKT_1_HOLD_NEGATIVE_FIXTURE_MATRIX_INCOMPLETE).
6. The fail-open test (the whole point)
For EVERY fixture above, the question is the same: can this invalid input still produce a PASS / digest / seal / cert-like output,
or an aggregate PASS, or any authority/registration effect? The expected outcome for every fixture is NO — it fails closed
(FAIL or HOLD), and authority_effect/registration_effect stay NONE. If any fixture could yield PASS-like output, the design is fail-open ⇒ REJECT.
None can. (Adversarially re-checked in 18.)