KB-3BED

IU Core 60x Delivery/Non-reparent — 04 Controlled dry_run=false delivery proof

3 min read Revision 1
dieu44iu-core-mvp60xdry-run-falsedeliveryruntime-220v0.62026-05-22

04 — Controlled dry_run=false Delivery Proof

What runtime/220 does

220_delivery_dryrun_false_proof.sql runs the first controlled dry_run=false delivery on production — the full route worker → fn_iu_route_deliverfn_iu_structure_consumer chain — for exactly ONE event, against ONE internal sql_function target, in one BEGIN…COMMIT.

Bounded by construction:

  • the ONLY route taken enabled+dry_run=false is the structure_piece_deprecated route — every other route stays dry_run=true;
  • the delivery target is the internal fn_iu_structure_consumer — no network, no secret, no external downstream side effect;
  • the delivery gate + the route allowlist are opened immediately before the worker run and closed again inside the same transaction; the route is repointed live and restored to its exact pre-run state in the same transaction (originals captured by \gset first).

Execution evidence

Stage Result
P0 route pre iu.structure_piece_deprecated.workflowworkflow/event_outbox, enabled=t dry_run=t
P1 pre-health worker healthy=true, backlog_iu_events=1 (the deprecate event), delivery_enabled=false, projection_rows=0
P2 route live repointed → sql_function/fn_iu_structure_consumer, enabled=t dry_run=f (the trigger guard permitted it — route allowlisted)
P3 worker run seen=1 dead_lettered=0 — processed the one structure_piece_deprecated event
P4 projection iu_tree_change_log row — event_ref=8f1b6f03-21c9-4be9-a64f-42f59c19b3ac, operation_type=deprecate_piece, canonical_address=pilot.iu0.test-001, delivered_by=fn_iu_structure_consumer
P5 attempt iu_route_attempt status=sent, delivered=true
verdict delivery_ok=true — 1 projection row, 1 sent attempt, 0 open dead letters
P6 post route restored to workflow/event_outbox/dry_run=true; delivery_enabled=false; allowlist empty

Durable footprint

Exactly: one iu_tree_change_log row, one sent iu_route_attempt, the advanced worker cursor. The route and both gates end exactly as before the run. iu_route_attempt 44→45, iu_tree_change_log 0→1.

What stays blocked

  • External delivery — the seam delivers only to the internal fn_iu_structure_consumer; every non-sql_function target is refused.
  • The delivery gate ends closed, the allowlist empty — the seam is inert again. Re-delivery requires a sovereign macro to re-open it.
  • Production CUT — no CUT executed; execution_enabled not flipped.

Reversibility

iu_tree_change_log is truncatable — the projection rebuilds from event_outbox. The route + both gates were already restored on COMMIT. To re-deliver in error use fn_iu_route_dead_letter_replay.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-60x-durable-nonreparent-delivery-autocut-open-goal/04-dryrun-false-proof.md