KB-3241

70000x · 06 — Carry-forward (80000x): live-mode lifecycle proofs + inbound capture wiring + auto-refresh gate-flip</title> <parameter name="tags">["iu-core","70000x","carry-forward","80000x"]

3 min read Revision 1

70000x · 06 — Carry-forward (80000x)

Items intentionally not done at 70000x and packaged for the next macro.

1. DOT registration for six test commands

DOT_COMMAND_PLAN.md documents the 6 entries to add if/when the team wants the test runner surface to appear in dot_iu_command_catalog:

  • dot_iu_test_autocut_reconstruct
  • dot_iu_test_axis_b_filter
  • dot_iu_test_subtree_filter
  • dot_iu_test_piece_edit_flow
  • dot_iu_test_piece_trigger_io
  • dot_iu_test_sql_bridge

Deferred because catalog pollution is undesirable for test/runner commands. The bash runner is the authoritative entrypoint for now.

2. T05 live-mode piece event proof

T05 emits with piece_event_runtime.dry_run_only=true (default). To prove the live emission path:

  1. Flip dry_run_only=false inside BEGIN/ROLLBACK.
  2. Emit one piece event.
  3. Verify safe_payload->>'emit_mode'='live'.
  4. Verify event lands in event_outbox but ZERO routes deliver it (delivery_live_routes still empty).
  5. ROLLBACK.

3. T06 inbound-capture trigger wiring

fn_iu_sql_link_inbound_capture exists but is NOT yet attached to a host table as a trigger. Two possible wirings:

  • AFTER INSERT trigger on iu_sql_link rows where direction='inbound'.
  • AFTER INSERT statement-level trigger on tables referenced by inbound bridges (per-table; needs registry-driven trigger creation).

4. Auto-refresh gate-flip rehearsal

Mig 036 installed the lineage-trigger but the gate stays false. Carry-forward:

  1. BEGIN, flip gate true, insert probe lineage row via fn_iu_auto_instantiate_from_event, verify fn_iu_three_axis_envelope_refresh_if_stale fires once (statement-level), check iu_three_axis_envelope_refresh_log for actor iu_auto_instantiate_trigger, flip gate back, ROLLBACK.
  2. Then production enable when team decides.

5. T04 live-mode piece lifecycle proof

Live-mode split/merge/supersede/retire (with appropriate review_decision_id + change_set_id):

  1. Mint a fresh enacted test piece (BEGIN/ROLLBACK).
  2. Live-mode supersede/split/merge/retire it.
  3. Verify lifecycle_log + event_outbox + collection_manifest_refresh side effects.
  4. ROLLBACK.

6. Retention enable rehearsal

iu_core.retention_enabled=false per constitution. Once team is ready:

  1. Dry-run with fn_iu_core_retention_cleanup(..., dry_run=true) for each of 4 retention policies.
  2. Verify expected rows_eligible per policy.
  3. Flip gate true with explicit operator sign-off.

7. PR #669

Still untouched. No remote configured in this clone.

8. Nuxt deployment

Still undeployed.

9. Bulk-instance retire DOT (deferred from 18000x onwards)

A higher-level "retire-bulk-instances-for-template-version" DOT would simplify operator rollback of large auto-composed cohorts.

10. Auto-instance Qdrant indexing (deferred from 25000x onwards)

iu_core.vector_sync_enabled=false. Auto-composed instances do NOT auto-publish to Qdrant. A vector_sync_point + auto-index pipeline is the carry-forward.

Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-70000x-full-test-readiness-six-user-flows-open-goal/06-carry-forward.md