feat(joinir): Phase 286 P2.3 + Phase 287 - Pattern9 Plan化 + Router table-driven

## Phase 286 P2.3: Pattern9 AccumConstLoop Plan化 PoC

- DomainPlan::Pattern9AccumConstLoop 追加
- PlanNormalizer::normalize_pattern9_accum_const_loop() 実装
  - PHI 2本(loop_var, acc_var)
  - const/var 両方 OK(sum = sum + 1 または sum = sum + i)
- Pattern9 は Pattern1 より優先(より具体的なパターン)
- Integration test: phase286_pattern9_frag_poc PASS (return: 3)
- Regression: quick 154 PASS

## Phase 287: Router table-driven Plan extraction

- PLAN_EXTRACTORS static table で Pattern6/7/4/9/1 を統一管理
- PlanExtractorEntry/PlanExtractorVariant 構造体追加
- try_plan_extractors() で ~100行 → 3行に集約
- メンテナンス性向上(新 Pattern 追加はテーブル1行追加のみ)

🤖 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 02:38:09 +09:00
parent 6656098c95
commit 1d24e9a106
11 changed files with 760 additions and 99 deletions

View File

@ -8,12 +8,12 @@ Related:
## 直近JoinIR/selfhost
- **Phase 288✅ P0P3 complete: REPL mode**
- **Phase 288✅ P0P3 + 288.1 complete: REPL mode**
- 入口: `docs/development/current/main/phases/phase-288/README.md`
- SSOT: `docs/reference/language/repl.md`
- 次: Phase 288.1session persistence / auto-display `docs/development/current/main/phases/phase-288/P1-INSTRUCTIONS.md`
- 次: Phase 288.2+(任意): REPL UX improvementshistory / multiline / load 等)
- **Phase 287active, stabilization: ビルド/テスト軽量化quick が重すぎる**
- **Phase 287✅ complete: ビルド/テスト軽量化quick gate の責務分離**
- 目的: `tools/smokes/v2/run.sh --profile quick` を 45秒以内目安へ戻し、開発サイクルを軽くする
- 入口: `docs/development/current/main/phases/phase-287/README.md`
- 手順: `docs/development/current/main/phases/phase-287/P1-INSTRUCTIONS.md`
@ -64,6 +64,7 @@ Related:
- ねらい: `return/break/continue` のような “大きな出口語彙” の実装場所が揺れない状態にする
- 入口: `docs/development/current/main/phases/phase-286/README.md`
- P0docs-only: `docs/development/current/main/phases/phase-286/P0-INSTRUCTIONS.md`
- 状況: P2Pattern4 PoC/P2.1Pattern1 PoC完了。次は P2.2hygiene→ P2.3Pattern2 Plan化の再開条件が揃えば
- SSOT:
- Plan/Frag: `compose::*` + `emit_frag()`Phase 280/281
- JoinIR line 共通入口: `src/mir/builder/control_flow/joinir/patterns/conversion_pipeline.rs`