docs(phase29an): add p7 canonical projections
This commit is contained in:
@ -19,7 +19,7 @@ Scope: Repo root の旧リンク互換。現行の入口は `docs/development/cu
|
||||
`docs/development/current/main/design/coreplan-migration-roadmap-ssot.md` が移行タスクの Done 判定の入口。
|
||||
|
||||
**Next implementation (CorePlan Step-B / Facts SSOT)**
|
||||
`docs/development/current/main/phases/phase-29an/P6-PLANNER-SKELETON-GATE-INSTRUCTIONS.md`
|
||||
`docs/development/current/main/phases/phase-29an/P7-CANONICAL-LOOPFACTS-PROJECTIONS-INSTRUCTIONS.md`
|
||||
|
||||
**2025-12-29: Phase 29am P0 COMPLETE (CorePlan If/Exit lowerer/verifier)**
|
||||
CorePlan の If/Exit を lowerer/verifier で扱えるようにして、CorePlan 移行の土台を作った。
|
||||
|
||||
@ -2,11 +2,16 @@
|
||||
|
||||
## Current Focus: Phase 29an(Skeleton/Feature Facts)
|
||||
|
||||
Next: Phase 29an P6(Planner skeleton gate)
|
||||
Next: Phase 29an P7(CanonicalLoopFacts projections)
|
||||
運用ルール: integration filter で phase143_* は回さない(JoinIR 回帰は phase29ae pack のみ)
|
||||
運用ルール: phase286_pattern9_* は legacy pack (SKIP) を使う
|
||||
移行道筋 SSOT: `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md`
|
||||
|
||||
**2025-12-29: Phase 29an P6 完了** ✅
|
||||
- 目的: planner入口に skeleton gate を追加(Loop 以外は Ok(None) で fallback 維持、仕様不変)
|
||||
- 変更: `src/mir/builder/control_flow/plan/planner/build.rs`
|
||||
- 検証: `cargo build --release` / `./tools/smokes/v2/run.sh --profile quick` / `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
|
||||
**2025-12-29: Phase 29an P4 完了** ✅
|
||||
- 目的: LoopFacts が Some のとき skeleton/features が必ず揃うように型を引き締め(SSOT引き締め、仕様不変)
|
||||
- 変更: `src/mir/builder/control_flow/plan/facts/loop_facts.rs` / `src/mir/builder/control_flow/plan/planner/build.rs`
|
||||
|
||||
@ -0,0 +1,71 @@
|
||||
---
|
||||
Status: Active
|
||||
Scope: code(仕様不変、normalize SSOT の段階強化)
|
||||
Related:
|
||||
- docs/development/current/main/phases/phase-29an/README.md
|
||||
- docs/development/current/main/design/coreplan-skeleton-feature-model.md
|
||||
- docs/development/current/main/phases/phase-29ae/README.md
|
||||
---
|
||||
|
||||
# Phase 29an P7: CanonicalLoopFacts に skeleton/exit_usage の projection を追加(仕様不変)
|
||||
|
||||
Date: 2025-12-29
|
||||
Status: Ready for execution
|
||||
Scope: `canonicalize_loop_facts` を “将来の骨格/特徴合成” に耐える形へ寄せる(挙動不変)
|
||||
|
||||
## Objective
|
||||
|
||||
- `CanonicalLoopFacts` に `skeleton_kind` / `exit_usage` の **投影(projection)** を追加する
|
||||
- planner が `facts.facts.*` の深掘りをしなくても “骨格/特徴” の入口が 1 箇所に揃う
|
||||
- 既存の候補生成・順序・ログ・エラー文字列は不変
|
||||
|
||||
## Non-goals
|
||||
|
||||
- 新しい Freeze の発火(gate を壊さない)
|
||||
- 候補の増減や優先順序変更
|
||||
- facts の `Ok(None)` gate の変更
|
||||
|
||||
## Implementation
|
||||
|
||||
### Step 1: CanonicalLoopFacts を拡張(projection追加)
|
||||
|
||||
Update:
|
||||
- `src/mir/builder/control_flow/plan/normalize/canonicalize.rs`
|
||||
|
||||
Change:
|
||||
- `struct CanonicalLoopFacts { pub facts: LoopFacts }` に以下を追加
|
||||
- `pub skeleton_kind: SkeletonKind`
|
||||
- `pub exit_usage: ExitUsageFacts`
|
||||
|
||||
Populate:
|
||||
- `skeleton_kind = facts.skeleton.kind`
|
||||
- `exit_usage = facts.features.exit_usage.clone()`
|
||||
|
||||
注意:
|
||||
- `LoopFacts` 側で skeleton/features は必須なので `Option` 剥がしは不要
|
||||
- `canonicalize_loop_facts` は pure transform のまま(副作用/ログ禁止)
|
||||
|
||||
### Step 2: planner の skeleton gate を projection へ寄せる(挙動不変)
|
||||
|
||||
Update:
|
||||
- `src/mir/builder/control_flow/plan/planner/build.rs`
|
||||
|
||||
Change:
|
||||
- `facts.facts.skeleton.kind` 参照を `facts.skeleton_kind` に置き換えるだけ(ロジック不変)
|
||||
|
||||
### Step 3: unit tests(最低限)
|
||||
|
||||
Add tests in `canonicalize.rs`:
|
||||
- `canonicalize_loop_facts` で `skeleton_kind` が `Loop` になる
|
||||
- `exit_usage` が Facts 由来で投影されている(例: break/continue/return が立つ)
|
||||
|
||||
## Verification(required)
|
||||
|
||||
- `cargo build --release`
|
||||
- `./tools/smokes/v2/run.sh --profile quick`
|
||||
- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
|
||||
## Commit
|
||||
|
||||
- `git add -A && git commit -m "phase29an(p7): add canonical projections for skeleton/features"`
|
||||
|
||||
@ -64,9 +64,19 @@ Status: ✅ COMPLETE(実装コミット: `5ea120ca1`)
|
||||
|
||||
Status: ✅ COMPLETE(実装コミット: `1319cbfb2`)
|
||||
|
||||
## P6: Planner skeleton gate (Loop only)
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29an/P6-PLANNER-SKELETON-GATE-INSTRUCTIONS.md`
|
||||
- ねらい: skeleton.kind が Loop 以外なら `Ok(None)` に倒して fallback を維持(仕様不変)
|
||||
|
||||
Status: ✅ COMPLETE(実装コミット: `80c879fdb`)
|
||||
|
||||
## P7: CanonicalLoopFacts projections (skeleton_kind / exit_usage)
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29an/P7-CANONICAL-LOOPFACTS-PROJECTIONS-INSTRUCTIONS.md`
|
||||
- ねらい: normalize SSOT に “骨格/特徴” の入口を揃える(候補/順序/挙動は不変)
|
||||
|
||||
## Next(planned)
|
||||
|
||||
- P6: Planner に skeleton gate を追加(Loop 以外は Ok(None)、仕様不変)
|
||||
- 指示書: `docs/development/current/main/phases/phase-29an/P6-PLANNER-SKELETON-GATE-INSTRUCTIONS.md`
|
||||
- P7: Skeleton 一意化(0/1/2+ → None/Some/Freeze)を “骨格推論” に限定して SSOT 化
|
||||
- P8: Feature 合成(ExitMap / ValueJoin / Cleanup)を CorePlan 合成へ繋ぐ
|
||||
- P8: Skeleton 一意化(0/1/2+ → None/Some/Freeze)を “骨格推論” に限定して SSOT 化
|
||||
- P9: Feature 合成(ExitMap / ValueJoin / Cleanup)を CorePlan 合成へ繋ぐ
|
||||
|
||||
Reference in New Issue
Block a user