36 lines
1.4 KiB
Markdown
36 lines
1.4 KiB
Markdown
|
|
# 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`
|