KB-17FA

IU Core 960x — 05 Sync, surface, DOT, no-hardcode, five-layer

6 min read Revision 1
iu-core960xdot-iu-cutter-v0.6qdrant-syncfive-layerdieu44

05 — Semantic sync · surface/API · DOT · no-hardcode · five-layer

1. Semantic / AgentData / Qdrant sync package

AgentData side (done): every IU Core macro report — including this macro's 7 — is uploaded to AgentData and verified by list_documents + get_document + search_knowledge. The iu-tree/ deterministic manifests (_collections/file/iu_core.autocut.file-001.md, _corpus/corpus-manifest.md) are the diffable text-as-code projections of the corpus.

Qdrant side (package + exact blocker): the VPS runs an incomex-qdrant container. The deterministic, content-addressed iu-tree/ manifests are the natural vector-index units — one manifest per IU / per collection, each with a stable digest. The reindex contract is specified:

  • unit: one iu-tree/**/*.md file → one vector point, point id = the file's canonical-address-derived stable key;
  • drift check: re-serialise the corpus (serialize_corpus) and compare corpus_digest against the last indexed digest — a mismatch is the reindex trigger;
  • gate: a reindex must be gated (a dot_config iu_core.vector_sync _enabled key, default false) — no destructive overwrite of the external store without it;
  • one-command: dot_iu_vector_sync (plan/apply/verify) mirroring the delivery seam.

Exact blocker: there is no IU-Core → Qdrant connector module in this repo, and no gated vector_sync config key. Building the connector + gate + dot_iu_vector_sync command is a bounded next-macro slice (doc 07). This macro completes the AgentData-side sync and the Qdrant plan; it does NOT touch the external Qdrant store.

2. Surface / API / UI readiness package

The operator surface already exists as read-only SQL views + a CLI, and needs no deploy/restart:

surface need existing object
command launcher python -m cutter_agent.iu_core.dot_commands list/help/explain; OperatorRuntime.plan/apply/verify
command registry + run aggregates view v_dot_iu_command_registry
command-run ledger / health view v_dot_iu_command_run_health
collection list / detail / render views v_iu_collection_envelope, v_iu_collection_manifest; fn_iu_collection_render
collection health view v_iu_collection_health, fn_iu_collection_validate
delivery / route health views v_iu_route_attempt_summary, v_iu_route_dead_letter_open; iu_tree_change_log

These views are the read API. Exact blocker for a Directus/Nuxt UI: the incomex-directus / incomex-nuxt containers are not in this repo's scope; exposing the views as a Directus read-only collection or a Nuxt page is a deploy-gated integration task. The runbook: register each v_* view as a Directus read-only collection (no schema change — views already exist), or serve them through a Nuxt API route. No unsafe deploy/restart was performed.

3. DOT — unchanged at 113/113

runtime/110 after the macro: 113/113 (table 16 / view 16 / function 40 / trigger 3 / config 7 / event_type 15 / route 16), every D9 class ok=true, D8 drift 0. This macro adds DATA rows only (55 iu_tree_change _log + 7 dot_iu_command_run) — runtime/300 is CREATE-free by construction and the apply proof is data-only — so the DOT inventory is unchanged. No new production-visible object → no DOT-count test edit needed.

4. No-hardcode — PASS

runtime/300 + runtime/rollback/300 + sandbox/150 + sandbox/160 + text_as_code_apply_operator_proof.py — 0 password / DSN / IP / :5432 literal (comment-line-excluded scan). Every candidate set is live-discovered (NOT EXISTS backlog query, v_iu_collection_manifest piece list); route codes are built from the discovered event_type; deployment coordinates are argv. The OperatorRuntime ledger stores an md5 params_digest — no raw value logged.

5. Five-layer sync

Layer Impact
PG Real, durable: runtime/300 (+55 iu_tree_change_log), the text-as-code apply proof (+7 dot_iu_command_run, net-zero piece movement). All additive / reversible.
Directus None — IU Core objects are sidecar tables/views, not Directus collections. The read-only-view → Directus-collection exposure is a documented runbook (§2), not executed.
Nuxt Render-only — the v_* views remain the read API; no component contract change.
AgentData / KB This macro's 7 reports + the proof driver uploaded + list/read/search-verified.
Qdrant / vector No write. Reindex contract specified (§1); the connector + gate are a recorded next-macro slice.

6. Observability

Surface Source
internal delivery projection iu_tree_change_log (56 rows, 0 dead-letter)
operator command registry / run health v_dot_iu_command_registry / v_dot_iu_command_run_health (18 runs)
collection health / manifest v_iu_collection_health / v_iu_collection_manifest
route attempt / dead-letter v_iu_route_attempt_summary / v_iu_route_dead_letter_open
DOT conformance runtime/110 — 113/113
Back to Knowledge Hub knowledge/dev/laws/dieu44-trien-khai/v0.6-iu-core-960x-delivery-textcode-import-surface-sync-acceptance-open-goal/05-sync-surface-dot-fivelayer.md