diff --git a/CURRENT_TASK.md b/CURRENT_TASK.md index a0a5f77b..2ecbd2ff 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 (CorePlan Step-B / Facts SSOT)** -`docs/development/current/main/phases/phase-29an/P14-VALUEJOIN-VOCAB-SCAFFOLD-INSTRUCTIONS.md` +`docs/development/current/main/phases/phase-29an/P15-CLOSEOUT-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/10-Now.md b/docs/development/current/main/10-Now.md index 5d4b642e..fb816125 100644 --- a/docs/development/current/main/10-Now.md +++ b/docs/development/current/main/10-Now.md @@ -2,7 +2,7 @@ ## Current Focus: Phase 29an(Skeleton/Feature Facts) -Next: Phase 29an P14(ValueJoin facts scaffold) +Next: Phase 29an P15(Closeout → Phase 29ao) 運用ルール: integration filter で phase143_* は回さない(JoinIR 回帰は phase29ae pack のみ) 運用ルール: phase286_pattern9_* は legacy pack (SKIP) を使う 移行道筋 SSOT: `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md` @@ -37,6 +37,11 @@ Next: Phase 29an P14(ValueJoin facts scaffold) - 変更: `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 P14 完了** ✅ +- 目的: ValueJoinFacts の語彙足場 + canonical projection を追加(未接続・仕様不変) +- 変更: `src/mir/builder/control_flow/plan/facts/feature_facts.rs` / `src/mir/builder/control_flow/plan/normalize/canonicalize.rs` / `src/mir/builder/control_flow/plan/verifier.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` diff --git a/docs/development/current/main/30-Backlog.md b/docs/development/current/main/30-Backlog.md index c0381caf..d9977bf2 100644 --- a/docs/development/current/main/30-Backlog.md +++ b/docs/development/current/main/30-Backlog.md @@ -10,9 +10,13 @@ Related: - **Phase 29an(active): Skeleton/Feature Facts(SSOT)** - 入口: `docs/development/current/main/phases/phase-29an/README.md` - - 状況: P0(Ready) + - 状況: P0–P14 ✅ 完了 / Next: P15 closeout - Gate: `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh` +- **Phase 29ao(candidate): CorePlan composition from Skeleton/Feature** + - 入口: `docs/development/current/main/phases/phase-29ao/README.md` + - 状況: P0(Ready: composer scaffold) + - **Phase 29af(✅ COMPLETE): Boundary hygiene / regression entrypoint / carrier layout SSOT** - 入口: `docs/development/current/main/phases/phase-29af/README.md` diff --git a/docs/development/current/main/phases/phase-29an/P15-CLOSEOUT-INSTRUCTIONS.md b/docs/development/current/main/phases/phase-29an/P15-CLOSEOUT-INSTRUCTIONS.md new file mode 100644 index 00000000..441754c1 --- /dev/null +++ b/docs/development/current/main/phases/phase-29an/P15-CLOSEOUT-INSTRUCTIONS.md @@ -0,0 +1,57 @@ +--- +Status: Active +Scope: docs-only(Phase 29an の closeout) +Related: +- docs/development/current/main/phases/phase-29an/README.md +- docs/development/current/main/design/coreplan-migration-roadmap-ssot.md +- docs/development/current/main/10-Now.md +- docs/development/current/main/30-Backlog.md +--- + +# Phase 29an P15: Closeout(P0–P14まとめ・次フェーズ入口固定) + +Date: 2025-12-29 +Status: Ready for execution +Scope: docs-only(コード変更なし) + +## Objective + +- Phase 29an(Skeleton/Feature Facts)の成果と SSOT を 1枚にまとめて “完了” と言える状態にする +- 次フェーズ(CorePlan composition)への入口を固定し、Now/Backlog/CURRENT_TASK を迷子にしない + +## Deliverables(docs-only) + +### Step 1: phase-29an README を closeout 形式へ + +Update: +- `docs/development/current/main/phases/phase-29an/README.md` + +Add: +- P0–P14 の完了一覧(commit hash) +- “何が SSOT として揃ったか” の短いサマリー + - SkeletonFacts / FeatureFacts(ExitUsage/ExitMap/Cleanup/ValueJoin) + - Canonical projections(skeleton_kind/exit_usage/exit_kinds_present/cleanup_kinds_present/value_join_needed) + - debug-only invariants(exit_usage↔plan / exit_usage↔exitmap / cleanup↔exitkind) +- Next phase link(Phase 29ao) + +### Step 2: Now/Backlog/CURRENT_TASK の更新 + +Update: +- `docs/development/current/main/10-Now.md` + - Current Focus を Phase 29ao に更新 + - Phase 29an P14/P15 の完了記録を追記 +- `docs/development/current/main/30-Backlog.md` + - Phase 29an を ✅ COMPLETE に更新(現状は “P0 Ready” 表記が残っているので修正) + - Phase 29ao を active/candidate として追加 +- `CURRENT_TASK.md` + - Next implementation を Phase 29ao P0 へ差し替え + +### Step 3: Commit(docs-only) + +- `git add -A` +- `git commit -m "docs(phase29an): closeout p0-p14; handoff to phase29ao"` + +## Verification(optional, docs-only) + +- `./tools/smokes/v2/run.sh --profile quick` + diff --git a/docs/development/current/main/phases/phase-29an/README.md b/docs/development/current/main/phases/phase-29an/README.md index 63bbbd6e..98b1cce9 100644 --- a/docs/development/current/main/phases/phase-29an/README.md +++ b/docs/development/current/main/phases/phase-29an/README.md @@ -123,7 +123,11 @@ Status: ✅ COMPLETE(実装コミット: `34ec46d13`) - 指示書: `docs/development/current/main/phases/phase-29an/P14-VALUEJOIN-VOCAB-SCAFFOLD-INSTRUCTIONS.md` - ねらい: join値(post-phi)を Feature として合成するための語彙と projection の足場を作る(未接続、仕様不変) +Status: ✅ COMPLETE(実装コミット: `395f3b01d`) + ## Next(planned) - P15: Phase 29an closeout(P0–P14 の成果/SSOT/次フェーズ入口を確定) + - 指示書: `docs/development/current/main/phases/phase-29an/P15-CLOSEOUT-INSTRUCTIONS.md` - Next phase: Phase 29ao(CorePlan composition: Feature合成→Normalizerへ) + - 入口: `docs/development/current/main/phases/phase-29ao/README.md` diff --git a/docs/development/current/main/phases/phase-29ao/P0-COREPLAN-COMPOSER-SCAFFOLD-INSTRUCTIONS.md b/docs/development/current/main/phases/phase-29ao/P0-COREPLAN-COMPOSER-SCAFFOLD-INSTRUCTIONS.md new file mode 100644 index 00000000..c8f56496 --- /dev/null +++ b/docs/development/current/main/phases/phase-29ao/P0-COREPLAN-COMPOSER-SCAFFOLD-INSTRUCTIONS.md @@ -0,0 +1,66 @@ +--- +Status: Active +Scope: code(仕様不変、未接続の足場) +Related: +- docs/development/current/main/phases/phase-29ao/README.md +- docs/development/current/main/phases/phase-29an/README.md +- docs/development/current/main/design/coreplan-migration-roadmap-ssot.md +- docs/development/current/main/phases/phase-29ae/README.md +--- + +# Phase 29ao P0: CorePlan composer scaffold(CanonicalLoopFacts→CorePlan、未接続) + +Date: 2025-12-29 +Status: Ready for execution +Scope: “CorePlan 合成” の入口を作るだけ(未接続=仕様不変) + +## Objective + +- `CanonicalLoopFacts`(projection済み)から `CorePlan` を合成する入口関数を 1 箇所に作る +- 以後の拡張は “合成ロジック” をここに閉じ込め、emit/merge は再解析しない方針を守る + +## Non-goals + +- 既存ルーティング/観測/エラー文字列の変更 +- `Ok(None)` gate を減らす(P0 は常に Ok(None) でも良い) +- Frag/ExitMap の wire を入れる(P1+) +- 新 env var / 恒常ログ追加 + +## Implementation + +### Step 1: composer モジュール追加(leaf) + +Add: +- `src/mir/builder/control_flow/plan/composer/mod.rs` + +API(案): + +- `pub(in crate::mir::builder) fn try_compose_core_plan_from_canonical_facts(facts: &CanonicalLoopFacts) -> Result, Freeze>` + +P0の実装: +- 必ず `Ok(None)` を返す(未接続の足場) +- `facts.skeleton_kind == Loop` であることを `debug_assert!`(P6と整合) + +### Step 2: plan/mod.rs に module 登録(未使用) + +Update: +- `src/mir/builder/control_flow/plan/mod.rs` + +Add: +- `pub(in crate::mir::builder) mod composer;` + +### Step 3: unit test(存在確認) + +Add minimal test: +- ダミーの `CanonicalLoopFacts` を作って `Ok(None)` が返る(パニックしない) + +## 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 \"phase29ao(p0): add coreplan composer scaffold\"` + diff --git a/docs/development/current/main/phases/phase-29ao/README.md b/docs/development/current/main/phases/phase-29ao/README.md new file mode 100644 index 00000000..309c5691 --- /dev/null +++ b/docs/development/current/main/phases/phase-29ao/README.md @@ -0,0 +1,30 @@ +--- +Status: Active +Scope: CorePlan composition(Feature合成→Normalizerへ、仕様不変で段階導入) +Related: +- docs/development/current/main/design/coreplan-migration-roadmap-ssot.md +- docs/development/current/main/design/coreplan-skeleton-feature-model.md +- docs/development/current/main/design/post-phi-final-form-ssot.md +- docs/development/current/main/design/exitkind-cleanup-effect-contract-ssot.md +- docs/development/current/main/phases/phase-29ae/README.md +--- + +# Phase 29ao: CorePlan composition from Skeleton/Feature (Step-C/D) + +Goal: DomainPlan の “complete pattern” に寄り過ぎない形で、**Skeleton + Feature** から `CorePlan` を合成していく(仕様不変で段階導入)。 + +Gate(SSOT): +- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh` + +## P0: Composer scaffold(未接続・仕様不変) + +- 指示書: `docs/development/current/main/phases/phase-29ao/P0-COREPLAN-COMPOSER-SCAFFOLD-INSTRUCTIONS.md` +- ねらい: `CanonicalLoopFacts`(projection済み)→ `CorePlan` 合成の入口を 1 箇所に作り、以後の実装を “合成だけ” に寄せる + +## Next(planned) + +- P1: CoreLoop skeleton(preheader/header/body/exit)を `CorePlan` 語彙で生成(effectsは空) +- P2: ExitMap presence を `Frag/ExitMap` と結ぶ(break/continue/return の wire を “語彙だけ” 先に固定) +- P3: Cleanup presence を ExitKind 単位で wire(実装は最小、観測差分なし) +- P4: ValueJoin presence を post-phi SSOT に沿って wire(局所 verify から) +