KB-477F
dot-iu-cutter v0.2 — P0-2 BR-6 Invariant Integration (2026-05-16)
7 min read Revision 1
dot-iu-cutterdieu44v0.2p0-2br-6invariantsdesign
dot-iu-cutter v0.2 — P0-2 BR-6 Invariant Integration
document_path: knowledge/dev/laws/dieu44-trien-khai/v0.2-design/dot-iu-cutter-v0.2-p0-2-br-6-invariant-integration-2026-05-16.md
revision: r1
date: 2026-05-16
author: Agent (Claude Code CLI, Opus 4.7 1M)
phase: v0.2 — P0-2 manifest DESIGN (LOGICAL ONLY)
no_ddl_written: TRUE
Maps the six BR-6 binding invariants (GPT BR-6 absorption review, 2026-05-16) into the P0-2 manifest design: what each invariant requires the design to encode now, what is deferred to P1, and what the design review must verify.
§1 — Invariant → Design Mapping
INV-1 — canonical_address immutable; split/merge coins new addresses; alias trail mandatory
- Encoded now: no manifest column ever writes
public.tac_logical_unit.canonical_address.originblocks carry NULLproposed_canonical_address(predecessor keeps its live canonical);resultblocks carry the proposed new address only. - Deferred to P1: the executor coins the address (per GOV-1) and emits the alias trail.
- Review must verify: there is no path in the design by which the manifest mutates a
live canonical;
proposed_canonical_addressis clearly proposal-only.
INV-2 — successor cannot gain higher authority without explicit re-enactment
- Encoded now:
proposed_authorityis a snapshot field, not an authority-grant mechanism. No manifest column elevates livetac_logical_unit.authority. - Deferred to P1 / GOV-2: the actual inheritance/escalation rule (GOV-2, unresolved) and its enforcement.
- Review must verify:
proposed_authoritycannot, by design, write back to the live authority column; escalation requires the review gate (INV-5) + re-enactment path.
INV-3 — successors inherit canonical_address_format_version; no downgrade
- Encoded now:
canonical_address_format_versionis not a writable manifest column — modelled as an inheritance relation only (unit-block design §8). - Deferred to P1: any format-version evolution is a separate governed path.
- Review must verify: the design exposes no field that could record a downgraded format version on a successor.
INV-4 — topology change emits alias rows at P1 enactment
- Encoded now: the manifest records enough to derive alias rows (origin's live
canonical via
target_unit_id, result'sproposed_canonical_address,operation_kind,block_role) without any manifest↔alias coupling. - Deferred to P1: the actual alias-row emission (alias table stays empty).
- Review must verify: there is no manifest→
canonical_address_aliasFK/column; the derivation inputs are all present.
INV-5 — split/merge is review-gated
- Encoded now:
manifest_envelope.escalation_ref(soft →decision_backlog_entry)- the
statuslifecycle whose onlyunder_review → acceptedpath is via a review decision. The manifest cannot self-accept.
- the
- Deferred to P0-6/P1:
review_decisionitself (dependency note only). - Review must verify: no status transition in the design bypasses the review hook.
INV-6 — metadata mutation flows through cut_change_set + verify_result only
- Encoded now:
manifest_envelope.cut_change_set_ref(soft) names the change-set; the manifest performs no mutation and stores no execution-state. - Deferred to P1: actual
cut_change_setapplication +verify_resultproof. - Review must verify: the manifest has no column that records or performs an out-of-band metadata mutation (no "applied"/"edges_written" flags).
§2 — What Must Be Encoded Now (P0-2)
encoded_now:
- operation_kind {first_cut,split,merge} (BR-6 discriminator)
- block_role {origin,result} (pre/post-image; INV-1/2/4)
- source_span mandatory (span algebra representable)
- proposed_canonical_address / proposed_authority (proposal-only; INV-1/2)
- escalation_ref soft (INV-5 gate hook)
- cut_change_set_ref soft (INV-6 change-set naming)
- candidate_edges JSONB (edge-redistribution INTENT)
- render_order column (ordering carried)
- soft uuid refs only + single in-schema FK (decoupled, additive)
§3 — What Is Deferred to P1
deferred_to_P1:
- address coining + alias-row emission (INV-1/INV-4)
- authority inheritance enforcement (INV-2; rule = GOV-2)
- format-version evolution path (INV-3)
- review_decision table + actual review (INV-5; P0-6)
- cut_change_set application + verify_result proof (INV-6)
- edge redistribution executor, birth/lifecycle writes, hierarchy re-parenting,
render_order recompute
- span partition/coverage validation (application-layer/dry-run at P1)
§4 — What the Design Review Must Verify
review_checklist:
- no manifest column mutates a live SSOT (canonical_address / authority / format_version)
- no manifest↔canonical_address_alias coupling exists
- escalation gate cannot be bypassed by any status transition
- no out-of-band mutation/execution-state column on the manifest
- all cross-schema refs are soft uuid; only one in-schema FK (block→envelope)
- JSONB fields carry INTENT only; no edge tables introduced
- GOV-1/2/3-dependent columns are present but their SEMANTICS remain open
(consistent with DDL-freeze gate)
§5 — How P0-2 Avoids Overbuilding Split/Merge Execution
- Manifest = proposal/grouping layer only; executor = P1. No execution-state, no triggers, no edge tables, no alias writers, no lifecycle/birth writers.
- Edge/report concerns captured as JSONB intent, not relational machinery.
- Tables created empty; rollback =
DROP TABLE(v0.1 precedent). - The forward-compat test: P1 must be able to enact a split/merge without any P0-2 schema change — satisfied by operation_kind + block_role + source_span + soft refs + candidate_edges. Anything beyond that is deliberately not built here.
§6 — Hard Boundaries
no_DDL_written: TRUE
no_split_merge_execution_designed: TRUE
no_alias_coupling: TRUE
GOV_self_closed: FALSE
output_form: p0_2_br_6_invariant_integration
End of BR-6 invariant integration.