phase29aj(p8): planner-first pattern9 accum const loop subset
This commit is contained in:
@ -2,9 +2,14 @@
|
||||
|
||||
## Current Focus: Phase 29aj(PlannerOutcome SSOT)
|
||||
|
||||
Next: Phase 29aj P8(TBD)
|
||||
Next: Phase 29aj P9(TBD)
|
||||
運用ルール: integration filter で phase143_* は回さない(JoinIR 回帰は phase29ae pack のみ)
|
||||
|
||||
**2025-12-29: Phase 29aj P8 完了** ✅
|
||||
- 目的: Pattern9(AccumConstLoop)を Facts→Planner-first に移行(仕様不変)
|
||||
- 実装: `src/mir/builder/control_flow/plan/facts/pattern9_accum_const_loop_facts.rs` / `src/mir/builder/control_flow/plan/planner/build.rs` / `src/mir/builder/control_flow/plan/single_planner/rules.rs`
|
||||
- 検証: `cargo build --release` / `./tools/smokes/v2/run.sh --profile quick` / `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh` PASS
|
||||
|
||||
**2025-12-29: Phase 29aj P7 完了** ✅
|
||||
- 目的: Pattern8(BoolPredicateScan)を Facts→Planner-first に移行(仕様不変)
|
||||
- 実装: `src/mir/builder/control_flow/plan/facts/pattern8_bool_predicate_scan_facts.rs` / `src/mir/builder/control_flow/plan/planner/build.rs` / `src/mir/builder/control_flow/plan/single_planner/rules.rs`
|
||||
|
||||
@ -19,8 +19,8 @@ Related:
|
||||
|
||||
- **Phase 29aj(candidate): PlannerOutcome observability SSOT**
|
||||
- 入口: `docs/development/current/main/phases/phase-29aj/README.md`
|
||||
- 状況: P0/P1/P2/P3/P4/P5/P6/P7 ✅ 完了
|
||||
- Next: Phase 29aj P8(TBD)
|
||||
- 状況: P0/P1/P2/P3/P4/P5/P6/P7/P8 ✅ 完了
|
||||
- Next: Phase 29aj P9(TBD)
|
||||
- 運用: integration filter で phase143_* は回さない(JoinIR 回帰は phase29ae pack のみ)
|
||||
|
||||
- **Phase 29ai(candidate): Plan/Frag single-planner(Facts SSOT)**
|
||||
|
||||
@ -0,0 +1,94 @@
|
||||
# Phase 29aj P8: Pattern9 AccumConstLoop planner-first via Facts (subset)
|
||||
|
||||
Date: 2025-12-29
|
||||
Status: Ready for execution
|
||||
Scope: Pattern9 facts → planner candidate → single_planner planner-first(仕様不変)
|
||||
Goal: Pattern9 を Facts→Planner に乗せ、extractor 依存を 1 本減らす
|
||||
|
||||
## Objective
|
||||
|
||||
- Pattern9(AccumConstLoop)を LoopFacts に追加し、planner が `DomainPlan::Pattern9AccumConstLoop` を返せるようにする
|
||||
- single_planner は Pattern9 の型一致時のみ planner-first 採用
|
||||
- 既定挙動・観測・エラー文字列は不変
|
||||
|
||||
## Non-goals
|
||||
|
||||
- Pattern9 サブセット拡張(acc_update の複雑化、複数acc、step=-1 等)
|
||||
- ルール順序 SSOT の CandidateSet 移管
|
||||
- 新 env var / 新ログ追加
|
||||
|
||||
## Implementation Steps
|
||||
|
||||
### Step 1: Facts SSOT 追加(Pattern9)
|
||||
|
||||
Files:
|
||||
- `src/mir/builder/control_flow/plan/facts/pattern9_accum_const_loop_facts.rs` (new)
|
||||
|
||||
Facts:
|
||||
- `Pattern9AccumConstLoopFacts { loop_var, acc_var, condition, acc_update, loop_increment }`
|
||||
|
||||
Extraction rules (Ok(None) fallback only):
|
||||
- condition は `<loop_var> < <int_lit>` のみ
|
||||
- body に break/continue/if-else が無い
|
||||
- acc update は `acc = acc + <int_lit>` のみ
|
||||
- loop_increment は `extract_loop_increment_plan(body, loop_var)` が取れる
|
||||
- acc_var != loop_var
|
||||
|
||||
Unit tests:
|
||||
- const accumulation 成功
|
||||
- break/continue/if-else 混入は Ok(None)
|
||||
- `sum = sum + i` は Ok(None)
|
||||
|
||||
### Step 2: LoopFacts に接続
|
||||
|
||||
Files:
|
||||
- `src/mir/builder/control_flow/plan/facts/mod.rs`
|
||||
- `src/mir/builder/control_flow/plan/facts/loop_facts.rs`
|
||||
|
||||
Changes:
|
||||
- LoopFacts に `pattern9_accum_const_loop` を追加
|
||||
- `try_build_loop_facts()` に抽出を追加
|
||||
- all-none 判定に `pattern9_accum_const_loop` を含める
|
||||
|
||||
### Step 3: Planner candidate 追加
|
||||
|
||||
File:
|
||||
- `src/mir/builder/control_flow/plan/planner/build.rs`
|
||||
|
||||
Changes:
|
||||
- facts が Some のとき `DomainPlan::Pattern9AccumConstLoop` を候補に追加
|
||||
- rule 名は `loop/pattern9_accum_const_loop`
|
||||
- unit test 追加
|
||||
|
||||
### Step 4: single_planner を Pattern9 planner-first に
|
||||
|
||||
File:
|
||||
- `src/mir/builder/control_flow/plan/single_planner/rules.rs`
|
||||
|
||||
Changes:
|
||||
- RuleKind::Pattern9 を追加
|
||||
- planner_opt が Pattern9 のとき採用
|
||||
- それ以外は extractor へフォールバック
|
||||
|
||||
### Step 5: docs / CURRENT_TASK 更新
|
||||
|
||||
Files:
|
||||
- `docs/development/current/main/phases/phase-29aj/README.md`
|
||||
- `docs/development/current/main/10-Now.md`
|
||||
- `docs/development/current/main/30-Backlog.md`
|
||||
- `CURRENT_TASK.md`
|
||||
|
||||
## Acceptance Criteria
|
||||
|
||||
- `cargo build --release`
|
||||
- `./tools/smokes/v2/run.sh --profile quick`
|
||||
- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
- `./tools/smokes/v2/run.sh --profile integration --filter "phase286_pattern9_"` (任意)
|
||||
|
||||
## Commit
|
||||
|
||||
- `git add -A && git commit -m "phase29aj(p8): planner-first pattern9 accum const loop subset"`
|
||||
|
||||
## Next (P9 candidate)
|
||||
|
||||
- TBD
|
||||
@ -59,6 +59,13 @@ Goal: planner の facts/plan を 1 本の outcome に集約し、観測の SSOT
|
||||
- 完了: Pattern8 facts/planner/single_planner を接続
|
||||
- 検証: `cargo build --release` / `./tools/smokes/v2/run.sh --profile quick` / `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
|
||||
## P8: Pattern9 (AccumConstLoop) planner-first(subset)
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29aj/P8-PATTERN9-ACCUM-CONST-PLANNER-FIRST-INSTRUCTIONS.md`
|
||||
- ねらい: Pattern9 を Facts→Planner-first に接続し、extractor 依存を削減
|
||||
- 完了: Pattern9 facts/planner/single_planner を接続
|
||||
- 検証: `cargo build --release` / `./tools/smokes/v2/run.sh --profile quick` / `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
|
||||
## Verification (SSOT)
|
||||
|
||||
- `cargo build --release`
|
||||
|
||||
Reference in New Issue
Block a user