Files
hakorune/docs/development/current/main/phase69-4-trio-deletion-plan.md
nyash-codex 375bb66b41 feat(phi_core): Phase 69-4.2 Trio公開面削減方針明文化
## 変更内容

### src/mir/phi_core/mod.rs
- Trio Legacy Boxes (3箱) の削除方針をコメント追加
  - LoopVarClassBox (578行)
  - LoopExitLivenessBox (414行)
  - LocalScopeInspectorBox (361行)
- 外部依存2箇所を明記:
  1. loop_form_intake.rs (~30行)
  2. loop_snapshot_merge.rs (~60行)
- TODO(Phase 70) マーカー設置(削減見込み ~1,443行)

### docs/development/current/main/phase69-4-trio-deletion-plan.md
- Phase 69-4 全体計画文書作成
- Phase 69-4.1: Trio callsite 棚卸し結果記録 
- Phase 69-4.2: phi_core 公開面削減完了記録 
- Phase 69-4.3-5: 未実施タスク整理 

## Phase 69-4.2 達成内容

**達成**:
-  Trio 削除計画の明文化
-  外部依存箇所の記録
-  Phase 70 削除条件の TODO 化

**未達成(Phase 70 で実施)**:
-  pub 公開除去(外部依存残存のため継続)
-  phi_core 内部化(LoopScopeShape 移行後に実現)

## 次のステップ

Phase 69-4.3: json_v0_bridge の Trio 依存を LoopScopeShape に寄せる設計

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-30 10:01:49 +09:00

