RS-TKT-1 (Phase 1) · 08 TKT Base RS Profile Provenance Contract
RS-TKT-1 (Phase 1) · 08 — TKT Base RS Profile Provenance Contract
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 06 (RS pre-Codex profile) + PATCH1 06 (P6 split) + PATCH2 02 (P6 schema repair, Codex-CLOSED). The RS profile is a support checker layered on a Base result, not an approver. A clean profile result is engineering PASS only.
1. Two orthogonal axes (PATCH2 §3 — binding)
profile_id = provenance track — how the rule was sourced / validated (TWO values only)
scope_class = applicability class — which packets the rule legitimately governs (THREE values)
profile_id ∈ { CODEX_CAUGHT_RS5A, SELF_REPORTED_RS5B_DRAFT }
scope_class ∈ { STRUCTURAL_COMMON, RS5A_SPECIFIC, RS5B_SPECIFIC }
profile_id = structural is deleted and never valid (the PATCH1 enum/table contradiction). STRUCTURAL_COMMON, RS5A_SPECIFIC, RS5B_SPECIFIC are scope_class values, never profile_id values.
2. Per-rule provenance schema (PATCH2 §2)
{
"rule_id": "...",
"profile_id": "CODEX_CAUGHT_RS5A | SELF_REPORTED_RS5B_DRAFT",
"scope_class": "STRUCTURAL_COMMON | RS5A_SPECIFIC | RS5B_SPECIFIC",
"provenance": "codex_caught | self_reported",
"source_review": "<path to the Codex/User acceptance, or the RS5B self-check doc>",
"validation_status": "EXTERNALLY_CODEX_REVIEWED | SELF_REPORTED_DRAFT | PROMOTED_AFTER_REVIEW",
"applies_to": ["..."],
"does_not_apply_to": ["..."]
}
3. Group assignment (PATCH2 §4 — corrected; no profile_id=structural)
| Group / rule | profile_id | scope_class | validation_status | applies_to | does_not_apply_to |
|---|---|---|---|---|---|
| A Package (PKG-001..004) | CODEX_CAUGHT_RS5A |
STRUCTURAL_COMMON |
EXTERNALLY_CODEX_REVIEWED |
any RS packet | — |
| B Gate (GATE-001..004) | CODEX_CAUGHT_RS5A |
STRUCTURAL_COMMON |
EXTERNALLY_CODEX_REVIEWED |
any RS packet | — |
| C Lifecycle (LIFE-001..004) | CODEX_CAUGHT_RS5A |
RS5A_SPECIFIC |
EXTERNALLY_CODEX_REVIEWED |
RS5A lifecycle packets | non-RS5A unless promoted |
| D Quorum (QUORUM-001..006) | CODEX_CAUGHT_RS5A |
RS5A_SPECIFIC |
EXTERNALLY_CODEX_REVIEWED |
RS5A quorum | generic RS-series |
| E Replay (REPLAY-001..005) | CODEX_CAUGHT_RS5A |
RS5A_SPECIFIC |
EXTERNALLY_CODEX_REVIEWED |
RS5A replay | generic RS-series |
| F Count (COUNT-001..004) | CODEX_CAUGHT_RS5A |
RS5A_SPECIFIC |
EXTERNALLY_CODEX_REVIEWED |
RS5A suites | generic RS-series |
| G Codex-packet (CODEX-001..004) | CODEX_CAUGHT_RS5A |
STRUCTURAL_COMMON |
EXTERNALLY_CODEX_REVIEWED |
any RS packet | — |
| RS5B BI01–BI10 | SELF_REPORTED_RS5B_DRAFT |
RS5B_SPECIFIC |
SELF_REPORTED_DRAFT |
RS5B | all non-RS5B; not a gate |
Groups A/B/G keep broad applicability via scope_class = STRUCTURAL_COMMON; their provenance track is the RS5A Codex chain that hardened them.
4. Applicability constraints (PATCH2 §5)
84 parent IDs / 86 executable scenarios = scope_class RS5A_SPECIFIC (unless explicitly promoted later)
Q-code order Q00 < … < Q50 = scope_class RS5A_SPECIFIC (unless explicitly promoted later)
G02a/G02b/G02c effect→envelope tree = scope_class RS5A_SPECIFIC (unless explicitly promoted later)
RS5B BI01–BI10 = profile_id SELF_REPORTED_RS5B_DRAFT until Codex reviews RS5B
Applying an RS5A-specific rule to a non-RS5A packet is a configuration error, not a finding. RS5B rows must never be described as externally validated (MCB-1 carry-forward).
5. No automatic promotion (PATCH2 §6)
A rule promotes from RS-specific→common, or self-reported→reviewed, ONLY by a later explicit review:
validation_status = PROMOTED_AFTER_REVIEW
source_review = <path to the Codex/User acceptance that authorized the promotion>
Until then: RS5A_SPECIFIC stays RS5A_SPECIFIC; SELF_REPORTED_RS5B_DRAFT stays SELF_REPORTED_DRAFT.
There is no automatic promotion. A design that auto-promotes RS5B BI01–BI10 to generic/common, or labels them externally validated, is BAD-RS-001 and must be REJECTED (17).
6. RS profile group purposes (design carried from 06, unchanged in substance)
A Package : file-set complete, non-empty, non-truncated, additive (no overwrite of a prior package).
B Gate : REGISTRATION_HOLD present + CAN_PROCEED = NO + 0 mutations + no Owner/scope/APR/register_dot opened.
C Lifecycle : replay/audit pre-admission + persist after admission + activation only post-registration (no implicit inherit).
D Quorum : total Q-order Q00<…<Q50; lowest matching Q-code wins; eval-unit defined; half-open delegation interval.
E Replay : G02a (same effect+same envelope+prior durable decision) / G02b / G02c disjoint; domain-restricted; in-flight = design-only label, not a code.
F Count : 84 − 1 + 3 = 86; one canonical code per scenario; fixture count consistent; filename↔title numeric consistency.
G Codex-pkt : verdict/gate/count/single-next-step identical across index↔decision↔codex-packet↔rollup; links resolve; no PASS upgraded.
7. Status effect
CODEX_CAUGHT_RS5A rules : engineering-grounded only — still NON_AUTHORITY, may_gate=false, never a registration gate.
SELF_REPORTED_RS5B_DRAFT : DRAFT / NOT_EXTERNALLY_CODEX_REVIEWED — may guide surveying and Phase-1 design,
must NOT be called validated, must NOT be used as a gate.
Run order: A → B → {C, D, E, F} → G, layered on a Base (L0–L3) result. The braced groups are independent. Aggregate = worst per-group status; any BLOCKER FAIL ⇒ "not Codex-ready" (advisory). The profile never sets CAN_PROCEED, clears REGISTRATION_HOLD, or substitutes for Codex/Owner.