feat(joinir): Phase 286 P2.4 - Pattern8 BoolPredicateScan Plan化 PoC
## 概要 Pattern8 (BoolPredicateScan) を Plan extraction routing に追加。 static box 除外(Phase 269 決定)を尊重し、非 static box fixture で PoC。 ## 実装内容 - Pattern8BoolPredicateScanPlan struct + DomainPlan variant - extract_pattern8_plan(): 条件・predicate check・increment 抽出 - normalize_pattern8_bool_predicate_scan(): PoC stub(CoreExitPlan::Return 未統合) - PLAN_EXTRACTORS テーブルに Pattern8 追加(3rd priority) - エラーフォールバック: Plan normalization 失敗時 → legacy Pattern8 へ ## 動作フロー Plan extraction MATCHED → normalization failed (PoC stub) → legacy Pattern8 MATCHED ## 検証結果 - Integration: phase286_pattern8_plan_poc_vm PASS (exit 7) - Regression: quick 154 PASS, 0 FAILED 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@ -222,7 +222,34 @@ Phase 286 では JoinIR line を “第2の lowerer” として放置せず、*
|
||||
- 核ロジックは main loop に密結合しているため、完全な分離にはさらなるリファクタリングが必要
|
||||
- スモークテスト: 既存FAILなし(1件のemit失敗は本変更と無関係)
|
||||
|
||||
### P2.4 (Pattern8 BoolPredicateScan Plan化 PoC) 🚧 IN PROGRESS (2025-12-26)
|
||||
|
||||
**背景**:
|
||||
- Pattern8 (BoolPredicateScan) は Phase 269 P1.2 で `static box` コンテキストを明示的にスキップする設計決定あり
|
||||
- 既存 fixture (`phase269_p0_pattern8_frag_min.hako`) は static box のため Pattern8 がマッチせず Pattern1 にフォールバック
|
||||
- PoC のためには Pattern8 が実際にマッチする**非 static box の fixture** が必要
|
||||
|
||||
**実装方針**:
|
||||
- **非 static box fixture**: `box StringUtils` に変更し、`Main.main()` から `new StringUtils()` でインスタンス生成
|
||||
- **Plan line 抽出**: `extract_pattern8_plan()` で parts 抽出(既存 pattern8 の構造を参考)
|
||||
- **Normalizer**: `normalize_pattern8_bool_predicate_scan()` で Scan 系の骨格を最小で再利用
|
||||
- **Router integration**: PLAN_EXTRACTORS テーブルに Pattern8 追加、`Ok(None)` なら legacy Pattern8 へフォールバック
|
||||
|
||||
**成果物** (予定):
|
||||
- `apps/tests/phase286_pattern8_plan_poc.hako` (新規: 非 static box fixture)
|
||||
- `tools/smokes/v2/profiles/integration/apps/phase286_pattern8_plan_poc_vm.sh` (新規: integration smoke)
|
||||
- `src/mir/builder/control_flow/plan/mod.rs` (変更: Pattern8BoolPredicateScanPlan + DomainPlan variant)
|
||||
- `src/mir/builder/control_flow/joinir/patterns/extractors/pattern8.rs` (新規: extract_pattern8_plan)
|
||||
- `src/mir/builder/control_flow/joinir/patterns/extractors/mod.rs` (変更: pattern8 モジュール追加)
|
||||
- `src/mir/builder/control_flow/plan/normalizer.rs` (変更: normalize_pattern8_bool_predicate_scan)
|
||||
- `src/mir/builder/control_flow/joinir/patterns/router.rs` (変更: PLAN_EXTRACTORS に Pattern8 追加)
|
||||
|
||||
**成功基準**:
|
||||
- Integration test: `phase286_pattern8_plan_poc_vm` PASS (exit 7)
|
||||
- Regression test: quick smoke 0 failed
|
||||
- Debug log: `route=plan strategy=extract pattern=Pattern8_BoolPredicateScan` 確認
|
||||
|
||||
## Acceptance(P0)
|
||||
|
||||
- 2本の lowering が “設計として” どこで 1 本に収束するかが明文化されている
|
||||
- 2本の lowering が "設計として" どこで 1 本に収束するかが明文化されている
|
||||
- Phase 284(Return)/ Phase 285(GC)と矛盾しない
|
||||
|
||||
Reference in New Issue
Block a user