KB-37E1

Branch C — IU DOT Operational Completeness Matrix (2026-05-29)

7 min read Revision 1
iudotcompletenessbranch-cdieu352026-05-29

Branch C — IU DOT Operational Completeness

Doc 03 (2026-05-29)

Goal of the IU-as-smart-brick program: an agent should perform every repeated IU operation by calling one DOT command — never bespoke SQL, code, or paste-work (GPT-DIR workstream 2; NT3).

Verdict: PARTIAL. ~15 of 22 repeated operations have a dot_iu_* wrapper (≈68% operation coverage). Eight operations still require bare function calls. Separately, the 53-row IU DOT catalog is a parallel registry not integrated with the constitutional dot_tools SSOT and lacks Đ35 Tier-A paired checks (low governance integration).

1. Catalog shape (live)

dot_iu_command_catalog (53 rows): columns command_name, category{collection,piece,lifecycle,read,health}, mutating bool, reversible bool, target_functions text[]. Every invocation writes a dot_iu_command_run audit row via fail-closed fn_dot_iu_command_log. This is NOT the dot_tools table (309 rows, only 2 IU-related) that Đ35 §3 names as the single DOT SSOT, and it carries no paired_dot Tier-A field.

2. Operation-by-operation matrix

Operation Live fn? DOT command? Mutating flag correct? Gate? Rollback path One-command-safe? Status
create / write IU fn_iu_create dot_iu_create_piece / dot_iu_clone_piece ✓ mutating birth-gate (warn) retire/supersede LIVE
create piece fn_iu_create dot_iu_create_piece retire LIVE
edit piece metadata fn_iu_metadata_refresh dot_iu_update_piece_metadata version LIVE
edit piece body (new version via fn_iu_create/supersede) — (no discrete "edit body" DOT) n/a supersede PARTIAL
add piece to document fn_iu_collection_add_piece dot_iu_add_piece structure_ops remove LIVE
remove piece fn_iu_collection_remove_piece dot_iu_remove_piece ✓ (soft) structure_ops re-add LIVE
reorder piece fn_iu_collection_reorder_piece dot_iu_reorder_piece structure_ops reorder LIVE
split piece fn_iu_piece_split dot_iu_split_piece ✓ (additive) review_decision_id source untouched LIVE
merge pieces fn_iu_piece_merge dot_iu_merge_piece ✓ (additive) review_decision_id sources untouched LIVE
render fn_iu_collection_render dot_iu_render_file ✓ (read) n/a LIVE
reconstruct source fn_iu_reconstruct_source — none n/a n/a (read) GAP
filter axis B fn_iu_filter_axis_b dot_iu_filter_axis_b ✓ (read) n/a LIVE
filter axis C fn_iu_filter_axis_c_subtree dot_iu_subtree ✓ (read) n/a LIVE
validate SQL link fn_iu_sql_link_validate(_all) dot_iu_sql_link_validate ✓ (read) n/a LIVE
resolve SQL link fn_iu_sql_link_resolve_all dot_iu_sql_link_resolve ✓ (read) n/a LIVE
emit trigger out fn_iu_emit_event / fn_iu_piece_emit_event — none emit_enabled deprecate event GAP
capture trigger in fn_iu_sql_link_inbound_capture (trigger) — none (auto via trigger) n/a partial-auto GAP (DOT)
route worker run fn_iu_route_worker_run — none routes master n/a GAP
DLQ replay fn_iu_route_dead_letter_replay — none routes master resolve GAP
create/update IU relation (iu_relation writes) — none (read-only dot_iu_kg_edge_audit exists) delete edge GAP
KG edge audit fn_iu_kg_edge_audit dot_iu_kg_edge_audit ✓ (read) n/a LIVE
retire / supersede fn_iu_retire / fn_iu_supersede dot_iu_retire_piece / dot_iu_supersede_piece restore LIVE
enact fn_iu_enact — none never-flip no-rd=false supersede GAP
vector reindex/sync fn_iu_vector_sync_record_v2 / qdrant_register — none vector_sync_enabled retire collection GAP (see Doc 02)
health check fn_iu_collection_healthcheck / fn_phase0_cockpit dot_iu_healthcheck ✓ (read) n/a LIVE
gate open/close/verify fn_iu_gate_* dot_iu_gate_open/close/verify_closed/watchdog inverse LIVE
post-cut axis materialize fn_iu_post_cut_axis_materialize iu.post_cut.axis_materialize rematerialize ✓ (but not autowired — Doc 01 A3) LIVE (mis-wired)

3. DOT completeness score

  • Operation coverage: 15 LIVE / 22 audited core ops ≈ 68%. (Plus collection/staging/template families fully covered: ~38 of 53 catalog rows.)
  • Missing DOT wrappers (8): reconstruct, emit, capture(in), route-worker, DLQ-replay, IU-relation-write, enact, vector-reindex. Plus 1 PARTIAL (edit-body).
  • Đ35 governance integration: LOW — IU DOTs are not in dot_tools; no Tier-A paired_dot (NT12 / Đ35 §3). The mutating/reversible flags are a lighter-weight model than Đ35's 11 mandatory fields.

4. Next implementation pack (DOT layer)

Pack DOT-IU-1 — close operation gaps (Tier-B + paired Tier-A):

  1. dot_iu_reconstruct_source (read) + verify-digest Tier-A → wraps fn_iu_reconstruct_source.
  2. dot_iu_emit (mutating, gate emit_enabled) + dot_iu_emit_verify Tier-A → fn_iu_emit_event / fn_iu_piece_emit_event.
  3. dot_iu_dlq_replay (mutating, gate routes + queue.dlq.replay_enabled) + dot_iu_dlq_inspect Tier-A → fn_iu_route_dead_letter_replay.
  4. dot_iu_route_worker_run (mutating, gate routes) + dot_iu_route_status Tier-A → fn_iu_route_worker_run.
  5. dot_iu_relation_assert (mutating, ABox; honors kg_auto_approve_rules, provenance-or-quarantine Đ39) + reuse dot_iu_kg_edge_audit as Tier-A.
  6. dot_iu_enact (mutating, requires review_decision_id; never bypass iu_enact.allow_no_review_decision) + dot_iu_enact_precheck Tier-A → fn_iu_enact.
  7. dot_iu_capture_status (read Tier-A over inbound-capture trigger results).
  8. dot_iu_vector_reindex + dot_iu_vector_verify (Doc 02 P1).

Pack DOT-IU-2 — Đ35 integration: register all IU DOTs (existing 53 + new) into the constitutional dot_tools SSOT with the 11 mandatory fields and paired_dot links — OR formally ratify dot_iu_command_catalog as a recognised Đ35 sub-registry via APR, with a reconcile DOT proving every Tier-B has a Tier-A companion (trg_dot_enforce_paired analogue). Decision belongs to Council.

All new DOTs follow the proven additive/reversible pattern (dress-rehearse BEGIN..ROLLBACK → author rollback → COMMIT small → verify in fresh connection). No gate flips required to register catalog rows.

Back to Knowledge Hub knowledge/dev/reports/architecture/iu-design-live-gap-dot-ops-workflow-design-registry-audit-2026-05-29/03-iu-dot-operational-completeness.md