KB-EFAA

RP Dynamic Drill — 03 Final Substrate Contract

3 min read Revision 1

03 — Final Substrate Contract (Track B)

Dispatcher: fn_rp_node_substrate(p_axis_code text, p_node_code text) → jsonb (STABLE, birth-free). View: v_rp_node_final_substrate_contract (exercises the dispatcher per node).

Envelope

{ axis_code, node_code, substrate_type, source_tables[], rows_count, substrate_available, warnings[], provenance, payload }

Per-axis substrate resolution (real PG sources)

axis / node kind substrate_type source tables
AX-BASE PIV-* base_pivot_leaf / base_pivot_branch v_registries_pivot_node_contract + fn_registries_pivot_node_substrate
AX-TOPIC TOPIC-CAND:* topic_candidate fn_topic_node_substrate + information_unit metadata
AX-PROCESS WPC-* process_candidate wf_process_candidate + wf_process_candidate_member
AX-PROCESS job:cut job_pipeline job_queue (8 cut.* step-kinds)
AX-PROCESS official official_workflow workflows + workflow_steps
AX-TRIGGER class trigger_class v_trigger_universe_census
AX-PXT TRIG:/PROC:* actionability_gap v_process_trigger_actionability_ledger
(unresolved) UNKNOWN warning NEEDS_SUBSTRATE_WRAPPER

Live substrate samples

  • job:cut → job_pipeline, rows_count 8, source job_queue ✓
  • db_dml_trigger → trigger_class, rows_count 408, source v_trigger_universe_census ✓
  • TOPIC-CAND:knowledge_graph → topic_candidate, rows_count 10 IUs ✓
  • WPC-DOCKER-RUNTIME → process_candidate, rows_count 11 members ✓
  • PIV-019 → base_pivot_leaf, rows_count 1,194,828 (birth_registry) ✓
  • PROC:official_rp → actionability_gap, object_count 0, blocker BLOCKED_NO_PRESIDENT_VOTE ✓

Track-F gap closed mid-run

Initial AX-BASE branch keyed PIV-* through the registry-code function fn_registries_pivot_node_substrate (which keys on registry leaf codes, not pivot codes) → PIV-019 returned empty. Patched (02_patch_base_substrate.sql) to resolve base substrate from v_registries_pivot_node_contract (always PIV-keyed), enriched with leaf detail when codes match. Re-verified birth-free.

Honest gaps

  • 2 empty WPC candidates (member_count=0) → substrate_available=false (correct, not faked).
Back to Knowledge Hub knowledge/dev/reports/architecture/registries-pivot-dynamic-drill-ui-pg-structure-proof-2026-06-05/03-final-substrate-contract.md