KB-630D

IU Core 30x Structure/Autocut — 04 Structure event family + worker dry-run

3 min read Revision 1
dieu44iu-core-mvp30xstructure-eventsruntime-190workerdry-runv0.62026-05-22

04 — Structure Event Family + Worker Dry-run Evidence

runtime/190 — the non-reparent structure-event family

runtime/160 registered one structure event type (structure_op_applied). runtime/190 completes the family — the five non-reparent types the migration-012 apply emits:

operation_type event_type route_code
add_new_piece structure_child_added iu.structure_child_added.workflow
split_large_piece structure_piece_split iu.structure_piece_split.workflow
merge_small_pieces structure_pieces_merged iu.structure_pieces_merged.workflow
deprecate_piece structure_piece_deprecated iu.structure_piece_deprecated.workflow
replace_piece structure_piece_replaced iu.structure_piece_replaced.workflow

All five event types active=true; all five routes enabled=true, dry_run=true, fail_closed=true. The CHECK iu_outbound_route_safe_chk makes an enabled+dry_run=false route structurally impossible. Idempotent (ON CONFLICT DO NOTHING). Applied to production — INSERT 0 5 + INSERT 0 5. Reversal: runtime/rollback/190.

Worker dry-run evidence — real IU-domain events (runtime/150)

runtime/180 emitted 26 new structure_op_applied events. runtime/150 (the disabled-by-default invocation package) was invoked:

Stage Result
I1 pre-health healthy=true, backlog_iu_events=26, gates open, dead_letter_open=0
I2 run status=ran seen=26 attempts_written=26 skipped=0 dead_lettered=0
I3 post-health healthy=true, backlog=0, totals seen/attempts/dead = 44/44/0
I4 audit route_attempts=44 dead_letters=0

Breakdown: iu.structure_op_applied.workflow, status=dry_run, n=44. Every attempt a logged dry-run DECISION; zero downstream delivery.

The five structure_* non-reparent event types were proven to emit in sandbox/070 (P8 — one of each) but inside a rolled-back transaction → produced no durable event_outbox rows. Durable non-reparent emission + worker dry-run is the next macro.

Worker invocation / scheduling

runtime/150 stays disabled-by-default — healthcheck → bounded run → healthcheck, idempotent, no daemon, no cron. The worker gate is the single arm/disarm point. No persistent service started, no cron activated.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-30x-structure-autocut-delivery-prep-open-goal/04-structure-events-worker-dryrun.md