Phase 29af P0: Pattern2 Boundary Hygiene (SSOT)
Goal: Pattern2 の boundary 情報の歪みを SSOT で整理し、将来の回帰を防ぐ(仕様不変)。
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 - exit_bindings 収集:
src/mir/builder/control_flow/joinir/merge/exit_line/meta_collector.rs - latch 記録:
src/mir/builder/control_flow/joinir/merge/rewriter/{tail_call_policy,latch_incoming_recorder}.rs
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