KB-6A7D

Trigger Axis (AX-TRIGGER) — Concept & Cross-check Explainer

3 min read Revision 1
trigger-axisax-triggercrosscheck2026-06-04

Trigger Axis (AX-TRIGGER) — Concept & Cross-check Explainer

2026-06-04 · triggers as first-class activation objects, not hidden process attributes.

1. Why a Trigger Axis

A process is defined logic; a trigger is what fires it. Today triggers are scattered and mostly ungoverned: DB DML triggers, DOT cron/event schedules, event types, job-queue kinds, host crontab, and systemd timers. If you cannot see triggers, you cannot reason about when the system acts, who owns each activation, or which process a firing belongs to. AX-TRIGGER makes the activation layer visible and ownable — the third governance axis alongside AX-TOPIC and AX-PROCESS.

2. The trigger universe (live, 2026-06-04)

DB-introspectable universe = 525 triggers (476 enabled):

  • db_dml_trigger 408 (381 enabled / 27 disabled) — fire on table DML.
  • event_type 52 (30 active / 22 inactive).
  • dot_cron 42, dot_dual 6, dot_event 5, dot_on-deploy 4.
  • job_queue 8 kinds. Plus 77 host-unmanaged triggers not enumerable from PG (crontab 49, /etc/cron.d 6, systemd app-timers 4, OS timers 18) — these need a host adapter, exactly like the workflow scanner.

3. The cross-check findings

  • 408 DB triggers map to NO governed process (INFRA_NO_PROCESS). They are the hidden activation layer: birth, audit, integrity, and changelog triggers nobody owns at the process level.
  • 117 process-relevant triggers (dot/event/job) — these should belong to a process, but 0 are officially owned (governance_object_ownership=0).
  • 27 stale/disabled DB triggers (STALE_DISABLED_DB_TRIGGER) — candidates for removal review.
  • 0 one-trigger-many-process, 12 many-trigger-one-process (12 candidates have multiple entrypoint triggers) — fan-in is real, fan-out is not (yet).

4. The read-only substrate (live views)

v_trigger_universe_census, v_trigger_host_unmanaged_census, v_trigger_process_relation_candidates, v_trigger_orphan_stale_detector, v_ax_trigger_surface, v_ax_process_trigger_crosscheck, v_rp_trigger_visibility_gap. All additive, birth-free, no canon — AX-TRIGGER is CANDIDATE, RP-visible triggers = 0 until canon.

5. The detection vocabulary

  • trigger-no-process: 408 DB triggers + any unmapped dot/event.
  • multi-process (fan-in): 12 processes share triggers.
  • stale/orphan: 27 disabled DB triggers.
  • owner-missing: all 525 (ownership=0).
  • host-unmanaged: 77 (need adapter).

6. What's next (not done yet — needs authority/safety)

Canonising AX-TRIGGER would follow the same owner gate as AX-PROCESS: assign a trigger-axis owner, register the axis, then attach triggers to their owning processes. No trigger canon/birth has been performed — only the read-only surface exists.