diff --git a/docs/development/current/main/10-Now.md b/docs/development/current/main/10-Now.md index b3ac2f00..24ae3c0b 100644 --- a/docs/development/current/main/10-Now.md +++ b/docs/development/current/main/10-Now.md @@ -1,6 +1,6 @@ # Self Current Task — Now (main) -## Current Focus: Phase 29ab P2(Pattern2 Trim seg minimal) +## Current Focus: Phase 29ab P3(Pattern2 PromoteDecision contract) **2025-12-28: Phase 29ab P1 完了** ✅ - 目的: Pattern2 の LoopBodyLocal promotion の最小ケースを fixture+integration smoke で固定 @@ -15,6 +15,13 @@ - Smoke: `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_seg_min_vm.sh` - 検証: `./tools/smokes/v2/run.sh --profile integration --filter "phase29ab_pattern2_*"` PASS(2/2) +**2025-12-28: Phase 29ab P3 完了** ✅ +- 目的: Pattern2 promotion の NotApplicable/Freeze 境界を contract+fixture+smoke で固定(JoinIR-only前提) +- 契約: `src/mir/builder/control_flow/joinir/patterns/pattern2/api/README.md` +- fixtures: `apps/tests/phase29ab_pattern2_seg_{notapplicable,freeze}_min.hako` +- smokes: `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_seg_{notapplicable,freeze}_min_vm.sh` +- 検証: `./tools/smokes/v2/run.sh --profile integration --filter "phase29ab_pattern2_*"` PASS(4/4) + **2025-12-28: Phase 29aa P5 完了** ✅ - 目的: Return block が複数 predecessor のとき、incoming state が完全一致する場合のみ ReturnCleanup を成立させる - 入口: `docs/development/current/main/phases/phase-29aa/README.md` diff --git a/docs/development/current/main/30-Backlog.md b/docs/development/current/main/30-Backlog.md index d3aa1959..b2f625ff 100644 --- a/docs/development/current/main/30-Backlog.md +++ b/docs/development/current/main/30-Backlog.md @@ -8,10 +8,11 @@ Related: ## 直近(JoinIR/selfhost) -- **Phase 29ab(P2 ✅ done / P3 planned): JoinIR completion triage** +- **Phase 29ab(P3 ✅ done / P4 planned): JoinIR completion triage** - P1: Pattern2 LoopBodyLocal minimal fixture+smoke fixed(`phase29ab_pattern2_loopbodylocal_min_vm`) - P2: Pattern2 Trim seg minimal fixture+smoke fixed(`phase29ab_pattern2_loopbodylocal_seg_min_vm`) - - P3: PromoteDecision の “Reject/continue/fallback” 揺れを contract と smoke で固定(Phase 263 へ接続) + - P3: PromoteDecision の “NotApplicable/Freeze” 境界を contract+smoke で固定(JoinIR-only前提) + - P4: Phase 263(Stage‑B 実ログ seg)を fixture で再現し、対応方針(Derived vs Promote)を SSOT 化 - **Phase 288(✅ P0–P3 + 288.1 complete): REPL mode** - 入口: `docs/development/current/main/phases/phase-288/README.md` diff --git a/src/mir/builder/control_flow/joinir/patterns/pattern2/api/mod.rs b/src/mir/builder/control_flow/joinir/patterns/pattern2/api/mod.rs index c3e96b5c..b1ef516d 100644 --- a/src/mir/builder/control_flow/joinir/patterns/pattern2/api/mod.rs +++ b/src/mir/builder/control_flow/joinir/patterns/pattern2/api/mod.rs @@ -10,7 +10,7 @@ //! //! match try_promote(builder, condition, body, inputs, debug, verbose)? { //! PromoteDecision::Promoted(result) => { /* ... */ } -//! PromoteDecision::NotApplicable => { /* fallback to next path */ } +//! PromoteDecision::NotApplicable(result) => { /* continue without promotion */ } //! PromoteDecision::Freeze(reason) => { /* fail-fast */ } //! } //! ```