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/1100 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 as fn_iu_structure_op_apply emitting 'structure_op_applied').
  • v_iu_composer_event_backlog identifies the composer family by event_subject_table = 'iu_piece_collection'not a hardcoded event-type list; self-describing.
  • fn_iu_emit_collection_event sources event_stream / delivery_lane from event_type_registry, never hardcoded at the emit site.
  • runtime/270 mints from-scratch pieces with gen_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. The iu-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) OR composer_enabled (every mutating composer fn refuses) OR runtime/rollback/260 (event types deactivated -> emit returns NULL). Every composer route is dry_run=true; the delivery seam delivery_enabled is false. External delivery is structurally impossible.
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-480x-composer-event-textcode-roundtrip-production-readiness-open-goal/05-dot-nohardcode-fivelayer.md