docs(phase29am): mark p2 done; add p3 exitmap alignment
This commit is contained in:
@ -2,11 +2,16 @@
|
||||
|
||||
## Current Focus: Phase 29am(CorePlan Step-A implementation)
|
||||
|
||||
Next: Phase 29am P2(Verifier: Loop.body Effect-only)
|
||||
Next: Phase 29am P3(ExitMap/CoreExitPlan alignment)
|
||||
運用ルール: 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 29am P2 完了** ✅
|
||||
- 目的: Loop.body の語彙制約(Effect-only + Seq許可)を verifier に前倒しして fail-fast を局所化
|
||||
- 変更: `src/mir/builder/control_flow/plan/verifier.rs`([V12])
|
||||
- 検証: `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 29am P1 完了** ✅
|
||||
- 目的: CoreLoopPlan.body で `Seq([Effect...])` を flatten して emit(Effect-only制約は維持)
|
||||
- 変更: `src/mir/builder/control_flow/plan/lowerer.rs`
|
||||
|
||||
@ -37,9 +37,8 @@ Related:
|
||||
|
||||
- **Phase 29am(candidate): CorePlan Step-A implementation (lowerer/verifier)**
|
||||
- 入口: `docs/development/current/main/phases/phase-29am/README.md`
|
||||
- 状況: P0 ✅ 完了
|
||||
- 状況: P0/P1 ✅ 完了
|
||||
- Next: P2(Verifier: Loop.body Effect-only)
|
||||
- 状況: P0/P1/P2 ✅ 完了
|
||||
- Next: P3(ExitMap/CoreExitPlan alignment)
|
||||
- Gate: `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
|
||||
- **Phase 29ai(candidate): Plan/Frag single-planner(Facts SSOT)**
|
||||
|
||||
@ -0,0 +1,57 @@
|
||||
---
|
||||
Status: Active
|
||||
Scope: design-first + minimal code(仕様不変)
|
||||
Related:
|
||||
- docs/development/current/main/phases/phase-29am/README.md
|
||||
- docs/development/current/main/design/post-phi-final-form-ssot.md
|
||||
- docs/development/current/main/design/exitkind-cleanup-effect-contract-ssot.md
|
||||
---
|
||||
|
||||
# Phase 29am P3: ExitMap/CoreExitPlan alignment(design + minimal code)
|
||||
|
||||
Date: 2025-12-29
|
||||
Status: Ready for execution
|
||||
Scope: Exit の表現を “Frag/ExitMap SSOT” に寄せる(CorePlan 側の Exit を増やさない)
|
||||
|
||||
## Why
|
||||
|
||||
CorePlan 移行を進めると、`CorePlan::Exit` をどこに置けるかが問題になる。
|
||||
|
||||
- body_bb は Effect-only(P1/P2 で固定)
|
||||
- Exit は Control を含むため、無制限に Seq/If の中へ置くと CFG/Frag の SSOT が崩れる
|
||||
|
||||
したがって、Exit は “CorePlanの任意の位置” ではなく、**Frag/ExitMap が SSOT**として保持する方向へ寄せる。
|
||||
|
||||
## Objective
|
||||
|
||||
- CorePlan で `Exit` を表現する責務境界を明確化する
|
||||
- “Exit = Frag/ExitMap の語彙” を前提に、CorePlan 側の Exit 乱用を防ぐ
|
||||
|
||||
## Non-goals
|
||||
|
||||
- unwind を実装する(別フェーズ)
|
||||
- 既存の JoinIR/PlanFrag ルーティング変更
|
||||
|
||||
## Implementation(最小)
|
||||
|
||||
### Step 1: verifier の禁止を明文化(docs + optional stricter checks)
|
||||
|
||||
- `CoreExitPlan::Break/Continue` は Loop 内でのみ許可(既存 V3 を維持)
|
||||
- `CoreExitPlan::Return` を loop body に入れない(V12 で禁止済み)
|
||||
|
||||
必要なら:
|
||||
- “CorePlan::Exit は Seq/If の最後にのみ許可” を強化(V11 の運用を If/else まで徹底)
|
||||
|
||||
### Step 2: Normalizer/Composer の方針(design)
|
||||
|
||||
- Exit は `Frag.exits` / `ExitMap` に乗せる(emit_frag SSOT)
|
||||
- CorePlan は “exit へ向かう条件値/edge_args” を生成するだけに寄せる
|
||||
|
||||
## Verification
|
||||
|
||||
- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
|
||||
## Commit
|
||||
|
||||
- `git add -A && git commit -m "phase29am(p3): align core exit with frag exitmap"`
|
||||
|
||||
@ -30,3 +30,8 @@ SSOT 道筋: `docs/development/current/main/design/coreplan-migration-roadmap-ss
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29am/P2-VERIFY-CORELOOP-BODY-EFFECTONLY-INSTRUCTIONS.md`
|
||||
- ねらい: lowerer の “Non-Effect plan in Loop body” エラーを、PlanVerifier の fail-fast で先に検出して局所化する(仕様不変)
|
||||
|
||||
## P3: ExitMap/CoreExitPlan alignment (design + minimal code)
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29am/P3-EXITMAP-COREEXIT-ALIGNMENT-INSTRUCTIONS.md`
|
||||
- ねらい: CorePlan 内で `Exit` を “独立ノード” として増やさず、Frag/ExitMap と整合する表現へ寄せる(仕様不変)
|
||||
|
||||
Reference in New Issue
Block a user