Phase 29af P0: Pattern2 Boundary Hygiene (SSOT)
Goal: Pattern2 の boundary 情報の歪みを SSOT で整理し、将来の回帰を防ぐ(仕様不変)。
Status
- P0: ✅ COMPLETE(commit:
19f2c6b7f) - P1: ✅ COMPLETE(merge
contract_checksへの集約)
Boundary Contract (SSOT)
- Header PHI 対象:
carrier_infoの carriers(LoopState + ConditionOnly + LoopLocalZero)
- Exit reconnection 対象:
- LoopState のみ(ConditionOnly は exit_bindings に入れない)
- Host binding 対象:
CarrierInit::FromHostのみ(BoolConst / LoopLocalZero は host slot 不要)
Fail-Fast Rules
- exit_bindings の
carrier_name重複は禁止(debug_assert) CarrierInit::FromHostのhost_id=0は Fail-Fast
Entry Points
- boundary 構築:
src/mir/builder/control_flow/joinir/patterns/pattern2_steps/emit_joinir_step_box.rs - header PHI 事前構築:
src/mir/builder/control_flow/joinir/merge/header_phi_prebuild.rs
P1: Contract Checks (merge 入口)
P0 で確定した boundary hygiene を、merge 入口の contract_checks に集約する(仕様不変)。
- 実装:
src/mir/builder/control_flow/joinir/merge/contract_checks/boundary_hygiene.rs - 配線:
src/mir/builder/control_flow/joinir/merge/contract_checks/boundary_creation.rs - 実行条件:
joinir_strictまたはjoinir_devのみ Fail-Fast
Verification
cargo build --release./tools/smokes/v2/run.sh --profile quick./tools/smokes/v2/run.sh --profile integration --filter "phase29ab_pattern2_"./tools/smokes/v2/run.sh --profile integration --filter "phase1883_"
Notes
- Merge 側の Header PHI Entry/Latch contract は Phase 29ae で SSOT 化済み:
docs/development/current/main/phases/phase-29ae/README.md