phase29ao(p36): release adopt pattern1 coreplan skeleton pilot
This commit is contained in:
@ -3,7 +3,7 @@
|
||||
## Current Focus
|
||||
|
||||
- Phase: `docs/development/current/main/phases/phase-29ao/README.md`
|
||||
- Next: `docs/development/current/main/phases/phase-29ao/P36-RELEASE-ADOPT-PATTERN1-COREPLAN-SKELETON-PILOT-INSTRUCTIONS.md`
|
||||
- Next: Phase 29ao P37(TBD)
|
||||
|
||||
## Gate (SSOT)
|
||||
|
||||
|
||||
@ -5,7 +5,7 @@ Scope: 「次にやる候補」を短く列挙するメモ。入口は `docs/dev
|
||||
|
||||
## Active
|
||||
|
||||
- CorePlan migration: `docs/development/current/main/phases/phase-29ao/README.md`(Next: P36 Stage-2 pilot)
|
||||
- CorePlan migration: `docs/development/current/main/phases/phase-29ao/README.md`(Next: P37 TBD)
|
||||
|
||||
## Near-Term Candidates
|
||||
|
||||
|
||||
@ -34,8 +34,8 @@ Related:
|
||||
## 1.1 Current (active)
|
||||
|
||||
- Active phase: `docs/development/current/main/phases/phase-29ao/README.md`
|
||||
- Next step: Phase 29ao P36 (TBD)
|
||||
- After P36: TBD
|
||||
- Next step: Phase 29ao P37 (TBD)
|
||||
- After P37: TBD
|
||||
|
||||
## 2. すでに固めた SSOT(再発防止の土台)
|
||||
|
||||
|
||||
@ -2,12 +2,17 @@
|
||||
|
||||
## Current Focus: Phase 29ao(CorePlan composition)
|
||||
|
||||
Next: Phase 29ao P36(TBD)
|
||||
Next: Phase 29ao P37(TBD)
|
||||
指示書: TBD
|
||||
運用ルール: integration filter で phase143_* は回さない(JoinIR 回帰は phase29ae pack のみ)
|
||||
運用ルール: phase286_pattern9_* は legacy pack (SKIP) を使う
|
||||
移行道筋 SSOT: `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md`
|
||||
|
||||
**2025-12-30: Phase 29ao P36 完了** ✅
|
||||
- 目的: Pattern1 subset を release 既定でも Facts→CorePlan(skeleton) で採用する Stage-2 パイロットを開始(仕様不変)
|
||||
- 変更: `src/mir/builder/control_flow/plan/composer/shadow_adopt.rs` / `src/mir/builder/control_flow/plan/composer/mod.rs` / `src/mir/builder/control_flow/joinir/patterns/router.rs` / `docs/development/current/main/phases/phase-29ao/README.md` / `docs/development/current/main/10-Now.md` / `docs/development/current/main/30-Backlog.md` / `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md`
|
||||
- 検証: `cargo build --release` / `./tools/smokes/v2/run.sh --profile quick` / `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`
|
||||
|
||||
**2025-12-30: Phase 29ao P35 完了** ✅
|
||||
- 目的: shadow adopt タグの必須/禁止を SSOT 化し、Pattern1 subset reject の negative gate を回帰で固定(仕様不変)
|
||||
- 変更: `docs/development/current/main/design/coreplan-shadow-adopt-tag-coverage-ssot.md` / `docs/development/current/main/phases/phase-29ao/README.md` / `docs/development/current/main/10-Now.md` / `docs/development/current/main/30-Backlog.md` / `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md`
|
||||
|
||||
@ -15,7 +15,7 @@ Related:
|
||||
|
||||
- **Phase 29ao(active): CorePlan composition from Skeleton/Feature**
|
||||
- 入口: `docs/development/current/main/phases/phase-29ao/README.md`
|
||||
- 状況: P0–P35 ✅ 完了 / Next: P36(TBD)
|
||||
- 状況: P0–P36 ✅ 完了 / Next: P37(TBD)
|
||||
- Next 指示書: TBD
|
||||
|
||||
- **Phase 29af(✅ COMPLETE): Boundary hygiene / regression entrypoint / carrier layout SSOT**
|
||||
|
||||
@ -18,10 +18,13 @@ Scope: Repo root の旧リンク互換。現行の入口は `docs/development/cu
|
||||
**CorePlan migration 道筋 SSOT**
|
||||
`docs/development/current/main/design/coreplan-migration-roadmap-ssot.md` が移行タスクの Done 判定の入口。
|
||||
|
||||
**Next implementation (Phase 29ao P36)**
|
||||
**Next implementation (Phase 29ao P37)**
|
||||
- 目的: TBD
|
||||
- 指示書: TBD
|
||||
- After P36: TBD
|
||||
- After P37: TBD
|
||||
|
||||
**2025-12-30: Phase 29ao P36 COMPLETE (release adopt Pattern1 CorePlan skeleton pilot)**
|
||||
Pattern1 subset を release 既定でも Facts→CorePlan(skeleton) に寄せる Stage-2 パイロットを開始した(仕様不変)。
|
||||
|
||||
**2025-12-30: Phase 29ao P35 COMPLETE (shadow-adopt tag coverage SSOT + pattern1 negative gate)**
|
||||
shadow adopt タグの必須/禁止を SSOT 化し、Pattern1 subset reject の negative gate を回帰で固定した(仕様不変)。
|
||||
|
||||
@ -201,8 +201,12 @@ Gate(SSOT):
|
||||
- 指示書: `docs/development/current/main/phases/phase-29ao/P35-SHADOW-ADOPT-TAG-COVERAGE-SSOT-AND-PATTERN1-NEGATIVE-GATE-INSTRUCTIONS.md`
|
||||
- ねらい: タグ必須/禁止を SSOT 化し、Pattern1 subset reject の negative gate を回帰で固定(仕様不変)
|
||||
|
||||
## P36: Stage-2 pilot — release adopt Pattern1 CorePlan skeleton (subset) ✅
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29ao/P36-RELEASE-ADOPT-PATTERN1-COREPLAN-SKELETON-PILOT-INSTRUCTIONS.md`
|
||||
- ねらい: Pattern1 subset を release 既定でも Facts→CorePlan(skeleton) で採用する Stage-2 パイロット(仕様不変)
|
||||
|
||||
## Next(planned)
|
||||
|
||||
- Next: P36(Stage-2 pilot)
|
||||
- 指示書: `docs/development/current/main/phases/phase-29ao/P36-RELEASE-ADOPT-PATTERN1-COREPLAN-SKELETON-PILOT-INSTRUCTIONS.md`
|
||||
- After P36: TBD
|
||||
- Next: P37(TBD)
|
||||
- After P37: TBD
|
||||
|
||||
@ -349,6 +349,18 @@ pub(crate) fn route_loop_pattern(
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
|
||||
if !strict_or_dev {
|
||||
if let Some(core_plan) = composer::try_release_adopt_core_plan_for_pattern1(
|
||||
builder,
|
||||
ctx,
|
||||
&domain_plan,
|
||||
&outcome,
|
||||
)? {
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
}
|
||||
|
||||
return lower_via_plan(builder, domain_plan, ctx);
|
||||
}
|
||||
|
||||
|
||||
@ -9,7 +9,9 @@ use crate::mir::builder::control_flow::plan::normalize::CanonicalLoopFacts;
|
||||
use crate::mir::builder::control_flow::plan::planner::Freeze;
|
||||
use crate::mir::builder::MirBuilder;
|
||||
|
||||
pub(in crate::mir::builder) use shadow_adopt::{try_shadow_adopt_core_plan, ShadowAdoptOutcome};
|
||||
pub(in crate::mir::builder) use shadow_adopt::{
|
||||
try_release_adopt_core_plan_for_pattern1, try_shadow_adopt_core_plan, ShadowAdoptOutcome,
|
||||
};
|
||||
|
||||
#[allow(dead_code)]
|
||||
pub(in crate::mir::builder) fn try_compose_domain_plan_from_canonical_facts(
|
||||
|
||||
@ -5,6 +5,7 @@ use crate::ast::{ASTNode, Span};
|
||||
use crate::mir::builder::control_flow::joinir::patterns::router::LoopPatternContext;
|
||||
use crate::mir::builder::control_flow::plan::normalize::CanonicalLoopFacts;
|
||||
use crate::mir::builder::control_flow::plan::planner::PlanBuildOutcome;
|
||||
use crate::mir::builder::control_flow::plan::policies::pattern1_subset_policy::is_pattern1_step_only_body;
|
||||
use crate::mir::builder::control_flow::plan::{
|
||||
CorePlan, DomainPlan, Pattern2BreakPlan, Pattern2PromotionHint,
|
||||
Pattern3IfPhiPlan, Pattern5InfiniteEarlyExitPlan, ScanDirection, ScanWithInitPlan,
|
||||
@ -25,6 +26,32 @@ pub(in crate::mir::builder) fn compose_coreplan_for_pattern1_simplewhile(
|
||||
PlanNormalizer::normalize_loop_skeleton_from_facts(builder, facts, ctx)
|
||||
}
|
||||
|
||||
pub(in crate::mir::builder) fn try_release_adopt_core_plan_for_pattern1(
|
||||
builder: &mut MirBuilder,
|
||||
ctx: &LoopPatternContext,
|
||||
domain_plan: &DomainPlan,
|
||||
outcome: &PlanBuildOutcome,
|
||||
) -> Result<Option<CorePlan>, String> {
|
||||
if !matches!(domain_plan, DomainPlan::Pattern1SimpleWhile(_)) {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
let Some(facts) = outcome.facts.as_ref() else {
|
||||
return Ok(None);
|
||||
};
|
||||
let Some(pattern1) = facts.facts.pattern1_simplewhile.as_ref() else {
|
||||
return Ok(None);
|
||||
};
|
||||
if !is_pattern1_step_only_body(ctx.body, &pattern1.loop_var) {
|
||||
return Ok(None);
|
||||
}
|
||||
|
||||
match compose_coreplan_for_pattern1_simplewhile(builder, facts, ctx) {
|
||||
Ok(Some(core)) => Ok(Some(core)),
|
||||
Ok(None) | Err(_) => Ok(None),
|
||||
}
|
||||
}
|
||||
|
||||
pub(in crate::mir::builder) fn compose_coreplan_for_pattern2_break_subset(
|
||||
builder: &mut MirBuilder,
|
||||
facts: &CanonicalLoopFacts,
|
||||
|
||||
Reference in New Issue
Block a user