IU Test b–f Command Pack — 01 Live-vs-Design Drift Reconciliation
01 — Live-vs-Design Drift Reconciliation
Purpose: the survey found the live substrate is more ready than Master Design Rev2–Rev5 assumed (it labels much of this "paper"). This reconciles each artifact and assigns an action. Action vocabulary: no action · design reconciliation later (feeds U11, a surgical drift patch — NOT a redesign now) · implementation dependency (a test/macro depends on it) · survey again · block.
All "live finding" values are from the survey (rev1) and this pack's read-only baseline (2026-05-28).
1. Drift table (all §2.2 artifacts)
| Artifact / function / DOT cmd | Master Design assumption | Survey / live finding | Impact | Action |
|---|---|---|---|---|
iu_three_axis_envelope |
"paper" (PG Map §10) | verified_live, 216 rows = 1 per IU; cols axis_a_doc_code/sort_order/section_code, axis_b_tags+axis_b_tags_by_source (jsonb), axis_c_parent_id/depth/ancestors/ancestor_addresses |
Tests b & c read paths are already backed; no new table | design reconciliation later (U11); implementation dependency (b, c) |
iu_metadata_tag |
"paper" | verified_live, 536 rows; keys incl legal_domain:*, topic:*, sectype:*, doc:*, kind:* |
Domain/professional axis (test b) has real vocab to filter on | design reconciliation later; implementation dependency (b) |
iu_metadata_tag_registry |
"paper" | verified_live, 36 rows (tag vocab) | b filter validates tag keys against registry | implementation dependency (b) |
iu_tree_path |
(implied paper) | verified_live, 199 rows (materialized ancestry) | Test c subtree filter backed | implementation dependency (c) |
iu_relation |
kg_edge_refs "derived view over iu_kg_edge" (no iu_kg_edge found) |
verified_live, 60 rows (parent/child edges); iu_kg_edge absent |
c uses iu_relation+iu_tree_path, not the design's named view |
design reconciliation later (rename in PG Map); implementation dependency (c) |
iu_structure_operation |
"paper" | verified_live, 72 rows but only reparent_piece(60)+deprecate_piece(12) |
Reorder/reparent proven; add/remove/split/merge unexercised | implementation dependency (d) |
iu_sql_link |
REUSE row 5 (VL) but treated as design-only in trigger survey | verified_live, 3 rows, ALL enabled=false; roles represents(table tac_publication, bidirectional), governs(fn_iu_three_axis_envelope_refresh, outbound), governs(v_iu_section_type_vocab_sync, outbound) |
Test f has real link rows to validate/resolve read-only; activation deferred | design reconciliation later; implementation dependency (f) |
iu_sql_event_route |
"already live, dry-run" (gated) | verified_live, 1 row (trigger-IN route) | e trigger-in backed; gated | implementation dependency (e) |
iu_outbound_route |
paper route | verified_live, 15 rows (trigger-OUT routes) | e trigger-out backed | implementation dependency (e) |
iu_route_attempt |
paper | verified_live, 68 rows (delivery attempts logged) | e has historical delivery evidence; route_worker_enabled=true, delivery_enabled=false |
implementation dependency (e) |
fn_iu_piece_split |
split/merge "not built" (TD-P1) | function exists live; iu_split_set 0 rows |
d split path exists in code; never run; needs review_decision + gate | implementation dependency (d); block until U3 |
fn_iu_piece_merge |
split/merge "not built" | function exists live; iu_merge_set 0 rows |
d merge path exists; never run | implementation dependency (d); block until U3 |
fn_iu_post_cut_axis_materialize |
G2 "missing autowire" | function exists live + DOT iu.post_cut.axis_materialize |
G2 reclassified: exists, not auto-wired into cut completion | implementation dependency (U4); design reconciliation later |
dot_iu_command_catalog |
dot_iu_command_catalog ✓ (~41) |
verified_live, 42 commands incl split/merge/add/remove/reorder/clone/create_file/rebuild_metadata_axes/render_file + iu.post_cut.axis_materialize |
Mutation verbs catalogued; read-only filter verbs (b/c) and sql_link verbs (f) absent | implementation dependency (U7) |
2. Additional live facts that change the operating view
- Gateway is enforced:
iu_create.gateway.mode=enforced,direct_insert_policy=block_after_guard,allowed_marker_values=fn_iu_create,fn_iu_apply_edit_draft,fn_iu_enact,fn_iu_structure_op. → any structure op must flow throughfn_iu_structure_opmarkers; direct INSERT is blocked. (Action: implementation dependency for d.) - Enact requires review:
iu_enact.allow_no_review_decision=false,iu_edit.policy.default_mode=require_review. → confirms d's review_decision dependency at the law layer, not just split/merge. (Action: implementation dependency, U3.) - Routing master/worker ON, delivery OFF:
routes_master_enabled=true,route_worker_enabled=true, butdelivery_enabled=false. → the worker runs but does not deliver; e needs a bounded delivery flip. (Action: implementation dependency, U6/U2.) - Event bus is hot:
event_outbox=148,076 /event_read=147,715 /event_pending=0. → e's events will join a busy bus; idempotency + scoped subscription matter.event_type_registry=31 types includesplit,merged,structure_*,piece_*,collection_*,staging.*but noiu.*per-IU trigger contract. (Action: implementation dependency, U6.) review_decisionlives incutter_governanceschema only (notpublic); read-only role is privilege-denied. → U3 must confirm its shape with a privileged read before wiring. (Action: survey again — narrow, inside U3.)
3. Reconciliation summary
- No artifact requires
blockpermanently. Two need a temporary block until a dependency lands:fn_iu_piece_split/fn_iu_piece_merge(block until U3 review_decision wiring). - One design-doc artifact (U11) absorbs all "design reconciliation later" items as a single surgical drift patch to the PG Maximization Map (
00-master-design-rev2.md§10) — re-label the verified_live artifacts above, renameiu_kg_edge→iu_relationin thekg_edge_refsderivation, and reclassify G2. This is explicitly not a redesign (prompt standard §4F/§4C). - No "survey again" at scale — only one narrow privileged read of
cutter_governance.review_decisioninside U3.
The net effect: the 4 Mothers design must not re-propose iu_three_axis_envelope, iu_metadata_tag*, iu_sql_link, iu_relation, iu_tree_path, route tables, or the split/merge functions — they exist. The design's job shrinks to the genuinely-paper binding layer (iu_process_binding, iu_assembly_slot_registry, iu_role_in_process) and the queue-hardening registries — exactly the U8/U9 backlog items.