IU Core 960x — 05 Sync, surface, DOT, no-hardcode, five-layer
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/**/*.mdfile → one vector point, point id = the file's canonical-address-derived stable key; - drift check: re-serialise the corpus (
serialize_corpus) and comparecorpus_digestagainst the last indexed digest — a mismatch is the reindex trigger; - gate: a reindex must be gated (a
dot_config iu_core.vector_sync _enabledkey, 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 |