KB-4E34

09 — Issue / Event Type Gap (Q9)

5 min read Revision 1
system-issuesevent-type-registrydieu45register-before-emitfact-finding

09 — Issue / Event Type Gap (Q9)

Checks each requested type against (a) system_issues live vocabulary (issue_class/issue_type, no CHECK enum → free text), (b) event_type_registry (40 rows), and (c) whether any matching event was ever emitted in event_outbox (179,672 rows). Nothing was registered or emitted by this audit.

Live system_issues vocabulary (issue_class / issue_type · count)

  • null / template_gap = 181,378 (dominant) · data_fault / thiếu_quan_hệ = 606 · dieu22_sec4_2 / silent_fail = 546 · null / collection_onboarding_gap = 345 · orphan_file / dot_bug = 167 · sync_fault / (null) = 141 · null / kb_pg_sync_drift = 84 · null / hc_finding_sql = 72 · render_fault / (null) = 14 · hardcode_violation = 11 · data_fault / thiếu_mã_định_danh = 9 · null / apr_legacy_unmapped = 8 · hc_finding_builtin 5 · sync_fault / sai_lệch_dữ_liệu = 2 · verify_failed / verify_failed = 2 · render_fault / lỗi_lớp_2 = 2 · compliance_debt / paired_audit_retrofit_pending = 1 · null / apr_phantom_applied = 1 · + singletons.

Live event_type_registry (40) relevant slice

  • domain system: issue_opened (active), issue_resolved (active), issue_archived (active), red_zone_violation (active=false).
  • domain mother: proposal.created/approved/rejected, output.created/failed, config.created, factory.registered, governance.blocked/unblockedALL active = false (dormant).
  • domains iu/piece/staging: active but unrelated to grouping/pivot.

Requested-type coverage

Requested type In system_issues vocab? In event_type_registry? Ever emitted (event_outbox)? Owner (rec) Registration needed?
pivot_missing No No No GOV-SIV Yes
count_integrity_failed No (verify_failed is generic, 2 rows) No No GOV-SIV Yes
classification_required No (collection_onboarding_gap adjacent, 345) No No GOV-COUNCIL/SIV Yes
grouping_policy_missing No No No GOV-COUNCIL Yes
grouping_invariant_failed No No No GOV-SIV Yes
phantom_candidate No (only post-hoc apr_phantom_applied=1) No No GOV-SIV (after P1) Yes (blocked on Đ31 phantom clause)
orphan_detected Partial — present as data_fault/thiếu_quan_hệ (606) + thiếu_mã_định_danh (9) No (issue-only, no event type) issues yes; no dedicated event GOV-SIV event type optional; issue types exist
unclassified_object No (collection_onboarding_gap nearest) No No GOV-COUNCIL Yes
group_too_large No No No GOV-COUNCIL Yes (pairs with threshold P2)
stale_label No No No GOV-SIV/Đ24 Yes
pin_policy_violation No No No GOV-COUNCIL Yes (pairs with pin P-PIN)

Findings

  1. Orphan + drift are the only requested concepts already represented — orphan via the two data_fault halves (615 rows total), drift via sync_fault/sai_lệch_dữ_liệu. Everything else is absent from both the issue vocabulary and the event registry.
  2. Phantom exists only as an after-the-fact apr_phantom_applied (1 row, null class) — there is no detection type; that is exactly the LAW_DEFINITION_GAP (doc 01/08).
  3. Zero relevant events ever emitted. A targeted event_outbox scan for pivot|count|integrity|classif|orphan|phantom|pin|group|label|threshold|grouping + all mother.* returned 0 rows. The dormant mother.*/governance.* types have never fired.
  4. issue_type/issue_class have no CHECK enum → new issue types are insertable without schema change. However, governance discipline (Đ45 "register-before-emit") and event_type_registry (which DOES gate events) require types to be registered first, approval-gated. So registration is a governance act, not a schema barrier.

Allowed to emit?

  • system_issues rows: any A-tier scan/audit DOT (GOV-SIV) may raise issues read-only — but should only emit registered types.
  • event_outbox events: gated by event_type_registry; emitting an unregistered type violates Đ45. The dormant mother.*/governance.* types must be activated (approval-gated) before use.

Registration plan (NOT executed)

Approval-gated (Đ45 register-before-emit): INSERT issue types pivot_missing, count_integrity_failed, classification_required, grouping_policy_missing, grouping_invariant_failed, phantom_candidate/phantom_confirmed (after P1), unclassified_object, group_too_large (with P2), stale_label, pin_policy_violation (with P-PIN); register event_type_registry rows (e.g. count_integrity.*, classification.*, pin.*) and activate the dormant mother.*/governance.* lane. Owner: GOV-SIV (health types) + GOV-COUNCIL (policy/event lane). This audit registered nothing.

Back to Knowledge Hub knowledge/dev/reports/architecture/governance-alignment-followup-fact-finding-registries-pivot-2026-06-01/09-issue-event-type-gap.md