Stage 2.6A-FIX 05 — Computed Blocked Reasons (SUPERTRACK E)
05 Computed Blocked Reasons (SUPERTRACK E)
The single literal blocked_reason is replaced by a per-row computation over real state.
Object: fn_qt001_machine_blocked_reason(collection, checksum)
Emits the active blocker codes for that collection: MISSING_PLAN_BOUND_APPLY_SIGNOFF; PARITY_SIGNAL_UNRESOLVED(divergence_signal=N;SIGNAL_ONLY_not_proof) [only when divergent]; COLLISION_RISK(n) [only when collision>0]; SCALE_NOT_SAFE; WRITER_ENFORCEMENT_NOT_WIRED; OWNER_EXECUTE_PERMIT_ABSENT; PERMIT_RUN_KEYSET_LAYER_ABSENT_STAGE2_6B; KEYSET_RESUME_ABSENT; OWNER_RATIFICATION_REQUIRED.
The plan builder now writes this per row (no literal). Divergent rows include the PARITY clause with the exact divergence value, so each differs.
Views
- v_qt001_plan_blocked_reason_detail: per CURRENT plan row — tier_code, blocked_reason, blocker_count.
- v_qt001_blocked_reason_not_literal_guard: current_rows=13, distinct_reasons=7, empty_reasons=0, pass=true.
Live evidence
13 rows, 7 distinct reasons, 0 empty. Consistent collections omit PARITY_SIGNAL_UNRESOLVED; the 6 divergent collections each carry a distinct divergence value. Each plan row explains its own real blockers.