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

8.2 KiB
Raw Blame History

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):

// 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):

// ⚠️ 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):

// 現在: 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 提案):

// 移行後: 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 完了後