KB-30A7
10000x · 02 — dot_iu_supersede_piece DOT wrapper
2 min read Revision 1
iu-corev0.610000xdot-commandsupersedelifecyclegovernance
10000x · 02 — dot_iu_supersede_piece DOT wrapper
What was added
dot_iu_supersede_piece — governance-bound DOT wrapper for the existing fn_iu_supersede primitive (migration 026, 8000x). Sole canonical path for the FSM transition enacted -> superseded.
Params
| Param | Required | Note |
|---|---|---|
canonical_address |
yes | the enacted IU's address |
actor |
yes | non-empty |
review_decision_id |
yes | sovereign decision UUID |
change_set_id |
no | optional cut_change_set UUID |
reason |
no | free text |
tool_revision |
no | toolchain version tag |
superseded_by_canonical_address |
no | optional pointer to replacement |
dry_run |
no | bool, defaults false |
Python wrapper is fail-closed: cmd.build() raises ValueError if any required param missing. Verified by tests/test_iu_core_10000x_piece_lifecycle.py::TestDotCommandRegistry.
Rendered SQL (example)
SELECT public.fn_iu_supersede(
'D38-DIEU28-S1', 'iu-core-10000x/bounded-proof',
'cf000008-5776-0276-f476-208ec026fd1f',
NULL, '10000x bounded proof', NULL, NULL, true);
Live dry-run proof
status = plan_ok on D38-DIEU28-S1. Pre/post-state identical.
Reversibility
FSM superseded -> enacted is NOT a legal transition. The reversal path is to create a NEW replacement IU via the birth gate. The wrapper's reversal field documents this.
Catalog registration
runtime/280_operator_runtime_catalog_seed.sql:
('dot_iu_supersede_piece', 'lifecycle', true, true, '{fn_iu_supersede}')
R280 all_resolvable=t — fn_iu_supersede resolves in pg_proc.