KB-2D53

06 — Trigger Registry Truth Control

2 min read Revision 1

Supertrack F — Trigger Registry Truth Control

Live recomputation

408 public DB triggers; trigger_registry matches 107; 301 unregistered (matched on trigger_name + table_name). This reconciles with the prior "≈410 live / 107 matched / ≈303 unregistered."

Classification of the gap (by risk tier)

risk_tier n enabled registered meaning
P3_MANAGED 107 86 107 already in registry
P2_GOVERNED_BY_BIRTH_POLICY 197 196 0 birth triggers — governed by birth policy/gateway, not the registry
P1_UNMANAGED_MUTATING 83 83 0 the real hidden mutating surface — identify + register
P3_MAINTENANCE 14 14 0 timestamp/maintenance — benign
P2_AUDIT 2 2 0 audit/history
P2_UNMANAGED_DISABLED 5 0 0 disabled

The 197 "unregistered" birth triggers are not unmanaged — they are governed by the birth-policy coverage system (collection_registry.coverage_status + gateway). The genuine attention item is the 83 enabled, unregistered, app/unknown mutating triggers.

Packet (candidate only — no auto-register)

v_trigger_registry_registration_packet emits all 301 unregistered triggers in registry-shaped rows with status='candidate' and a per-tier recommended action. Nothing was registered. No-go guard (v_trigger_registry_no_go_guard) 4/4 PASS, including the teeth assertion no_registry_rows_added_this_session and registration_packet_is_candidate_only, plus birth_trigger_surface_still_policy_governed.

Auto-registration of official triggers is deliberately withheld because registering a birth/governance trigger can itself create birth/governance side-effects — owner/operator owns trigger DDL.

Views built: v_trigger_registry_gap_inventory, v_trigger_registry_registration_packet, v_trigger_registry_no_go_guard.

Back to Knowledge Hub knowledge/dev/reports/architecture/authority-birth-truth-control-plane-p0-remediation-2026-06-06/06-trigger-registry-truth-control.md