05 — Registry-Driven Universal Contract
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_backed→ TRUE 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_registryrows; 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.