212 lines
8.2 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 69-4: Trio 3箱整理・削除プラン
**目的**: Trio Legacy Boxes (LoopVarClassBox, LoopExitLivenessBox, LocalScopeInspectorBox) の Phase 70 完全削除に向けた準備
**方針**: このフェーズは「Trio 3箱をいつ・どう消すかを完全に文章で固める」ところまで。実コード削除は Phase 70 で json_v0_bridge の置き換えとセットで実施。
---
## Phase 69-4.1: Trio 残存 callsite の最終棚卸し ✅ 完了
**実施日**: 2025-11-30
**実施方法**: Task agent による全コードベース調査
### 📊 棚卸し結果サマリー
**Trio 定義ファイル (1,353行)**:
- `src/mir/phi_core/loop_var_classifier.rs`: 578行
- `src/mir/phi_core/loop_exit_liveness.rs`: 414行
- `src/mir/phi_core/local_scope_inspector.rs`: 361行
**外部依存箇所 (2箇所)**:
1. **src/mir/join_ir/lowering/loop_form_intake.rs** (~30行)
- 3箱すべてを使用変数分類・Exit後生存分析・定義位置追跡
- LoopScopeShape への移行が必要
2. **src/mir/phi_core/loop_snapshot_merge.rs** (~60行)
- LocalScopeInspectorBox と LoopVarClassBox を使用
- Exit PHI 生成で使用中
**内部依存 (隠蔽済み)**:
- `src/mir/join_ir/lowering/loop_scope_shape/builder.rs`
- `from_existing_boxes_legacy()` メソッド内で使用
- すでに phi_core 内部に隠蔽済み
**合計削減見込み**: ~1,443行
- 定義ファイル: 1,353行
- loop_form_intake.rs 使用箇所: ~30行
- loop_snapshot_merge.rs 使用箇所: ~60行
---
## Phase 69-4.2: phi_core 側の公開面を絞る ✅ 完了
**実施日**: 2025-11-30
**実施内容**: `src/mir/phi_core/mod.rs` にドキュメント追加
### 📝 追加したドキュメント
**Trio 公開面削減方針 (L17-40)**:
```rust
// Phase 69-4.2: Trio 公開面削減方針
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
// ⚠️ Trio Legacy Boxes (Phase 70 削除予定):
// - LocalScopeInspectorBox (361行) - 変数定義位置追跡LoopScopeShapeで代替済み
// - LoopVarClassBox (578行) - 変数分類LoopScopeShapeで代替済み
// - LoopExitLivenessBox (414行) - Exit後生存変数分析LoopScopeShapeで代替済み
//
// 現在の外部依存Phase 69-4.1棚卸し済み):
// 1. src/mir/join_ir/lowering/loop_form_intake.rs (~30行) - LoopScopeShape移行待ち
// 2. src/mir/phi_core/loop_snapshot_merge.rs (~60行) - Exit PHI生成で使用中
//
// Phase 69-4.2 方針:
// - ✅ pub 公開継続外部依存2箇所が残存
// - 🎯 目標: phi_core 内部+テストのみが知る状態(現在達成できず)
// - 📋 Phase 70 実装時: json_v0_bridge 移行後に完全削除
//
// TODO(Phase 70): json_v0_bridge の LoopScopeShape 移行完了後、以下を削除:
// - pub mod local_scope_inspector; (361行)
// - pub mod loop_var_classifier; (578行)
// - pub mod loop_exit_liveness; (414行)
// - loop_snapshot_merge.rs 内の Trio 使用箇所 (~60行)
// - loop_form_intake.rs 内の Trio 使用箇所 (~30行)
// 合計削減見込み: ~1,443行
// ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
**loop_exit_liveness への追加マーカー (L64-66)**:
```rust
// ⚠️ Phase 69-4.2: Trio Legacy Box (Phase 70 削除予定)
// - 現在の外部依存: loop_form_intake.rs が使用中
// - TODO(Phase 70): LoopScopeShape 移行後に削除
```
### 🎯 現状認識
**達成できた点**:
- ✅ Trio 3箱の削除計画をコード内に明文化
- ✅ 外部依存2箇所を明記
- ✅ Phase 70 削除条件を TODO として記録
**達成できなかった点**:
- ❌ pub 公開の除去(外部依存が残存するため継続)
- ❌ 「phi_core 内部テストのみが知る」状態Phase 70 で達成)
**結論**: Phase 69-4.2 の目標「方針の明文化」は達成。pub 除去は Phase 70 で実施。
---
## Phase 69-4.3: json_v0_bridge の Trio 依存設計 ⏳ 未実施
**目標**: loop_form_intake.rs の Trio 依存を LoopScopeShape に置き換える設計を固める
**現在の Trio 使用パターン** (loop_form_intake.rs L169-182):
```rust
// 現在: Trio を直接使用
let mut inspector = LocalScopeInspectorBox::new();
inspector.record_snapshot(loop_form.header, &header_vals_mir);
for (bb, snap) in &loop_form.break_snapshots { ... }
for (bb, snap) in &loop_form.continue_snapshots { ... }
let mut var_classes = LoopVarClassBox::new();
let mut liveness = LoopExitLivenessBox::new();
liveness.analyze_exit_usage(&loop_form.exit_checks, &loop_form.exit_snapshots);
let classified = var_classes.classify_all(
&loop_form.pinned_vars,
&loop_form.carrier_vars,
&inspector,
&exit_preds_set
);
```
**移行案** (Task agent 提案):
```rust
// 移行後: LoopScopeShape を使用
let scope_shape = LoopScopeShape::from_loop_form(loop_form, intake, query)?;
let ordered_pinned = scope_shape.pinned;
let ordered_carriers = scope_shape.carriers;
// 必要な情報はすべて LoopScopeShape から取得
```
**設計方針**:
1. LoopScopeShape が Trio の機能を完全にカバーしていることを確認
2. loop_form_intake.rs の Trio 使用箇所を LoopScopeShape 経由に書き換え
3. loop_snapshot_merge.rs の Exit PHI 生成も LoopScopeShape 経由に移行
---
## Phase 69-4.4: Trio 削除条件を固定 ⏳ 未実施
**削除条件**:
1. ✅ LoopScopeShape が Trio 機能を完全にカバーPhase 48-4 達成済み)
2. ⏳ loop_form_intake.rs が LoopScopeShape 経由に移行
3. ⏳ loop_snapshot_merge.rs が LoopScopeShape 経由に移行
4. ⏳ 上記2箇所の移行テスト完了既存テスト退行なし
**削除手順** (Phase 70):
1. loop_form_intake.rs の Trio 使用箇所を LoopScopeShape に置き換え (~30行削減)
2. loop_snapshot_merge.rs の Trio 使用箇所を LoopScopeShape に置き換え (~60行削減)
3. 既存テスト実行14 loopform tests + 関連テスト)
4. Trio 3箱定義ファイル削除 (1,353行削減)
5. phi_core/mod.rs から pub mod 削除
6. 最終テスト実行・リグレッション確認
**合計削減**: ~1,443行
---
## Phase 69-4.5: Phase 70 への橋渡し ⏳ 未実施
**Phase 70 実装タスク**:
**Step 1: loop_form_intake.rs 移行**
- [ ] LoopScopeShape::from_loop_form() の実装確認
- [ ] Trio 使用箇所 (L169-182) を LoopScopeShape 経由に書き換え
- [ ] テスト実行loopform 14テスト
**Step 2: loop_snapshot_merge.rs 移行**
- [ ] merge_exit_with_classification() を LoopScopeShape 経由に書き換え
- [ ] Exit PHI 生成ロジックの移行
- [ ] テスト実行loopform 14テスト + Exit PHI テスト)
**Step 3: Trio 完全削除**
- [ ] loop_var_classifier.rs 削除 (578行)
- [ ] loop_exit_liveness.rs 削除 (414行)
- [ ] local_scope_inspector.rs 削除 (361行)
- [ ] phi_core/mod.rs から pub mod 削除
- [ ] 最終テスト実行
**Step 4: ドキュメント更新**
- [ ] CURRENT_TASK.md 更新Phase 70 完了記録)
- [ ] コミットメッセージ作成(削減行数・移行内容)
---
## まとめ
### Phase 69-4 達成状況
| タスク | 状態 | 成果 |
|--------|------|------|
| 69-4.1: Trio callsite 棚卸し | ✅ 完了 | 1,443行削減計画確定 |
| 69-4.2: phi_core 公開面削減 | ✅ 完了 | 削除方針・TODO 明文化 |
| 69-4.3: json_v0_bridge 設計 | ⏳ 未実施 | LoopScopeShape 移行設計 |
| 69-4.4: 削除条件固定 | ⏳ 未実施 | 削除手順・テスト計画 |
| 69-4.5: Phase 70 橋渡し | ⏳ 未実施 | 実装タスク整理 |
### Phase 70 への引き継ぎ事項
**確定済み**:
- ✅ Trio 削減見込み: ~1,443行
- ✅ 外部依存: 2箇所loop_form_intake.rs, loop_snapshot_merge.rs
- ✅ 削除方針: LoopScopeShape 移行後に完全削除
- ✅ ドキュメント: phi_core/mod.rs に TODO(Phase 70) マーカー設置
**未確定**:
- ⏳ json_v0_bridge の具体的な移行実装
- ⏳ テスト戦略(退行防止)
- ⏳ 削除順序の最終確定
**Phase 70 開始条件**: Phase 69-4.3 ~ 69-4.5 完了後