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>
953 B
953 B
Pattern2 (Loop with Break) - Phase 286 P3 で再開
Date: 2025-12-26 Status: IN PROGRESS (Phase 286 P3)
Summary
Pattern2 requires complex value reconnection at the exit point:
- break経路ではcarrier更新が実行されない
- after_bb に PHI 必要(header経路 vs break経路の値選択)
- compose::loop_との統合、ExitKind::Break配線が必要
実装方針(Phase 286 P3)
after_bb PHI が本質:
carrier_out = PHI(header: carrier_current, break_then: carrier_break)
- break 前に update あり → carrier_break = 計算結果
- break 前に update なし → carrier_break = carrier_current(そのまま)
PoC サブセット厳守: 取れない形は Ok(None) で legacy へ(Fail-Fast 回帰防止)
Reference
- joinir-architecture-overview.md - Pattern2の制約記載
- Phase 286 README - Phase全体の進捗