docs(phase29an): add p14 valuejoin facts scaffold

This commit is contained in:
2025-12-30 03:40:33 +09:00
parent 34ec46d13e
commit 2980cb0c29
4 changed files with 102 additions and 5 deletions

View File

@ -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 ruledebug-only / cfg(debug_assertions) でもOK:
- `value_join_needed == true` の場合は `exit_kinds_present` が empty でないjoinがあるなら制御構造もあるはず、など
- ここは弱いルールで良い。目的は “矛盾したfeature” の早期検知。
### Step 4: unit testsprojection固定
Add tests in `canonicalize.rs`:
- `value_join_needed` が既定で false
Add tests in `verifier.rs`debug-onlyでOK:
- 矛盾ケースが panic する(もし debug_assert を入れるなら)
## Verificationrequired
- `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\"`

View File

@ -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 の足場を作る(未接続、仕様不変)
## Nextplanned
- 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 closeoutP0P14 の成果/SSOT/次フェーズ入口を確定
- Next phase: Phase 29aoCorePlan composition: Feature合成→Normalizerへ