chore: Update docs/private submodule (Phase 36 final docs)

Phase 36 documentation completion:
- PHI_BOX_INVENTORY.md updated with reduction records
- README.md/TASKS.md completion status
- CURRENT_TASK.md Phase 36 section added

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-11-28 04:29:04 +09:00
parent e202b95555
commit 1beb9181cd
2 changed files with 61 additions and 1 deletions

View File

@ -1217,6 +1217,66 @@ LoopScopeShape → CaseAContext::from_scope() → lower_case_a_X_core() → Join
- チェックリスト進捗サマリー更新
- **効果**: 再発防止、開発者オンボーディング改善
---
### 1-00k. Phase 36 — PHI Box Midrange ReductionLoopSnapshotMergeBox & PhiBuilderBox**完了** 2025-11-29
**目的**
- Phase 35 での HIGH 安全度削除(`if_body_local_merge.rs` / `phi_invariants.rs` 計 430 行に続き、MEDIUM 安全度帯の PHI 箱のうち「Loop 側のみ」を縮退させて、JoinIR FrontendPhase 34 LoopScopeShape を PHI 生成 SSOT とする流れをさらに強化する。
- 行数削減だけでなく、「どの箱がどの責務を持つか」を明文化し、将来の Phase 37+If 側 PHI 削減 / Classifier Trio リファクタ)への足場を固める。
**実装内容サマリ**
1. **LoopSnapshotMergeBox の縮退dead code 100% 削除+純粋静的化)**
- 対象: `src/mir/phi_core/loop_snapshot_merge.rs`(元 470 行)。
- 完了内容:
- 未使用メソッド `merge_continue_for_header()` とそのテスト群を削除(本番 callsite 0
- PhiInputCollector 側に移譲済みの `optimize_same_value()` / `sanitize_inputs()` とテストを削除。
- 未使用フィールド `header_phi_inputs` / `exit_phi_inputs` と `new/Default` 実装を削除し、状態を一切持たない構造に整理。
- 本質ロジック `merge_exit_with_classification()` のみを残し、「Exit PHI マージの名前空間」としての静的ユーティリティに縮退。
- 結果:
- 行数: **470 → 363 行107 行削減, 22.8% reduction**
- Exit PHI Option CPHI pred mismatch 防止)ロジックは完全温存。
- Phase 36 専用テスト 3 本を追加し、Case A/B/Option C を包括的にカバー。
2. **PhiBuilderBox の責務マッピングLoop/If/Common の見える化)**
- 対象: `src/mir/phi_core/phi_builder_box.rs`。
- 実装方針:
- Loop 側専用の薄いラッパLoopPhiBuilderは作らず、既存の API をそのまま維持。
- 代わりにファイル先頭と各メソッドに「Responsibility: Loop-only / If-only / Common / Stub」といったマーカーコメントを追加。
- 主な分類:
- Loop-only: `set_if_context()`(ループ内 if の PHI 文脈設定)、`generate_loop_phis()`(将来の実装ターゲット)。
- If-only: `generate_if_phis()`, `compute_modified_names_if()`, `get_conservative_if_values()`。
- Common: `new()`, `generate_phis()`。
- 効果:
- PhiBuilderBox が「Loop PHI 本体」ではなく **if-in-loop PHI 用の共通箱** であることを明示。
- Phase 37 以降の If 側 PHI 削減のターゲット範囲がクリアになった。
3. **ドキュメント更新と PHI インベントリ反映**
- `docs/private/roadmap2/phases/phase-36-phi-midrange/README.md`:
- 目標 30% に対して実際は 22.8% 削減であること、行数よりも「dead code 全削除+本質ロジック温存」を優先した判断を明文化。
- LoopSnapshotMergeBox の役割を「Exit PHI マージ専用の静的ユーティリティ」として再定義。
- `docs/private/roadmap2/phases/phase-36-phi-midrange/TASKS.md`:
- 36-1.3/1.4, 36-6.1〜6.5 を含む全タスクを完了にマーク。
- `docs/private/roadmap2/phases/phase-30-final-joinir-world/PHI_BOX_INVENTORY.md`:
- LoopSnapshotMergeBox 行に Phase 36 の縮退内容dead code 削除+静的化)を追記し、将来 JoinIR/LoopScopeShape 側へ段階移行する計画を明示。
4. **テスト&リグレッション確認**
- LoopSnapshotMergeBox 単体テスト: 3/3 PASSsimple carrier / body-local internal skip / break-only loop
- LoopFormBuilder 周辺テスト: 14/14 PASS。
- Phase 34 JoinIR Frontend テストIf/Loop/Break/Continue: 6/6 PASS。
- `cargo build --release`: 警告ゼロで完了。
**成果と位置づけ**
- Phase 35-5HIGH 安全度 430 行削除に続き、Phase 36 で LoopSnapshotMergeBox を安全に 22.8% 縮退し、PHI レイヤの責務を「JoinIR + LoopScopeShape 側が SSOT、本レガシー箱は Exit PHI マージ専用の補助ユーティリティ」として再配置できた。
- PhiBuilderBox については Loop 側からの利用を「if-in-loop PHI 用」として位置づけ直し、実体削減は Phase 37+ の If 側 JoinIR 移行完了後に行う方針を固定した。
- これにより PHI 関連コードの総削減量は Phase 35-5430 行)+ Phase 36107 行)で **合計 537 行** に到達しつつ、Exit/If PHI の本質ロジックと JoinIR Frontend の安定性は維持されている。
**次のステップPhase 37+ の入口メモ)**
- Phase 37: If 側 PHI`conservative.rs` + `if_phi.rs`)の削減検討。
- 前提: Phase 33〜34 で整備した IfSelect/IfMerge lowering と JoinIR Frontend の適用範囲を広げること。
- Phase 38+: PhiBuilderBox 内部の実体削減Loop 側は完了済み / If 側の join 関数化)。
- Phase 39: Classifier TrioLoopVarClassBox / LoopExitLivenessBox / LocalScopeInspectorBoxを LoopScopeShape に吸収するアーキテクチャ作業。
**Phase 0-2 以前の実装内容**
1. **NamingBox decode 関数追加** (Step 1: commit a13f14ce)
- `decode_static_method(func_name: &str) -> Option<(&str, &str, usize)>`