KB-782B

Birth Registry Audit — Trigger and Function Root Cause

2 min read Revision 1
auditbirth-registrytriggerroot-cause2026-06-05

03 — Trigger / Function Root Cause

Direct birth triggers: birth_trigger_entity_labels, two triggers on system_issues, birth_trigger_registry_changelog, and birth_trigger_knowledge_documents, all calling fn_birth_registry_auto().

fn_birth_registry_auto() synthesizes table::id when needed and inserts a birth, but does not enforce collection_registry.coverage_status. Therefore explicitly birth-exempt collections can still birth.

Live cron: 0 */3 * * * ... /opt/incomex/dot/bin/dot-hc-executor.

Live H11a metadata: check_kind=detect_and_fix, auto_fix_action=heal_description_basic, is_active=true.

The shell function autofix_heal_description_basic() loops over up to 1,000 governed entities with empty descriptions. If healing stays empty, it calls fn_log_issue() for every entity on every run without stable violation/coalesce key.

Live output: AUTOFIX_RESULT healed=0 skipped=0 failed=0 anti_loop=1000; H11a remaining count unchanged.

Each new issue fires fn_auto_label_provenance() and fn_auto_label_assignment(), then Directus flow updates create registry_changelog; all three collections birth.

System-wide evidence: 166 birth-auto triggers on 148 tables; 78 birth-exempt/deferred/excluded collections still have a birth trigger.

Back to Knowledge Hub knowledge/dev/reports/architecture/birth-registry-object-explosion-log-vs-managed-object-audit-2026-06-05/03-trigger-function-root-cause.md