KB-161F

05 — Registry-Driven Universal Contract

2 min read Revision 1

05 — Registry-Driven Universal Contract

v_rp_universal_node_ui_contract_registry_driven = reliability contract JOINed to v_rp_axis_source_binding on axis_code, exposing binding metadata + an honest requires_view_edit flag per node.

Parity vs reliability (CURRENT)

dimension reliability registry_driven parity
rows 87 87 ✓ exact
axes 5 5
routes / actions / warnings / substrate (inherited via r.*) identical

Every column of the current contract is preserved; the view only adds governance_class, source_kind, source_view, is_registry_backed, is_synthetic, requires_view_edit, binding_next_action.

Honest hardcode bound

A pure SQL view cannot dynamically switch FROM-sources per binding row, so v1's UNION ALL is not eliminated — it is bounded and measured:

  • requires_view_edit = NOT is_registry_backedTRUE for 58 nodes (AX-BASE 39 + AX-TRIGGER 7 + AX-PXT 12), FALSE for 29 (AX-PROCESS 22 + AX-TOPIC 7).
  • Meaning: adding/altering a registry-backed axis (AX-PROCESS/AX-TOPIC) is driven by axis_registry rows; the 3 synthetic axes still require a v1 UNION edit until a dynamic generator replaces v1.

Limitation made explicit

True auto-scale ("add an axis by inserting one binding row, no view edit") requires replacing v1's static UNION with either (a) a SQL generator function that iterates v_rp_axis_source_binding, or (b) per-axis materialized source views keyed off the binding. Both are safe-engineering next steps (no owner needed) and are the recommended registryization macro. The requires_view_edit column makes the residual hardcode visible and countable rather than hidden.

Back to Knowledge Hub knowledge/dev/reports/architecture/rp-contract-canonical-registry-driven-fullpop-nohardcode-closeout-2026-06-05/05-registry-driven-contract.md