From b44c3f61956993dd3521a6e9d172a5bafec19b0b Mon Sep 17 00:00:00 2001 From: tomoaki Date: Tue, 30 Dec 2025 05:18:04 +0900 Subject: [PATCH] docs(phase29ao): add p6 valuejoin presence gate instructions --- CURRENT_TASK.md | 2 +- ...P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md | 80 +++++++++++++++++++ .../current/main/phases/phase-29ao/README.md | 3 +- 3 files changed, 83 insertions(+), 2 deletions(-) create mode 100644 docs/development/current/main/phases/phase-29ao/P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index c0ada2ba..e7f661df 100644 --- a/CURRENT_TASK.md +++ b/CURRENT_TASK.md @@ -19,7 +19,7 @@ Scope: Repo root の旧リンク互換。現行の入口は `docs/development/cu `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md` が移行タスクの Done 判定の入口。 **Next implementation (Phase 29ao P6)** -`docs/development/current/main/phases/phase-29ao/README.md` +`docs/development/current/main/phases/phase-29ao/P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md` **2025-12-29: Phase 29am P0 COMPLETE (CorePlan If/Exit lowerer/verifier)** CorePlan の If/Exit を lowerer/verifier で扱えるようにして、CorePlan 移行の土台を作った。 diff --git a/docs/development/current/main/phases/phase-29ao/P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md b/docs/development/current/main/phases/phase-29ao/P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md new file mode 100644 index 00000000..d5b24d72 --- /dev/null +++ b/docs/development/current/main/phases/phase-29ao/P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md @@ -0,0 +1,80 @@ +--- +Status: Ready +Scope: code(未接続・仕様不変) +Related: + - docs/development/current/main/phases/phase-29ao/README.md + - docs/development/current/main/design/post-phi-final-form-ssot.md + - docs/development/current/main/design/joinir-plan-frag-ssot.md + - docs/development/current/main/phases/phase-29ae/README.md +--- + +# Phase 29ao P6: ValueJoin presence(direct skeleton の安全ゲート + 次の wire 足場) + +Date: 2025-12-30 +Status: Ready for execution +Scope: 仕様不変(未接続のまま)、ValueJoin が絡むケースを “direct skeleton” が飲み込まないように固定する + +## 目的 + +- `CanonicalLoopFacts.value_join_needed` の存在は、将来 “expr result + carriers” の post-phi 表現に繋がる。 +- 現時点の direct skeleton(Pattern1 subset)は value join を扱えないので、**誤って採用されない** ことを SSOT として固定する。 +- ここでは “wire 実装” ではなく、P7(ValueJoin wire)へ進むための **安全ゲート**と境界テストを先に固める。 + +## 非目的 + +- expr result の EdgeArgs への実配線(`JumpArgsLayout::ExprResultPlusCarriers` を満たす args 構築) +- value join の抽出ロジック拡張(Facts 側の detect は別タスクに切る) +- 既存ルーティング/挙動/ログ/エラー文字列の変更 + +## 実装手順 + +### Step 1: direct skeleton を value_join_needed で gate する + +対象: +- `src/mir/builder/control_flow/plan/normalizer/skeleton_loop.rs` + +変更: +- `normalize_loop_skeleton_from_facts(...)` の冒頭で + - `if facts.value_join_needed { return Ok(None); }` + +方針: +- `Ok(None)` で fallback を維持(未接続なので観測差分なし) +- strict/dev の Fail-Fast は P7 以降(wire が入った段階)で入れる + +### Step 2: unit test(value join の境界を固定) + +対象: +- `src/mir/builder/control_flow/plan/composer/mod.rs`(direct compose のテスト群) + - もしくは `src/mir/builder/control_flow/plan/normalizer/skeleton_loop.rs` + +追加テスト: +- `LoopFacts.features.value_join = Some(ValueJoinFacts { needed: true })` をセットして canonicalize し、 + - `try_compose_core_plan_direct(...)` が `None` になることを固定 + +注: +- value_join は現状 “未接続” の前提なので、テストは “合成側の安全ゲート” を固定する目的に限定する。 + +### Step 3: docs 更新 + +更新: +- `docs/development/current/main/phases/phase-29ao/README.md`(P6 完了の記録 + Next を P7 へ) +- `docs/development/current/main/10-Now.md`(Next 更新) +- `docs/development/current/main/30-Backlog.md` +- `CURRENT_TASK.md` + +## 検証(必須) + +- `cargo build --release` +- `./tools/smokes/v2/run.sh --profile quick` +- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh` + +## コミット + +- `git add -A` +- `git commit -m "phase29ao(p6): gate direct skeleton on valuejoin presence (unconnected)"` + +## 次(P7 の入口) + +P7 で ValueJoin の “最小の wire” を入れる: +- `JumpArgsLayout::ExprResultPlusCarriers` の SSOT を PlanFrag/CorePlan 側で表現できる場所を決める +- その上で局所 verify を追加(`post-phi-final-form-ssot.md` と整合) diff --git a/docs/development/current/main/phases/phase-29ao/README.md b/docs/development/current/main/phases/phase-29ao/README.md index 6945dec8..1d783e5e 100644 --- a/docs/development/current/main/phases/phase-29ao/README.md +++ b/docs/development/current/main/phases/phase-29ao/README.md @@ -50,4 +50,5 @@ Gate(SSOT): ## Next(planned) -- P6: ValueJoin presence を post-phi SSOT に沿って wire(局所 verify から) +- P6: ValueJoin presence(direct skeleton の安全ゲート、未接続・仕様不変) + - 指示書: `docs/development/current/main/phases/phase-29ao/P6-VALUEJOIN-PRESENCE-GATE-INSTRUCTIONS.md`