9000x-onboarding · 06 — Piece Platform DOT gap matrix (3 missing: split, merge, supersede)
9000x — Piece Platform DOT gap matrix
Source: live inventory of cutter_agent.iu_core.dot_commands.DOT_COMMANDS
(25 commands) + the SQL function ledger at sql/iu-core/.
| Required operator command | Existing DOT | Backing fn ready? | Status |
|---|---|---|---|
| create_piece | dot_iu_create_piece |
fn_iu_create |
PRESENT |
| add_piece | dot_iu_add_piece |
fn_iu_collection_add_piece |
PRESENT |
| split_piece | — | — | MISSING (both) |
| merge_piece | — | — | MISSING (both) |
| remove_from_collection | dot_iu_remove_piece |
fn_iu_collection_remove_piece |
PRESENT (correct semantics: piece stays alive globally) |
| retire_piece | dot_iu_retire_piece |
fn_iu_structure_op_* + fn_iu_retire (mig 026) |
PRESENT |
| supersede_piece | — | fn_iu_supersede (mig 026) |
MISSING DOT command — fn exists |
| restore_piece | dot_iu_restore_piece |
fn_iu_piece_restore |
PRESENT |
| create_workflow_from_steps | dot_iu_create_workflow_from_steps |
fn_iu_compose |
PRESENT |
| create_file_from_piece_specs | dot_iu_create_file_from_pieces |
fn_iu_compose |
PRESENT |
Auxiliary existing commands: dot_iu_clone_piece, dot_iu_delete_piece_soft,
dot_iu_reorder_piece, dot_iu_checkpoint_collection,
dot_iu_render_file, dot_iu_validate_collection,
dot_iu_three_axis_envelope_{status,refresh,drift_check,trigger_status},
dot_iu_rebuild_metadata_axes, dot_iu_update_piece_metadata,
dot_iu_qdrant_collection_status, dot_iu_validate_collection,
dot_iu_external_healthcheck, dot_iu_healthcheck,
dot_iu_create_collection, dot_iu_directus_verify,
dot_iu_nuxt_config_verify.
Gap detail
supersede_piece — lowest-friction gap
Backing function public.fn_iu_supersede(p_old_iu_id, p_new_iu_id, p_actor, p_reason) is already live (mig 026, 8000x). What's missing is the
operator-facing DOT command. A single addition to _REGISTRY in
dot_commands.py + a builder lambda + 1-2 tests would close this gap.
Authority required: minor governance — the function is already promoted,
so this is purely an operator surface change.
split_piece — full author-mode required
Required substrate:
public.fn_iu_piece_split(p_src_iu_id uuid, p_children_jsonb jsonb, p_actor text, p_reason text) RETURNS jsonb— allocates N children viafn_iu_create, setsparent_piece_id = p_src_iu_idon each, retires the src viafn_iu_retire, advisory lock + atomic per-op rollback;- new DOT command
dot_iu_split_piecewired post-governance promotion; - new migration
027_piece_split.sqlfor the function; - author-mode + sandbox tests sandbox/280-style.
merge_piece — full author-mode required
Required substrate:
- new table
public.iu_merge_set(merge_set_id uuid PK, dst_iu_id uuid FK, src_iu_id uuid FK, created_at, actor, reason)— captures lineage; public.fn_iu_piece_merge(p_src_iu_ids uuid[], p_dst_spec jsonb, p_actor text, p_reason text)— authors new piece viafn_iu_create, supersedes each src viafn_iu_supersede(src, new_id, p_actor, 'merge'), writesiu_merge_setrows;- new DOT command
dot_iu_merge_piecewired post-governance promotion; - new migration
028_piece_merge.sql.
Author-mode scope (this macro)
Author-mode files only:
ops/piece-platform-dot-9000x/00-gap-matrix.md(this document’s repo twin);ops/piece-platform-dot-9000x/02-event-roadmap.md(Piece Event Runtime).
No DOT command added; no new SQL function; no migration; no governance manifest. The 9000x macro deliberately avoids opening a second governance window while the Qdrant onboarding window is still fresh and reversible.
Carry-forward ordering recommendation
dot_iu_supersede_piece(no SQL needed; just registry + builder).- Author
fn_iu_piece_split+ mig 027. - Author
fn_iu_piece_merge+ mig 028 +iu_merge_set. - Promote 027+028 via governance manifest (8000x-style package).
- Wire DOT commands for split/merge.
- Author Piece Event Runtime hooks (see report 07).