feat(joinir): Phase 286 P3.1 - Pattern2 Plan line 完走(after_bb PHI)

Pattern2(Loop with Break)を Plan/Frag SSOT へ移行。

主な変更:
- Pattern2BreakPlan 追加(DomainPlan variant)
- extract_pattern2_plan() 実装(PoC サブセット厳守)
- normalize_pattern2_break() 実装(6-block CFG, 3 PHI)
- after_bb PHI が本質: carrier_out = PHI(header: carrier_current, break_then: carrier_break)
- router に Pattern2 追加(Pattern1 より前、より具体的)

テスト:
- Fixture B (break without update): PASS (出力 11)
- 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:
2025-12-26 05:56:30 +09:00
parent f76fb6cd3e
commit b235a5b6db
8 changed files with 658 additions and 12 deletions

View File

@ -1,25 +1,26 @@
# Pattern2 (Loop with Break) - Deferred to Future Phase
# Pattern2 (Loop with Break) - Phase 286 P3 で再開
**Date**: 2025-12-26
**Status**: Investigation complete, implementation deferred
**Status**: **IN PROGRESS** (Phase 286 P3)
## Summary
Pattern2 requires complex value reconnection at the exit point:
- break経路ではcarrier更新が実行されない
- after_bbPHI必要header経路 vs break経路の値選択
- **after_bbPHI 必要**header経路 vs break経路の値選択
- compose::loop_との統合、ExitKind::Break配線が必要
Pattern4 (Loop with Continue) PoC成功後の別タスクとして実装予定。
## 実装方針Phase 286 P3
## 再開条件
**after_bb PHI が本質**:
```
carrier_out = PHI(header: carrier_current, break_then: carrier_break)
```
以下が揃った時に Pattern2 Plan化を再開Phase番号は到達点に応じて後で確定
1. after_bb PHI 生成ロジックの設計完了
2. compose::loop_ との統合方針決定
3. ExitKind::Break wiring の実装
- break 前に update あり → carrier_break = 計算結果
- break 前に update なし → carrier_break = carrier_currentそのまま
→ 条件が揃ったら Phase 286 の次の空きスロットにエスカレート
**PoC サブセット厳守**: 取れない形は `Ok(None)` で legacy へFail-Fast 回帰防止)
## Reference