refactor(joinir): Phase 286 P3.2 cleanup + normalizer modularization
## Legacy Pattern5 削除 (488行) - pattern5_infinite_early_exit.rs 完全削除 - LOOP_PATTERNS テーブルからエントリ削除 - Plan extractor が SSOT ## Normalizer 分割 (3294行 → 12ファイル) - helpers.rs: 共通ヘルパー関数 - pattern*.rs: 各パターン専用ファイル - mod.rs: ディスパッチャ ## ドキュメント更新 - Phase 286 README: クリーンアップ完了・Fail-Fast方針記載 - Phase 287 README: 将来計画 quick smoke 154/154 PASS 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -455,6 +455,23 @@ preheader → header(PHI: i, carrier) → body(exit_cond)
|
||||
- Fixture B (break): PASS (出力 3)
|
||||
- Regression: quick smoke 154 PASS, 0 FAILED
|
||||
|
||||
**クリーンアップ完了(P3.2後)**:
|
||||
- **Legacy Pattern5 削除**: `pattern5_infinite_early_exit.rs` (488行) 完全削除
|
||||
- **Plan extractor が SSOT**: `extractors/pattern5.rs::extract_pattern5_plan()` が唯一の検出ロジック
|
||||
- **LOOP_PATTERNS テーブルからエントリ削除**: router.rs の legacy エントリ撤去
|
||||
|
||||
**Fail-Fast 方針(extract_pattern5_plan)**:
|
||||
| 状況 | 返り値 | 動作 |
|
||||
|------|--------|------|
|
||||
| PoC サブセット合致 | `Ok(Some(plan))` | Plan line 完走 |
|
||||
| PoC サブセット外(構造ミスマッチ) | `Ok(None)` | 他のパターンへ回す |
|
||||
| close-but-unsupported(例: return in legacy Pattern5) | `Err(msg)` | Fail-Fast(silent fallback 禁止) |
|
||||
|
||||
**設計決定**:
|
||||
- PoC サブセット外(複雑な loop(true))は `Ok(None)` で他へ回す
|
||||
- 既存 legacy Pattern5 の `break + continue` 必須形式は対象外(extractor でマッチしない)
|
||||
- 検出できたが未対応の場合は `Err` で明示的に失敗(Fail-Fast 原則維持)
|
||||
|
||||
## Acceptance(P0)
|
||||
|
||||
- 2本の lowering が "設計として" どこで 1 本に収束するかが明文化されている
|
||||
|
||||
Reference in New Issue
Block a user