feat(joinir): Phase 286 P3.2 - Pattern5 Plan line (loop(true) + early exit)

- Pattern5InfiniteEarlyExitPlan (Return/Break variants)
- extract_pattern5_plan() for loop(true) literal only
- normalize_pattern5_return(): 5 blocks CFG (header→body→found/step)
- normalize_pattern5_break(): 6 blocks CFG with carrier PHI
- NormalizationPlanBox exclusion for Pattern5-style loops
- Fixtures: phase286_pattern5_{return,break}_min.hako
- 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 09:56:34 +09:00
parent ec55cce380
commit 22945c190c
12 changed files with 963 additions and 16 deletions

View File

@ -1,8 +1,8 @@
# Self Current Task — Now (main)
## Current Focus: Phase 286 P2.7 (Plan line guardrails)
## Current Focus: Phase 284 P0 (design-first) / Post Phase 286
Pattern3 まで Plan line で完走し、legacy fallback を撤去できた。次は「同じ落とし穴を二度踏まない」ため、Plan/LoopPlan の契約(例: body ブロックの effect 配置をドキュメント・verify で固定していく
Phase 286 で JoinIR line の主要 pattern19が Plan/Frag SSOT に吸収できた。次は “出口語彙” をさらに SSOT に寄せるため、Phase 284Return as ExitKind SSOTへ進む
設計相談(将来の正規化):
- `docs/development/current/main/investigations/phase-286-plan-normalization-consult.md`
@ -23,11 +23,11 @@ Pattern3 まで Plan line で完走し、legacy fallback を撤去できた。
- quick smoke 154/154 PASS 維持、Pattern1/4 PoC 両方 PASS
**次のステップ**:
1. **Phase 286 P2.7** (current): Plan line guardrailsverify / doc
- 例: CoreLoopPlan の “body effects は loop_plan.body に積む” 契約を Fail-Fast で固定
2. **Phase 286future design, separate phase**: Plan 生成の正規化をどう進めるか(相談パケット)
1. **Phase 284design-first**: Return as ExitKind SSOTpattern に散らさない
2. **future designseparate phase**: Plan 生成の正規化をどう進めるか(相談パケット)
- `docs/development/current/main/investigations/phase-286-plan-normalization-consult.md`
3. **Phase 284** (design-first): Return as ExitKind SSOT
3. optional, post self-hostREPL = script engine 構想docs-only
- `docs/reference/language/repl.md`
## Recently Completed