phase29ag(p0): use BoundaryCarrierLayout in coordinator remap

This commit is contained in:
2025-12-29 06:14:58 +09:00
parent 7a853bd5ed
commit 873c535d4f
2 changed files with 27 additions and 59 deletions

View File

@ -1,60 +1,30 @@
# Phase 29ag P0: Coordinator uses BoundaryCarrierLayout — Instructions
Status: Ready for execution
Scope: merge coordinator の param remap を BoundaryCarrierLayout に収束(仕様不変)
Scope: merge/coordinator の carrier 順序参照を BoundaryCarrierLayout に統一(仕様不変)
## Goal
JoinIR merge の `coordinator.rs` が持っている “carrier順序依存する remap” を、Phase 29af で確定した SSOT
`BoundaryCarrierLayout` 参照統一する。
- order の起点を boundarylayout SSOTへ寄せる
- `LoopHeaderPhiInfo::carrier_order` 依存を減らし、ズレの温床を減らす
`src/mir/builder/control_flow/joinir/merge/coordinator.rs` “carrier順序依存 remap” を
BoundaryCarrierLayout SSOT参照統一し、順序の二重管理を解消する。
## Non-goals
- 挙動変更release 既定挙動の変更)
- env var の追加
- contract_checks の追加P4 で十分)
## Target
`src/mir/builder/control_flow/joinir/merge/coordinator.rs`
対象箇所(代表):
- JoinIR main params の remapparam[i] を “carrier name” 経由で header PHI dst に写すところ)
- latch args の index 推測など、順序に依存するロジックがあれば同様に置き換え
- fixture/smoke の増加
## Implementation Steps
1) **BoundaryCarrierLayout を import**
- `use crate::mir::builder::control_flow::joinir::merge::boundary_carrier_layout::BoundaryCarrierLayout;`
1) coordinator の carrier order 参照を置換
- `loop_step` param の index → carrier 名の対応を BoundaryCarrierLayout から取得
- fallback の loop_var + carriers の順序も BoundaryCarrierLayout から取得
2) **carrier order の入力を boundary layout に切替**
2) 既存 SSOT への依存は維持
- header PHI の対応は LoopHeaderPhiInfo の carrier_phis を参照する
変更前(概念):
- `for (idx, carrier_name) in loop_header_phi_info.carrier_order.iter().enumerate() { ... }`
変更後(概念):
- `let layout = BoundaryCarrierLayout::from_boundary(boundary);`
- `for (idx, carrier_name) in layout.ordered_names().iter().enumerate() { ... }`
3) **header PHI dst は LoopHeaderPhiInfo から取得**
- `loop_header_phi_info.get_carrier_phi(carrier_name)` を使う
- “idx と name の整合” は P4 の contract_checks が strict/dev で検出する前提
4) **docs / comments**
- `coordinator.rs` の該当ブロックに “SSOT: BoundaryCarrierLayout” を明記(短く)
- `docs/development/current/main/phases/phase-29ag/README.md` の P0 に実装済みを追記(完了時)
- `docs/development/current/main/10-Now.md` を Phase 29ag に更新(完了時)
## Verification
## Verification (SSOT)
- `cargo build --release`
- `./tools/smokes/v2/run.sh --profile quick`
- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
## Acceptance Criteria
- 回帰パックが PASS のまま(仕様不変)
- coordinator の order 参照が boundary SSOT に寄るreview で確認可能)