phase29ao(p26): strict/dev adopt pattern2 break subset from facts

This commit is contained in:
2025-12-30 13:30:28 +09:00
parent 00f824e3e5
commit 52fc3f9353
9 changed files with 81 additions and 12 deletions

View File

@ -420,6 +420,29 @@ pub(crate) fn route_loop_pattern(
return PlanLowerer::lower(builder, core_plan, ctx);
}
if strict_or_dev
&& matches!(
domain_plan,
crate::mir::builder::control_flow::plan::DomainPlan::Pattern2Break(_)
)
&& matches!(
outcome.plan.as_ref(),
Some(crate::mir::builder::control_flow::plan::DomainPlan::Pattern2Break(_))
)
{
let facts = outcome
.facts
.as_ref()
.ok_or_else(|| "pattern2 strict/dev adopt failed: facts missing".to_string())?;
if facts.facts.pattern2_break.is_none() {
return Err("pattern2 strict/dev adopt failed: facts mismatch".to_string());
}
let core_plan = PlanNormalizer::normalize_pattern2_break_from_facts(builder, facts, ctx)?
.ok_or_else(|| "pattern2 strict/dev adopt failed: compose rejected".to_string())?;
PlanVerifier::verify(&core_plan)?;
return PlanLowerer::lower(builder, core_plan, ctx);
}
return lower_via_plan(builder, domain_plan, ctx);
}