KB-3EF7
IU Core 480x — 05 DOT, no-hardcode, five-layer, observability
5 min read Revision 1
dieu44iu-core-mvp480xdotno-hardcodefive-layerobservabilityv0.62026-05-22
05 — DOT / no-hardcode / five-layer / observability
DOT — 84 -> 104
Migration 016 adds 2 functions + 2 views; runtime/260 adds 8 event
types + 8 routes. runtime/110's SSOT inventory _iu_core_expect and the
D9 verdict counts were bumped in the SAME commit:
| class | 240x | 480x | added |
|---|---|---|---|
| table | 14 | 14 | — |
| view | 12 | 14 | v_iu_composer_event_backlog, v_iu_collection_export_status |
| function | 34 | 36 | fn_iu_emit_collection_event, fn_iu_collection_checkpoint |
| trigger | 3 | 3 | — |
| config | 6 | 6 | — |
| event_type | 7 | 15 | the 8 composer event types |
| route | 8 | 16 | the 8 composer routes |
| total | 84 | 104 | +20 |
runtime/110 is the post-apply verifier — its D9 reports 104/104 once
migration 016 + runtime/260 are applied. Current production is 84/84
(unchanged this macro — no production mutation); the baseline scan confirmed
84/84 before any work. 5 DOT-count test files were updated for the 84->104
inventory (test_iu_core_ddl.py EXPECTED_COUNTS + sum 104,
test_iu_core_120x / _240x / _30x / _structure_op_layer).
No-hardcode — PASS
016/rollback/016/runtime/260/runtime/270/sandbox/110— 0 uuid literal, 0 secret/api-key/DSN/IP. Event-type / route-code /collection_kind/piece_role/ checkpoint-type strings are domain vocabulary (classified, registry- or CHECK-backed — same status asfn_iu_structure_op_applyemitting'structure_op_applied').v_iu_composer_event_backlogidentifies the composer family byevent_subject_table = 'iu_piece_collection'— not a hardcoded event-type list; self-describing.fn_iu_emit_collection_eventsourcesevent_stream/delivery_lanefromevent_type_registry, never hardcoded at the emit site.runtime/270mints from-scratch pieces withgen_random_uuid()-suffixed canonical addresses — no fixed identity baked.composer.py/text_as_code.py/autocut_bridge.py— contract constants only; 0 DSN / host / secret. Theiu-tree/snapshot JSONs carry IU uuids — that is a data export artifact (point-in-time read-only provenance), not code/config.
Five-layer sync
| Layer | Impact |
|---|---|
| PG | Real change authored (not yet applied): migration 016 (2 functions / 2 views / 4 CREATE-OR-REPLACE), runtime/260 (8 event types / 8 routes), runtime/270 (+2 IU / +1 collection / +2 membership / +N events). All additive / idempotent / reversible. |
| Directus | No collection/field DDL — composer objects are IU-core sidecar tables, not Directus collections. No data change to any Directus-managed collection. |
| Nuxt | Render-only — v_iu_composer_event_backlog / v_iu_collection_export_status are read surfaces available to power a future composition observability / file-builder UI. No current component contract change. |
| AgentData / KB | This macro's 7 reports under v0.6-iu-core-480x-composer-event-textcode-roundtrip-production-readiness-open-goal/, uploaded + list/read/search-verified. The durable iu-tree/ text-as-code export is a natural future AgentData ingest unit. |
| Qdrant / vector | No impact this macro. NOTE: iu-tree/_corpus/corpus-manifest.md (deterministic, 158-IU) + the per-collection manifests are now natural units for vector indexing — carried to doc 07. |
Observability
| Surface | Source |
|---|---|
| composer event backlog | v_iu_composer_event_backlog (new) |
| collection health | v_iu_collection_health (015) |
| text-as-code export/import status | v_iu_collection_export_status (new) |
| delivery attempt summary | v_iu_route_attempt_summary (009) |
| dead-letter view | v_iu_route_dead_letter_open (009) |
Reversibility — every mutation path has a disable/rollback
- Migration 016 ->
rollback/016(restores the 015 composer-function bodies, drops the 2 helpers + 2 views). - runtime/260 ->
runtime/rollback/260(deletes routes then event types). - runtime/270 ->
runtime/rollback/270(soft-deletes the 2 minted IUs, removes memberships, deletes collection). - Disable path: close
routes_master_enabled(emission stops bus-wide) ORcomposer_enabled(every mutating composer fn refuses) ORruntime/rollback/260(event types deactivated -> emit returns NULL). Every composer route isdry_run=true; the delivery seamdelivery_enabledisfalse. External delivery is structurally impossible.