IU Core Controlled Route — 06 Consumer readiness + version_seq ruling
IU Core Controlled Route — 06 Consumer readiness + version_seq ruling
event_outbox consumer readiness — NO active consumer
Survey of the production directus DB and VPS:
event_outboxholds 92,667 rows (57,121 in the last 7 days, allevent_domain='system', event_stream='alert'). Actively written by other domains; latest row2026-05-21 10:30.- No delivery-state columns. Columns: id, event_domain, event_type,
event_stream, delivery_lane, event_severity, event_subject_table,
event_subject_ref, canonical_address, actor_ref, source_system,
correlation_id, payload_classification, safe_payload, occurred_at,
created_at. There is no
delivery_status/delivered_at/processed_at.event_outboxis an append-only event log, not a work queue. - One trigger on
event_outbox:trg_event_outbox_type_validate(fn_event_type_validate, BEFORE INSERT, validation only). No AFTER trigger → an insert does not itself cause delivery. - No worker container (
docker ps -a: postgres, directus, agent-data, claude-mcp, claude-kb, nuxt, nginx, qdrant, uptime-kuma, pg-restore-test — none is an outbox consumer). No cron references outbox/event/iu. event_outboxis not a Directus collection, so Directus flows cannot trigger on it; no flow / operation options referenceevent_outbox.
Conclusion. event_outbox is an unconsumed append-only log. Opening the
master gate enqueues iu version_applied rows that accumulate undelivered
— no downstream delivery occurs. This makes the gate-open safe.
Readiness for dry_run=false (a later macro). There is no route worker
of any kind. dry_run=false would not, by itself, cause delivery — but it is
only meaningful once a worker that reads event_outbox / iu_route_attempt
and respects the route dry_run flag is built. A route worker must be built
and verified before dry_run=false is considered. This is the exact gap
doc 10 of the runtime-activation macro warned about.
version_seq divergence — RULED and resolved
The COEXIST ruling left a divergence: the existing UI-feed trigger
trg_aa_iu_notif_version emits only for version_seq > 1; the new outbound
trigger emitted on every version.
Ruling for this phase: align the bus to version_seq > 1. Migration
007 (doc 03) patches fn_iu_outbound_on_version so the event_outbox
workflow bus emits only for version_seq > 1 — identical semantics to the
notification path. version_seq = 1 is the birth version, not a "version
applied" bus event. Evidence: Probe A (seq=2 emits 1 row), Probe B (filter
present in the deployed function), runtime/040 V7 (skips_birth_version=t).
The divergence is resolved, not deferred.