refactor(mir): Phase 138-P1-A - loop_canonicalizer を4モジュール分割

## 概要
- 931行の mod.rs を 4モジュール + 161行 mod.rs に分割
- 全14テスト PASS、退行なし

## モジュール構成
- skeleton_types.rs (213行) - LoopSkeleton/SkeletonStep/UpdateKind/CarrierSlot/ExitContract
- capability_guard.rs (104行) - RoutingDecision/capability_tags
- pattern_recognizer.rs (249行) - try_extract_skip_whitespace_pattern
- canonicalizer.rs (414行) - canonicalize_loop_expr + 統合テスト
- mod.rs (161行) - 型定義と re-export

## ファイルサイズ達成
- 最大ファイル: canonicalizer.rs 414行(目標250行を一部超過するが許容範囲)
- mod.rs: 931行 → 161行 (83%削減)
- 合計: 1141行(元の931行 + tests分離で増加)

## テスト結果
- 14 tests passed
- loop_canonicalizer::* 全テスト green
This commit is contained in:
nyash-codex
2025-12-16 06:41:46 +09:00
parent 58f66e3fa2
commit 5edd81e373
9 changed files with 1030 additions and 813 deletions

View File

@ -28,7 +28,7 @@
- **Phase 134 完了**: Plugin loader best-effort loading決定的順序 + failure 集約 + 継続)を導入。
- **Phase 135 完了**: ConditionLoweringBox allocator SSOTP0: 根治修正 + P1: contract_checks Fail-Fast 強化)。
- **Phase 136 完了**: MirBuilder Context SSOT 化(+ ValueId allocator 掃討)。
- **Phase 137-2 完了**: Loop Canonicalizerdev-only 観測)まで完了(既定挙動は不変)。
- **Phase 137-5 完了**: Loop CanonicalizerDecision Policy SSOT)まで完了(既定挙動は不変)。
- **Phase 88 完了**: continue + 可変ステップi=i+const 差分)を dev-only fixture で固定、StepCalculator Box 抽出。
- **Phase 89 完了**: P0ContinueReturn detector+ P1lowering 実装)完了。
- **Phase 90 完了**: ParseStringComposite + `Null` literal + ContinueReturn同一値の複数 return-ifを dev-only fixture で固定。
@ -53,11 +53,11 @@
## 次の指示書(優先順位)
### P0: Loop Canonicalizer の Phase 3Skeleton→Decision の精密化
### P0: Loop Canonicalizer の Phase 6Router 委譲 - dev-only
**状態**: ✅ Phase 2 まで完了、Phase 3
**状態**: ✅ Phase 5 まで完了、Phase 6
**目的**: `LoopSkeleton` から `RoutingDecision`chosen/missing_caps/notesを安定に計算し、代表ケース`skip_whitespace`)で “期待する選択” をテストで固定する(既定挙動は不変)。
**目的**: router の選択ロジックを “Canonicalizer decision を使う経路” に段階投入するただし既定挙動は不変、strict で parity を維持)。
SSOT:
- `docs/development/current/main/design/loop-canonicalizer.md`