Files
hakorune/docs/development/current/main/phases/phase-29af

Phase 29af P0: Pattern2 Boundary Hygiene (SSOT)

Goal: Pattern2 の boundary 情報の歪みを SSOT で整理し、将来の回帰を防ぐ(仕様不変)。

Boundary Contract (SSOT)

  • Header PHI 対象:
    • carrier_info の carriersLoopState + 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::FromHosthost_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