diff --git a/docs/development/current/main/10-Now.md b/docs/development/current/main/10-Now.md
index e8ecb84b..ddd45bfc 100644
--- a/docs/development/current/main/10-Now.md
+++ b/docs/development/current/main/10-Now.md
@@ -3,7 +3,7 @@
## Current Focus
- Phase: `docs/development/current/main/phases/phase-29ao/README.md`
-- Next: TBD (P45 done; see `docs/development/current/main/phases/phase-29ao/README.md`)
+- Next: TBD (P46 done; see `docs/development/current/main/phases/phase-29ao/README.md`)
## Gate (SSOT)
diff --git a/docs/development/current/main/30-Backlog.md b/docs/development/current/main/30-Backlog.md
index 51831a33..87ee7bc0 100644
--- a/docs/development/current/main/30-Backlog.md
+++ b/docs/development/current/main/30-Backlog.md
@@ -5,7 +5,7 @@ Scope: 「次にやる候補」を短く列挙するメモ。入口は `docs/dev
## Active
-- CorePlan migration: `docs/development/current/main/phases/phase-29ao/README.md`(Next: TBD, P45 done)
+- CorePlan migration: `docs/development/current/main/phases/phase-29ao/README.md`(Next: TBD, P46 done)
## Near-Term Candidates
diff --git a/docs/development/current/main/design/coreplan-migration-roadmap-ssot.md b/docs/development/current/main/design/coreplan-migration-roadmap-ssot.md
index de94d39f..a4abfa33 100644
--- a/docs/development/current/main/design/coreplan-migration-roadmap-ssot.md
+++ b/docs/development/current/main/design/coreplan-migration-roadmap-ssot.md
@@ -34,7 +34,7 @@ Related:
## 1.1 Current (active)
- Active phase: `docs/development/current/main/phases/phase-29ao/README.md`
-- Next step: TBD (P45 done)
+- Next step: TBD (P46 done)
## 2. すでに固めた SSOT(再発防止の土台)
diff --git a/docs/development/current/main/phases/phase-29ao/README.md b/docs/development/current/main/phases/phase-29ao/README.md
index 5e4c5472..33ec96d5 100644
--- a/docs/development/current/main/phases/phase-29ao/README.md
+++ b/docs/development/current/main/phases/phase-29ao/README.md
@@ -251,6 +251,11 @@ Gate(SSOT):
- 指示書: `docs/development/current/main/phases/phase-29ao/P45-CORELOOPCOMPOSER-V0-PATTERN6-SCANWITHINIT-INSTRUCTIONS.md`
- ねらい: Pattern6 planner subset の最小合成を v0 で開始し、composer に合成のSSOTを寄せる(仕様不変)
+## P46: CoreLoopComposer v0 — Pattern7 (SplitScan) minimal composition ✅
+
+- 指示書: `docs/development/current/main/phases/phase-29ao/P46-CORELOOPCOMPOSER-V0-PATTERN7-SPLITSCAN-INSTRUCTIONS.md`
+- ねらい: Pattern7 planner subset の最小合成を v0 で開始し、composer に合成のSSOTを寄せる(仕様不変)
+
## Next(planned)
- Next: TBD
diff --git a/src/mir/builder/control_flow/plan/composer/coreloop_v0.rs b/src/mir/builder/control_flow/plan/composer/coreloop_v0.rs
index e0e53c57..a4c39cff 100644
--- a/src/mir/builder/control_flow/plan/composer/coreloop_v0.rs
+++ b/src/mir/builder/control_flow/plan/composer/coreloop_v0.rs
@@ -11,7 +11,9 @@ use crate::mir::builder::control_flow::plan::normalize::CanonicalLoopFacts;
use crate::mir::builder::control_flow::plan::normalizer::{
build_pattern1_coreloop, PlanNormalizer,
};
-use crate::mir::builder::control_flow::plan::{CorePlan, ScanDirection, ScanWithInitPlan};
+use crate::mir::builder::control_flow::plan::{
+ CorePlan, ScanDirection, ScanWithInitPlan, SplitScanPlan,
+};
use crate::mir::builder::MirBuilder;
#[allow(dead_code)]
@@ -85,6 +87,52 @@ pub(in crate::mir::builder) fn try_compose_core_loop_v0_scan_with_init(
Ok(Some(core))
}
+#[allow(dead_code)]
+pub(in crate::mir::builder) fn try_compose_core_loop_v0_split_scan(
+ builder: &mut MirBuilder,
+ facts: &CanonicalLoopFacts,
+ ctx: &LoopPatternContext,
+) -> Result