T2 RP Systemic Reality Audit — 05 Full-Population Drill Risk
05 — Full-Population Drill Risk
Score: Drill full-population readiness = 45/100. The proof is curated, not full-population, and at least one structural drill path routes a high-count node to a substrate that does not contain its objects.
The prior proof matrix (12 + v2's 26) is a curated selection of start nodes. This section audits whether every node in the full 87-node population satisfies the drill invariants.
Invariant checks against full population (87 nodes, live)
I1 — Every node with count>1 has grouping? — FAIL (v1) / PASS (v2)
v1 contract: AX-PXT 10 nodes have count_value>1 and grouping_status='NEEDS_GROUPING' with no children (has_children=false hardcoded). They do not group. v2 grouping surface resolves these into 250 children — but v2 is the non-deployed twin. In the deployed-intended v1 path, 10 high-count nodes do not drill.
I2 — Every leaf has substrate? — PARTIAL
AX-PROCESS: 2 nodes have substrate_available=false (live, both v1 and v2). They are classified LEAF_EMPTY_BY_DESIGN (honest), so not a silent failure, but they are genuine leaves with no rows.
I3 — substrate_available=true ⇒ actual rows? — FAIL for AX-PXT (the core risk)
This is the most serious drill-integrity finding. AX-PXT nodes set substrate_available=true and final_substrate_ref='v_process_trigger_actionability_ledger', but:
TRIG:db_dml_triggerhascount_value=408,drill_action='SHOW_SUBSTRATE'→ routes to the actionability ledger, which has ~12 rows total, not 408 db_dml trigger objects.- The ledger is a gap ledger, not an object enumeration. The 408 real triggers live in
v_trigger_universe_census/ host census — not reachable from this node's substrate. - So
substrate_available=trueis true that a substrate ref exists, but false that the substrate contains the counted population. A supervisor drilling "408 db_dml triggers" lands on a 12-row gap summary and sees neither 408 rows nor a warning. Route-to-misleading-page. v2's grouping surface fixes the 10 grouped nodes (DRILL_GROUPS → real children), but again v2 is not deployed, and even v2 does not re-point the substrate of the non-grouped AX-PXT rows.
I4 — Every route/action non-null? — PASS
All 87 nodes have a non-null next_route and drill_action. No null routes found.
I5 — Every missing substrate has a reason? — PASS
The 2 empty AX-PROCESS leaves carry empty_reason via v_rp_empty_substrate_classification. Honest.
I6 — Can any node route to an empty page without warning? — YES (the I3 nodes)
The AX-PXT count>1 nodes with drill_action=SHOW_SUBSTRATE → ledger. The page won't be empty (ledger has rows) but it will be wrong-population without a warning flag distinguishing "these are the 408 objects" from "this is a 12-row gap summary." The internal inconsistency (grouping_status=NEEDS_GROUPING while drill_action=SHOW_SUBSTRATE, finding H8) is the smoking gun: the node knows it needs grouping but tells the UI to show substrate.
Curated-vs-full-population gap
- Proof matrix v2 = 26 curated cases, not 87. It proves the happy paths and 2 hardcoded blocked nodes (with literal PASS). It does not assert "all 87 nodes drill correctly."
- The 2
PASS_WITH_EXPECTED_BLOCKERhardcoded-node rows can never FAIL (H4) → the proof cannot detect regression on those nodes. - No full-population assertion view exists that says: "for all 87 nodes: count>1 ⇒ (has_children OR grouped); substrate_available ⇒ substrate row-count ≈ count_value; else flagged." That view is the missing safety net.
Recommended full-population guard (design, for T1)
A v_rp_drill_invariant_violations view over v_rp_universal_node_ui_contract (or the unified v2) that emits one row per violated invariant:
count_value>1 AND NOT has_children AND grouping_status<>'GROUPED'→UNGROUPED_HIGH_COUNTsubstrate_available AND drill_action='SHOW_SUBSTRATE' AND (rows in final_substrate_ref) << count_value→SUBSTRATE_POPULATION_MISMATCHNOT substrate_available AND empty_reason IS NULL→UNEXPLAINED_EMPTYdrill_action='NEEDS_GROUPING' XOR grouping_status='NEEDS_GROUPING'→ACTION_STATUS_CONFLICT(catches H8) If that view returns 0 rows, full-population drill is proven. Today it would return ≥10 rows (the AX-PXT mismatch + H8 conflicts).
Verdict
Drill works for the curated, grouped, deployed-as-v2 happy path. It is not proven for full population, and the AX-PXT substrate-population mismatch is a real correctness risk that the curated proof does not catch. Do not market RP as "drills correctly for everything" until the invariant-violations view returns 0 over all 87 nodes on the deployed contract.