T2 RP Audit — 01 Base RP Count Reliability
01 — Base Registries-Pivot Count Reliability
Inventory
pivot_definitions: 39 total (37 active, 2 inactive, 1 superseded).- Parent graph integrity: 0 orphan parent refs (every
parent_coderesolves to acode). PASS. v_registries_pivot_node_contract: 39 nodes.v_registries_pivot_surface: 39.v_total_final_acceptance_scorecard: 11 dims (as designed).pivot_resultscache: 149 rows.
Counts are LIVE (not cached)
Cross-checked node_contract against live source tables:
- PIV-019 → 1,194,844 == live
birth_registrycount. - PIV-007 → 309 == live
dot_toolscount. The surface recomputes live;pivot_results(149) is a secondary cache whose staleness is reported asdrift_status, not served.
count_status distribution (node_contract)
| count_status | n |
|---|---|
| pivot_backed | 25 |
| PIVOT_MISSING | 14 |
14/39 nodes (36%) have NULL count (PIVOT_MISSING). These are entirely scaffold/template pivots: MTX-TEST (test), PIV-020 (default), PIV-101..106 (cross-table drill templates), PIV-201..206 (l2-drill templates). Each is flagged count_missing:true, several classification_lane:inactive_retire_candidate or composition_status:drill_overload. → CANDIDATE_EXPECTED / scaffolding, not a bug, but the UI must render these as "no count", never 0.
grouping_status (surface)
NO_COUNT 14 · NOT_REQUIRED 11 · NEEDS_GROUPING 10 · SATISFIED 4. The 14 NO_COUNT == the 14 PIVOT_MISSING. Consistent.
drift_status
ok 31 · drift 7 · null 1. The 7 drift nodes: MTX-L1-OVERVIEW, MTX-L2-ATOM, PIV-019 (all = 1,194,844 birth_registry, growing), PIV-007 (309 tools), PIV-008 (37 ui_pages), MTX-TEST (null), PIV-104 (null). → drift = live value diverged from the pivot_results cache. Drift detection is a working FEATURE; the live surface is correct. → ACCEPTABLE_BACKGROUND_DRIFT.
Drill reconciliation (v_rp_drill_reconciliation) — node vs children sum
| parent | parent_count | children_total | status |
|---|---|---|---|
| PIV-007 DOT Tools | 309 | 309 | RECONCILES |
| PIV-009 Collections | 168 | 168 | RECONCILES |
| PIV-016 Entity types | 42 | 42 | RECONCILES |
| PIV-001 System catalog | 169 | 492 | ADVISORY_NO_PARTITION_LAW |
| PIV-101 Catalog-by-layer | (null) | 146 | PARENT_NOT_SCALAR |
| MTX-L1-OVERVIEW | 1,194,844 | 2,388,523 | ADVISORY_NO_PARTITION_LAW |
3 partitioned parents reconcile exactly. The non-reconciling ones are by design (overlapping slices for PIV-001; matrix cross-tab double-count ≈2× for MTX-L1) and are explicitly labeled ADVISORY_NO_PARTITION_LAW / PARENT_NOT_SCALAR. → NEEDS_LAW_DEFINITION, handled honestly. UI must not naively sum children under a parent — it must read partition_defined/drill_status.
Dynamic-drill proof matrix + dashboard
v_rp_dynamic_drill_proof_matrix: 12/12 PASS across all 5 axes. Dashboard: ui_contract_ready=true, substrate_contract_ready=true, axes_covered=5, missing_grouping 10, missing_substrate 2, official_blocked 39, candidate 33, verdict UI_DYNAMIC_DRILL_PROVEN_WITH_CANDIDATE_BLOCKERS. NOTE: the proof matrix is a curated 12-case contract proof, not full-population validation; it proves the drill contract behaves correctly on representative nodes, not that all 39 counts are individually correct.
Findings
normalized_signatureis NULL on all 39 pivots → the signature-based dedup mechanism is inert. Low risk today (only 39 pivots, parent graph clean, 0 active dup signatures), but the de-dup guard provides no protection. → DUPLICATE_RISK (low).MTX-TESTis a livetestpivot flaggedinactive_retire_candidatestill present in node_contract. → STALE_DATA / noise, should be retired/excluded from UI.substrate_available=truefor all 39 base nodes including the 14 with NULL count → substrate-availability ≠ count-availability (see doc 09).
Score: 83/100
Counts live, parent graph clean, contract proven, divergences labeled. Docked for 36% no-count scaffold nodes, test-pivot noise, inert signature-dedup, and substrate/count semantic overlap.