docs(phase29an): add p14 valuejoin facts scaffold
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/P13-CLEANUP-VOCAB-SCAFFOLD-INSTRUCTIONS.md`
|
||||
`docs/development/current/main/phases/phase-29an/P14-VALUEJOIN-VOCAB-SCAFFOLD-INSTRUCTIONS.md`
|
||||
|
||||
**2025-12-29: Phase 29am P0 COMPLETE (CorePlan If/Exit lowerer/verifier)**
|
||||
CorePlan の If/Exit を lowerer/verifier で扱えるようにして、CorePlan 移行の土台を作った。
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
|
||||
## Current Focus: Phase 29an(Skeleton/Feature Facts)
|
||||
|
||||
Next: Phase 29an P13(Cleanup facts scaffold)
|
||||
Next: Phase 29an P14(ValueJoin facts scaffold)
|
||||
運用ルール: integration filter で phase143_* は回さない(JoinIR 回帰は phase29ae pack のみ)
|
||||
運用ルール: phase286_pattern9_* は legacy pack (SKIP) を使う
|
||||
移行道筋 SSOT: `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md`
|
||||
@ -32,6 +32,11 @@ Next: Phase 29an P13(Cleanup facts scaffold)
|
||||
- 変更: `src/mir/builder/control_flow/plan/normalize/canonicalize.rs` / `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 P13 完了** ✅
|
||||
- 目的: CleanupFacts の語彙足場 + canonical projection を追加(未接続・仕様不変)
|
||||
- 変更: `src/mir/builder/control_flow/plan/facts/feature_facts.rs` / `src/mir/builder/control_flow/plan/normalize/canonicalize.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 P7 完了** ✅
|
||||
- 目的: CanonicalLoopFacts に skeleton/exit_usage の projection を追加(挙動不変)
|
||||
- 変更: `src/mir/builder/control_flow/plan/normalize/canonicalize.rs` / `src/mir/builder/control_flow/plan/planner/build.rs`
|
||||
|
||||
@ -0,0 +1,81 @@
|
||||
---
|
||||
Status: Active
|
||||
Scope: code(仕様不変、ValueJoin語彙の足場)
|
||||
Related:
|
||||
- docs/development/current/main/phases/phase-29an/README.md
|
||||
- docs/development/current/main/design/post-phi-final-form-ssot.md
|
||||
- docs/development/current/main/phases/phase-29ae/README.md
|
||||
---
|
||||
|
||||
# Phase 29an P14: ValueJoinFacts の語彙足場(型 + canonical projection + verifier、未接続)
|
||||
|
||||
Date: 2025-12-29
|
||||
Status: Ready for execution
|
||||
Scope: join値(post-phi)を Feature として合成するための語彙を先に用意(未接続、仕様不変)
|
||||
|
||||
## Objective
|
||||
|
||||
- `ValueJoinFacts` を “join 値が必要か(= PHI相当が存在するか)” の **最小語彙**として追加する
|
||||
- `CanonicalLoopFacts` に projection を追加し、planner/合成が深掘りしない入口を作る
|
||||
- verifier に “未接続のままでも矛盾しない” 最小不変条件を追加する(fail-fastは debug-only)
|
||||
|
||||
## Non-goals
|
||||
|
||||
- join入力の対応付け(pred→value mapping)を実装しない(SSOTは `post-phi-final-form-ssot.md` にある)
|
||||
- CFG/ExitMap との統合(CorePlan合成)は次フェーズ
|
||||
- 既存ルーティング/候補集合/順序/ログ/エラー文字列の変更
|
||||
- 新しい Freeze 発火(gate を壊さない)
|
||||
|
||||
## Implementation
|
||||
|
||||
### Step 1: Facts語彙に ValueJoinFacts を拡張(未接続)
|
||||
|
||||
Update:
|
||||
- `src/mir/builder/control_flow/plan/facts/feature_facts.rs`
|
||||
|
||||
Change:
|
||||
- 既存の `struct ValueJoinFacts;` を “最小情報” を持つ形へ変更
|
||||
- 例: `pub struct ValueJoinFacts { pub needed: bool }`(P14では常に `false` を入れる想定)
|
||||
- または `enum ValueJoinFacts { Needed }`(P14では `Option<ValueJoinFacts>` を None のまま)
|
||||
|
||||
推奨:
|
||||
- P14では **Optionのまま None**(解析しない)。projectionだけ用意する。
|
||||
|
||||
### Step 2: Canonical projection を追加(入口整備)
|
||||
|
||||
Update:
|
||||
- `src/mir/builder/control_flow/plan/normalize/canonicalize.rs`
|
||||
|
||||
Add:
|
||||
- `pub value_join_needed: bool`
|
||||
|
||||
Populate:
|
||||
- `value_join_needed = facts.features.value_join.is_some()`(P14は false のまま)
|
||||
|
||||
### Step 3: verifier に最小ルールを追加(debug-only)
|
||||
|
||||
Update:
|
||||
- `src/mir/builder/control_flow/plan/verifier.rs`
|
||||
|
||||
Add rule(debug-only / cfg(debug_assertions) でもOK):
|
||||
- `value_join_needed == true` の場合は `exit_kinds_present` が empty でない(joinがあるなら制御構造もあるはず、など)
|
||||
- ここは弱いルールで良い。目的は “矛盾したfeature” の早期検知。
|
||||
|
||||
### Step 4: unit tests(projection固定)
|
||||
|
||||
Add tests in `canonicalize.rs`:
|
||||
- `value_join_needed` が既定で false
|
||||
|
||||
Add tests in `verifier.rs`(debug-onlyでOK):
|
||||
- 矛盾ケースが panic する(もし debug_assert を入れるなら)
|
||||
|
||||
## 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(p14): add valuejoin facts scaffold and projection\"`
|
||||
|
||||
@ -111,8 +111,19 @@ Status: ✅ COMPLETE(実装コミット: `8caa09768`)
|
||||
|
||||
Status: ✅ COMPLETE(実装コミット: `fa5a891bd`)
|
||||
|
||||
## P13: Cleanup facts scaffold (unused)
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29an/P13-CLEANUP-VOCAB-SCAFFOLD-INSTRUCTIONS.md`
|
||||
- ねらい: cleanup を Feature として合成するための語彙と projection の足場を作る(未接続、仕様不変)
|
||||
|
||||
Status: ✅ COMPLETE(実装コミット: `34ec46d13`)
|
||||
|
||||
## P14: ValueJoin facts scaffold (unused)
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29an/P14-VALUEJOIN-VOCAB-SCAFFOLD-INSTRUCTIONS.md`
|
||||
- ねらい: join値(post-phi)を Feature として合成するための語彙と projection の足場を作る(未接続、仕様不変)
|
||||
|
||||
## Next(planned)
|
||||
|
||||
- P13: CleanupFacts の語彙足場(型 + canonical projection、未接続)
|
||||
- 指示書: `docs/development/current/main/phases/phase-29an/P13-CLEANUP-VOCAB-SCAFFOLD-INSTRUCTIONS.md`
|
||||
- P14: ValueJoin の語彙足場(型 + projection + verifier SSOT)を追加(未接続)
|
||||
- P15: Phase 29an closeout(P0–P14 の成果/SSOT/次フェーズ入口を確定)
|
||||
- Next phase: Phase 29ao(CorePlan composition: Feature合成→Normalizerへ)
|
||||
|
||||
Reference in New Issue
Block a user