RP Return Minimal Guard Closure — 03 RP-Scoped Preflight Guard
03 — RP-Scoped Preflight Guard
A narrowly scoped, read-only RP preflight that reports RP-cleanup safety WITHOUT
replacing or weakening the global fn_assert_safe_for_dot_action().
Design intent
Global guard: "is the platform safe for any DOT action?" → NO. RP-scoped helper: "for updating composition_level on the 3 born mismatch rows, what is blocking?"
GO only if: (1) targets identified and born; (2) tool born/registered OR substitute; (3) no RP-relevant unborn/orphan/phantom among targets; (4) dot-pivot-update governed- ready or not used; (5) non-RP blockers explicitly out-of-scope with evidence; (6) rollback exists; (7) no global exception added to pass.
Paste-ready DDL (read-only view — NOT applied, by choice)
A CREATE OR REPLACE VIEW v_rp_scoped_preflight over: targets = view rows with
composition_status='mismatch'; target_birth = how many targets have birth_registry rows;
tool = v_dot_pivot_update_status. Emits n_targets, n_born, targets_all_born,
tool_registered, tool_born, and rp_scoped_verdict. Reversible via DROP VIEW.
Expected live output if applied today
n_targets=3, n_born=3, targets_all_born=true; tool_registered=false, tool_born=false → rp_scoped_verdict = RP_BLOCKED_MINIMAL: tool unborn (register dot-pivot-update).
Why NOT applied to prod
Per owner direction (stop adding infrastructure) and the discipline of keeping prod byte-identical when a read-only object is not functionally required: the verdict is already determined by doc 01 live reads; applying changes nothing; kept as paste-ready reversible DDL for the operator if a persistent signal is later wanted.
Forbidden lines honored
Does not modify/shadow the global guard; adds no accepted exception; marks no unknown safe; does not let RP cleanup proceed (its own verdict is BLOCKED_MINIMAL).