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

Phase 29af P0: Pattern2 Boundary Hygiene (SSOT)

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

Status

  • P0: COMPLETEcommit: 19f2c6b7f
  • P1: COMPLETEmerge contract_checks への集約)

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

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