Files
hakorune/docs/development/current/main/phase61-5-summary.md
nyash-codex 0c23bc0788 docs: Phase 61-5 If PHI 棚卸し完了
Phase 61-5: If PHI 残りパターン棚卸しと削減計画策定

New docs:
- phase61-5-3-if-phi-priority-table.md: P1/P2/P3 優先度表
  - P1: 18関数(薄いラッパー削除候補)
  - P2: 5関数(JoinIR 拡張統合候補)
  - P3: 3関数(型システム統合待ち)

- phase61-5.4-next-phase-candidates.md: Phase 61-6 削減候補(3個)
  - Wave 1: set_if_context 削除(11行)、dev フラグ削除(15行)
  - Wave 2: A/B テスト削除(50行)
  - 合計削減見込み: 76行

- phase61-5-summary.md: Phase 61-5 全体サマリー
  - JoinIR カバー率: 完全28.6% + 部分57.1% = 85.7%
  - Phase 61-6 実装準備完了

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 15:57:14 +09:00

132 lines
5.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 61-5: If PHI 削減計画策定 - サマリー
## 目的
Phase 61-3 で JoinIR 経路による If-in-Loop PHI 生成が完全動作したため、既存の If PHI 関数群を整理し、削減計画を策定する。
---
## 実施内容4ステップ完了
### Phase 61-5.1: If PHI 関数リスト作成 ✅
- **成果物**: [phase61-5-1-if-phi-function-list.md](phase61-5-1-if-phi-function-list.md)
- **内容**: If PHI 関連の全関数を 3 カテゴリに分類
- PhiBuilderBox系: 4関数set_if_context, generate_if_phis 等)
- JoinIR Lowering系: 14関数try_lower_if_to_joinir, find_if_pattern 等)
- 補助系: 8関数IfPhiContext, PhiSpec, Conservative 等)
- **合計**: 26関数をリスト化
### Phase 61-5.2: JoinIR カバレッジ調査 ✅
- **成果物**: [phase61-5-2-if-phi-coverage-table.md](phase61-5-2-if-phi-coverage-table.md)
- **内容**: 各関数の JoinIR カバレッジを調査
- `in_loop`: 完全カバー済み18関数
- `partial`: 部分カバー5関数
- `none`: 未カバー3関数
- **重要発見**: If-in-Loop PHI は JoinIR で 100% カバー達成済み
### Phase 61-5.3: 優先度表作成 ✅
- **成果物**: [phase61-5-3-if-phi-priority-table.md](phase61-5-3-if-phi-priority-table.md)
- **内容**: カバレッジ調査を基に削減優先度を設定
- **P1最優先**: 18関数 - 薄いラッパー、既に JoinIR で完全カバー
- **P2次期候補**: 5関数 - JoinIR 拡張で統合可能
- **P3将来候補**: 3関数 - 型システム統合待ち
### Phase 61-5.4: 次フェーズ候補選定 ✅
- **成果物**: [phase61-5.4-next-phase-candidates.md](phase61-5.4-next-phase-candidates.md)
- **内容**: Phase 61-6 で削減する 3 個の候補を選定
1. **`set_if_context` 削除**P1, 11行- 最優先、最も安全
2. **If Lowering dev フラグ削除**P1, 15行- デフォルト有効化
3. **A/B テスト観察関数削除**P2, 50行- 最も削減効果が高い
---
## Phase 61-6 実装計画
### Wave 1: P1 薄いラッパー削除26行削減
1. `set_if_context` 削除
- `loop_builder/if_lowering.rs:259-262` で直接 `IfPhiContext::for_loop_body()` 呼び出しに置き換え
- リスク: 低
2. If Lowering dev フラグ削除
- `joinir_if_select_enabled()` チェック削除、デフォルト有効化
- リスク: 中(全テスト PASS 必須)
### Wave 2: P2 A/B テスト削除50行削減
1. `extract_phi_spec_from_builder`, `compare_and_log_phi_specs` 削除
- if_lowering.rs の A/B 比較ロジック削除
- if_phi_spec.rs は `compute_phi_spec_from_joinir()` のみ残す
- リスク: 低(観察専用関数)
### 期待削減効果
- **合計**: 76行削減
- **JoinIR SSOT**: PhiBuilderBox 経路の観察コード完全削除
- **カバー率**: If-in-Loop PHI 100% JoinIR 化完了
---
## 保留候補Phase 61-7+ で検討)
### P2 大型統合145行削減見込み
1. `compute_modified_names_if`: 変更変数検出を JoinIR に統合(~75行
2. `get_conservative_if_values`: incoming 値解決を PhiSpec に移行(~70行
### 保留理由
- Phase 61-6 では最小限の削除に集中(リスク最小化)
- P2 大型統合は Phase 61-7 で慎重に実装
---
## 技術的成果
### 1. If PHI 関数の完全インベントリ作成
- 26関数の全体像を把握
- 責務とカバレッジを明確化
- 削減優先度を定量的に決定
### 2. JoinIR カバレッジ 100% 達成確認
- If-in-Loop PHI は JoinIR で完全カバー
- PhiBuilderBox 経路は観察用のみ
- SSOT を JoinIR 側に完全移行済み
### 3. 段階的削減計画の確立
- P1薄いラッパー→ P2統合→ P3型システムの 3 段階
- Wave 126行→ Wave 250行→ Phase 61-7145行の段階的実装
- リスク最小化と削減効果のバランス
---
## 実装時の原則
1. **Fail-Fast**: エラーは即座に失敗、フォールバック禁止
2. **決定的順序**: BTreeSet/BTreeMap で ValueId 割り当ての決定性保証
3. **箱理論**: SSOT を JoinIR 側に寄せる、PhiBuilderBox は最小限に
4. **テスト**: 各ステップで全 JoinIR tests PASS を確認268 tests
5. **ドキュメント**: PHI_BOX_INVENTORY.md と CURRENT_TASK.md を更新
---
## 関連ドキュメント
### Phase 61-5 成果物
- [phase61-5-1-if-phi-function-list.md](phase61-5-1-if-phi-function-list.md)
- [phase61-5-2-if-phi-coverage-table.md](phase61-5-2-if-phi-coverage-table.md)
- [phase61-5-3-if-phi-priority-table.md](phase61-5-3-if-phi-priority-table.md)
- [phase61-5.4-next-phase-candidates.md](phase61-5.4-next-phase-candidates.md)
### 関連 Phase
- Phase 61-1: [if_phi_context.rs](../../../src/mir/join_ir/lowering/if_phi_context.rs) - If PHI Context 設計
- Phase 61-2: [if_phi_spec.rs](../../../src/mir/join_ir/lowering/if_phi_spec.rs) - PHI Spec 抽象化
- Phase 61-3: [if_in_loop/mod.rs](../../../src/mir/join_ir/frontend/ast_lowerer/if_in_loop/mod.rs) - If-in-Loop PHI Emitter
- Phase 61-4: [phase61-4-toplevel-if-design.md](phase61-4-toplevel-if-design.md) - Toplevel If PHI 設計
- PHI Inventory: [PHI_BOX_INVENTORY.md](../../../docs/private/roadmap2/phases/phase-30-final-joinir-world/PHI_BOX_INVENTORY.md)
---
## 次のステップ
### 即座に実装可能Phase 61-6
1. `set_if_context` 削除11行、リスク低
2. If Lowering dev フラグ削除15行、リスク中
3. A/B テスト観察関数削除50行、リスク低
### 合計削減見込み: 76行
### 期待成果: JoinIR SSOT 確立、PhiBuilderBox 観察コード完全削除