40000x · 04 — Final Product Factory Readiness Matrix
Snapshot of the IU Core product-factory surface after 40000x. "LIVE_READY"
means the substrate is durably present in prod, has been exercised by at
least one prior macro, and is exposed to the operator via DOT.
"CARRY-FORWARD" means it is a deliberate open item for a future macro.
Lifecycle
| Capability |
State |
Surface |
Last proven |
| Piece create |
LIVE_READY |
dot_iu_create_piece → fn_iu_create |
240x |
| Piece soft-delete / restore |
LIVE_READY |
dot_iu_delete_piece_soft / dot_iu_restore_piece |
540x |
| Piece supersede |
LIVE_READY |
dot_iu_supersede_piece → fn_iu_supersede |
8000x (durable) / 10000x (substrate) |
| Piece split |
LIVE_READY |
dot_iu_split_piece → fn_iu_piece_split |
10000x |
| Piece merge |
LIVE_READY |
dot_iu_merge_piece → fn_iu_piece_merge |
10000x |
| Piece retire (deprecate) |
LIVE_READY |
dot_iu_retire_piece → fn_iu_structure_op_* |
540x |
| Piece clone |
LIVE_READY |
dot_iu_clone_piece |
540x |
| Piece metadata refresh |
LIVE_READY |
dot_iu_update_piece_metadata / dot_iu_rebuild_metadata_axes |
540x |
Collections / templates
| Capability |
State |
Surface |
Last proven |
| Collection create |
LIVE_READY |
dot_iu_create_collection |
240x |
| Collection compose (file / workflow) |
LIVE_READY |
dot_iu_create_file_from_pieces / dot_iu_create_workflow_from_steps → fn_iu_compose |
11000x / 12000x |
| Piece membership add / remove / reorder |
LIVE_READY |
dot_iu_add_piece / dot_iu_remove_piece / dot_iu_reorder_piece |
540x |
| Collection render / validate / checkpoint |
LIVE_READY |
dot_iu_render_file / dot_iu_validate_collection / dot_iu_checkpoint_collection |
540x |
| Template mark |
LIVE_READY |
dot_iu_register_template → fn_iu_collection_mark_as_template |
15000x (mig 031) |
| Template instance record |
LIVE_READY |
dot_iu_record_template_instance |
15000x (mig 031) |
| Template version register / retire |
LIVE_READY |
dot_iu_register_template_version / dot_iu_retire_template_version |
18000x (mig 032) |
| Auto-instantiate from event |
LIVE_READY (productized 40000x) |
dot_iu_auto_instantiate_from_event |
40000x (DOT) + 25000x (mig 033 + 13 durable rows) |
| Auto-instantiate actor-rollback |
LIVE_READY (productized 40000x) |
dot_iu_auto_instantiate_rollback_by_actor |
40000x (DOT) + 25000x (mig 033, dry-run-proven) |
| Manifest refresh + digest |
LIVE_READY |
fn_iu_collection_manifest_refresh |
12000x |
Events / runtime
| Capability |
State |
Notes |
| Composer event family |
LIVE_READY |
runtime/260; delayed lane |
| Piece event runtime substrate |
LIVE_READY |
mig 029; gate-bound piece_event_runtime.emit_enabled + dry_run_only |
event_outbox.event_domain='piece' |
LIVE_READY |
mig 030 ALTER CHECK |
event_type=iu.template.instance_auto_composed |
LIVE_READY |
inert / no route attached (mig 033) |
| Cross-template observability views |
LIVE_READY |
0 unversioned + 0 orphan + 0 digest drift (25000x) |
| Live external delivery |
CARRY-FORWARD |
gates delivery_enabled + delivery_live_routes remain inert |
| Internal event → orchestrator → instance proof |
LIVE_READY (sandboxed) |
25000x C1–C12 + bulk loop |
| Capability |
State |
Notes |
| Three-axis envelope (table + view) |
LIVE_READY |
DIEU axes 27/23/36 invariant |
| Envelope manual refresh |
LIVE_READY |
dot_iu_three_axis_envelope_refresh |
| Envelope auto-refresh on auto-compose |
CARRY-FORWARD (D) |
gate three_axis_auto_refresh_enabled currently false; design in 06-carry-forward.md |
| Vector boundary healthcheck |
LIVE_READY |
mig 020 / fn fixed in 9000x |
| 8-surface healthcheck |
LIVE_READY |
all GREEN on baseline |
| Mac cron healthcheck |
LIVE_READY |
local crontab, exit=0 |
| VPS systemd monitoring |
CARRY-FORWARD (G) |
package outline in 06-carry-forward.md |
DOT / governance
| Capability |
State |
Notes |
| DOT command catalog |
LIVE_READY |
dot_iu_command_catalog 26 rows (40000x 24 → 26) |
| Run audit |
LIVE_READY |
dot_iu_command_run (mig 018) — column is command_name |
| DOT conformance D9 |
LIVE_READY |
181 objects 7/7 PASS — unchanged this macro |
| R280 catalog ↔ Python mirror lock |
LIVE_READY |
test_iu_core_540x_operator_runtime.py — 26 / 26 / "= 26" |
cutter_governance.review_decision integration |
LIVE_READY |
mig 008 / review_decision_id keyed |
Retention / append-only logs
| Capability |
State |
Notes |
| Retention substrate |
LIVE_READY |
iu_core_retention_policy + fn_iu_core_retention_cleanup + view (mig 025) |
| Default retention policies (3 rows) |
LIVE_READY |
trigger_log / refresh_log / dot_iu_command_run |
| Auto-instantiate log retention |
LIVE_READY (policy only) |
40000x mig 035 — 4 rows, dry-run=0 eligible, gate stays false |
| Retention enable |
NOT_ENABLED |
gate iu_core.retention_enabled=false — requires future authorization |
Per-target actor_column extension |
CARRY-FORWARD |
needed only if a log's actor column is not literal actor AND needs actor-scoped retention through central fn |
UI / external
| Capability |
State |
Notes |
| Directus envelope read |
LIVE_READY |
dot_iu_directus_verify |
| Nuxt env consistency |
LIVE_READY (verify only) |
dot_iu_nuxt_config_verify; container not redeployed |
| Qdrant collection registry |
LIVE_READY |
iu_core_iu_chunks=149 unchanged |
| Qdrant onboarding driver |
LIVE_READY |
sibling-container pattern; not re-run this macro |
| External healthcheck aggregate |
LIVE_READY |
dot_iu_external_healthcheck |
| PR #669 |
OPEN — UNTOUCHED |
per authority boundary |
| Nuxt deploy |
LIVE — UNREDEPLOYED |
per authority boundary |
Rollback / reversibility (catalog summary)
| Surface |
Reversal |
Latest validated |
| Migration 034 (DOT registration) |
rollback/034_… — REFUSED-guarded on dot_iu_command_run |
40000x (26 → 24 → 26) |
| Migration 035 (retention policy) |
rollback/035_… — DELETE one row; gate untouched |
40000x (4 → 3 → 4) |
| Migration 033 (auto-instantiate substrate) |
rollback/033_… — REFUSED-guarded on non-empty log |
25000x |
| Migration 032 (template versioning) |
rollback/032_… |
18000x |
| Migration 031 (template registry) |
rollback/031_… |
15000x |
| Migration 030 (event_outbox CHECK) |
rollback/030_… |
11000x |
| Migration 029 (piece event runtime) |
rollback/029_… |
11000x |
| Migration 028 (piece merge) |
rollback/028_… |
10000x |
| Migration 027 (piece split) |
rollback/027_… |
10000x |
| Migration 026 (supersede + retire fns) |
rollback/026_… |
8000x |
| Migration 025 (retention substrate) |
rollback/025_… |
5000x |
| Auto-instantiate output (actor-scoped) |
dot_iu_auto_instantiate_rollback_by_actor — dry_run default |
25000x (dry-run); usable from 40000x as governed DOT |
Operator checklist (post-040000x)
- Verify
dot_iu_command_catalog count = 26.
- Verify
iu_core_retention_policy count = 4.
- Verify all 11 IU Core write gates inert.
- Use the new DOT commands via the Python registry —
python -m cutter_agent.iu_core.dot_commands list should show 34 entries.
- Do NOT open
iu_core.retention_enabled until a future macro is authorized for it.
- Do NOT merge PR #669 or redeploy Nuxt until external authority is reconfirmed.
Remaining work after this macro
See 06-carry-forward.md for the explicit, packageable D / E / F / G outline.