phase29ao(p17): strict/dev adopt pattern1 skeleton
This commit is contained in:
@ -18,10 +18,8 @@ Scope: Repo root の旧リンク互換。現行の入口は `docs/development/cu
|
||||
**CorePlan migration 道筋 SSOT**
|
||||
`docs/development/current/main/design/coreplan-migration-roadmap-ssot.md` が移行タスクの Done 判定の入口。
|
||||
|
||||
**Next implementation (Phase 29ao P17)**
|
||||
Pattern1 を strict/dev のみ Facts→CorePlan(skeleton) で組み立てて採用する(shadow adopt)。
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
|
||||
**Next implementation (Phase 29ao P18)**
|
||||
TBD
|
||||
|
||||
**2025-12-29: Phase 29am P0 COMPLETE (CorePlan If/Exit lowerer/verifier)**
|
||||
CorePlan の If/Exit を lowerer/verifier で扱えるようにして、CorePlan 移行の土台を作った。
|
||||
@ -29,6 +27,9 @@ CorePlan の If/Exit を lowerer/verifier で扱えるようにして、CorePlan
|
||||
**2025-12-30: Phase 29ao P12 COMPLETE (Pattern7 SplitScan step join via block_params)**
|
||||
Pattern7 SplitScan の step join を `Frag.block_params + EdgeArgs` で表現し、CorePhiInfo の step PHI を撤去した。
|
||||
|
||||
**2025-12-30: Phase 29ao P17 COMPLETE (Pattern1 strict/dev shadow adopt)**
|
||||
strict/dev のみ Facts→CorePlan(skeleton) を採用し、既定経路は維持した。
|
||||
|
||||
**2025-12-30: Phase 29ao P14 COMPLETE (Pattern2 Break exit join via block_params)**
|
||||
Pattern2 Break の after join を `Frag.block_params + EdgeArgs` で表現し、CorePhiInfo の after PHI を撤去した。
|
||||
|
||||
|
||||
@ -2,8 +2,8 @@
|
||||
|
||||
## Current Focus: Phase 29ao(CorePlan composition)
|
||||
|
||||
Next: Phase 29ao P17(Pattern1 composer strict/dev shadow)
|
||||
指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
|
||||
Next: Phase 29ao P18(TBD)
|
||||
指示書: TBD
|
||||
運用ルール: integration filter で phase143_* は回さない(JoinIR 回帰は phase29ae pack のみ)
|
||||
運用ルール: phase286_pattern9_* は legacy pack (SKIP) を使う
|
||||
移行道筋 SSOT: `docs/development/current/main/design/coreplan-migration-roadmap-ssot.md`
|
||||
@ -93,6 +93,11 @@ Next: Phase 29ao P17(Pattern1 composer strict/dev shadow)
|
||||
- 変更: `src/mir/builder/control_flow/plan/normalizer/pattern5_infinite_early_exit.rs` / `tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh` / `docs/development/current/main/phases/phase-29ae/README.md`
|
||||
- 検証: `cargo test --release -p nyash-rust --lib` / `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 P17 完了** ✅
|
||||
- 目的: strict/dev のみ Pattern1 を Facts→CorePlan(skeleton) で shadow adopt
|
||||
- 変更: `src/mir/builder/control_flow/joinir/patterns/router.rs` / `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
|
||||
- 検証: `cargo test --release -p nyash-rust --lib` / `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 P15 完了** ✅
|
||||
- 目的: P0–P14 の成果を closeout 形式でまとめ、次フェーズ(Phase 29ao)入口を固定
|
||||
- 変更: `docs/development/current/main/phases/phase-29an/README.md` / `docs/development/current/main/10-Now.md` / `docs/development/current/main/30-Backlog.md` / `CURRENT_TASK.md`
|
||||
|
||||
@ -15,8 +15,8 @@ Related:
|
||||
|
||||
- **Phase 29ao(active): CorePlan composition from Skeleton/Feature**
|
||||
- 入口: `docs/development/current/main/phases/phase-29ao/README.md`
|
||||
- 状況: P0–P16 ✅ 完了 / Next: P17(Pattern1 composer strict/dev shadow)
|
||||
- Next 指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
|
||||
- 状況: P0–P17 ✅ 完了 / Next: P18(TBD)
|
||||
- Next 指示書: TBD
|
||||
|
||||
- **Phase 29af(✅ COMPLETE): Boundary hygiene / regression entrypoint / carrier layout SSOT**
|
||||
- 入口: `docs/development/current/main/phases/phase-29af/README.md`
|
||||
|
||||
@ -103,7 +103,11 @@ Gate(SSOT):
|
||||
- 指示書: `docs/development/current/main/phases/phase-29ao/P16-VALUEJOIN-REAL-USAGE-PATTERN5-EXITJOIN-INSTRUCTIONS.md`
|
||||
- ねらい: after join の 1 PHI を `Frag.block_params + EdgeArgs` で表現し、exit join の経路を 1 件固定
|
||||
|
||||
## P17: Pattern1 を Facts→CorePlan へ寄せる(strict/dev のみ shadow adopt)✅
|
||||
|
||||
- 指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
|
||||
- ねらい: strict/dev のみ Facts→CorePlan(skeleton) を採用し、既定経路は維持
|
||||
|
||||
## Next(planned)
|
||||
|
||||
- P17: Pattern1 を Facts→CorePlan へ寄せる(strict/dev のみ shadow adopt)
|
||||
- 指示書: `docs/development/current/main/phases/phase-29ao/P17-COMPOSER-PATTERN1-STRICT-SHADOW-INSTRUCTIONS.md`
|
||||
- P18: TBD
|
||||
|
||||
@ -28,6 +28,7 @@ use crate::mir::loop_pattern_detection::{LoopFeatures, LoopPatternKind};
|
||||
use crate::mir::builder::control_flow::plan::lowerer::PlanLowerer;
|
||||
use crate::mir::builder::control_flow::plan::normalizer::PlanNormalizer;
|
||||
use crate::mir::builder::control_flow::plan::verifier::PlanVerifier;
|
||||
use crate::mir::builder::control_flow::plan::planner::{self, PlannerContext};
|
||||
use crate::mir::builder::control_flow::plan::single_planner;
|
||||
|
||||
/// AST Feature Extractor (declared in mod.rs as pub module, import from parent)
|
||||
@ -332,6 +333,38 @@ pub(crate) fn route_loop_pattern(
|
||||
|
||||
// Phase 29ai P5: Single entrypoint for plan extraction (router has no rule table).
|
||||
if let Some(domain_plan) = single_planner::try_build_domain_plan(ctx)? {
|
||||
let strict_or_dev = crate::config::env::joinir_dev::strict_enabled()
|
||||
|| crate::config::env::joinir_dev_enabled();
|
||||
|
||||
if strict_or_dev
|
||||
&& matches!(
|
||||
domain_plan,
|
||||
crate::mir::builder::control_flow::plan::DomainPlan::Pattern1SimpleWhile(_)
|
||||
)
|
||||
{
|
||||
let planner_ctx = PlannerContext {
|
||||
pattern_kind: Some(ctx.pattern_kind),
|
||||
in_static_box: ctx.in_static_box,
|
||||
debug: ctx.debug,
|
||||
};
|
||||
let outcome = planner::build_plan_with_facts_ctx(&planner_ctx, ctx.condition, ctx.body)
|
||||
.map_err(|freeze| freeze.to_string())?;
|
||||
let facts = outcome
|
||||
.facts
|
||||
.as_ref()
|
||||
.ok_or_else(|| "pattern1 strict/dev adopt failed: facts missing".to_string())?;
|
||||
if facts.facts.pattern1_simplewhile.is_none() {
|
||||
return Err("pattern1 strict/dev adopt failed: facts mismatch".to_string());
|
||||
}
|
||||
let core_plan =
|
||||
PlanNormalizer::normalize_loop_skeleton_from_facts(builder, facts, ctx)?
|
||||
.ok_or_else(|| {
|
||||
"pattern1 strict/dev adopt failed: skeleton compose rejected".to_string()
|
||||
})?;
|
||||
PlanVerifier::verify(&core_plan)?;
|
||||
return PlanLowerer::lower(builder, core_plan, ctx);
|
||||
}
|
||||
|
||||
return lower_via_plan(builder, domain_plan, ctx);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user