phase29ap(p10): coreplan adopt nested minimal (strict/dev)

This commit is contained in:
2025-12-31 07:49:48 +09:00
parent b209e17f3b
commit efe5e2deed
19 changed files with 1032 additions and 12 deletions

View File

@ -3,7 +3,7 @@
## Current Focus
- Phase: `docs/development/current/main/phases/phase-29ap/README.md`
- Next: Phase 29ap P10 (planned; see `docs/development/current/main/phases/phase-29ap/README.md`)
- Next: Phase 29ap P11 (planned; see `docs/development/current/main/phases/phase-29ap/README.md`)
## Gate (SSOT)

View File

@ -5,7 +5,7 @@ Scope: 「次にやる候補」を短く列挙するメモ。入口は `docs/dev
## Active
- Phase 29ap: `docs/development/current/main/phases/phase-29ap/README.md` (Next: P10 planned)
- Phase 29ap: `docs/development/current/main/phases/phase-29ap/README.md` (Next: P11 planned)
- JoinIR regression gate SSOT: `docs/development/current/main/phases/phase-29ae/README.md`
- CorePlan hardening (docs-first): `docs/development/current/main/phases/phase-29al/README.md`

View File

@ -34,7 +34,7 @@ Related:
## 1.1 Current (active)
- Active phase: `docs/development/current/main/phases/phase-29ap/README.md`
- Next step: Phase 29ap P10 (planned)
- Next step: Phase 29ap P11 (planned)
## 2. すでに固めた SSOT再発防止の土台

View File

@ -0,0 +1,40 @@
# Phase 29ap P10: Pattern6_NestedLoopMinimal minimal CorePlan subset (strict/dev)
## Goal
- In strict/dev, adopt a minimal nested-loop CorePlan for the `phase1883_nested_minimal` shape.
- Keep release/default behavior unchanged (legacy JoinIR path remains).
- Fail-fast in strict/dev when nested loops are detected but the subset does not match.
## Subset (SSOT)
- Outer loop: `loop(i < <int>)` with step `i = i + 1` (step=1 only).
- Inner loop: `loop(j < <int>)` with body `sum = sum + 1; j = j + 1` (step=1 only).
- Inner init: `j = 0` (via `local j` + assignment, or `local j = 0`).
- No break/continue/return inside outer or inner loop.
- No value-join / exitmap / cleanup (presence must be empty).
## Steps
1. Facts (SSOT)
- Add `Pattern6NestedMinimalFacts` and wire it into `LoopFacts` (optional field).
- Keep `Ok(None)` for non-matches; no hardcode by-name.
2. Composer v2 (strict/dev)
- Add `coreloop_v2_nested_minimal.rs` and compose a single CoreLoopPlan with a nested CFG.
- Body remains effect-only (j-init only); inner loop is encoded via extra blocks + Frag wiring.
3. Strict/dev adopt
- If nested facts are present, adopt and emit tag:
- `[coreplan/shadow_adopt:pattern6_nested_minimal]`
- If nested facts are missing, keep the strict/dev freeze (fail-fast).
4. Smoke gate
- Update `phase29ap_pattern6_nested_strict_shadow_vm.sh` to require the shadow-adopt tag.
## Verification
- `cargo build --release`
- `./tools/smokes/v2/run.sh --profile quick`
- `./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh`

View File

@ -108,6 +108,16 @@ Gate (SSOT):
- Release/default behavior remains unchanged.
- Gate stays green.
## P10: Pattern6_NestedLoopMinimal minimal CorePlan subset (strict/dev) ✅
- Scope:
- Add nested minimal facts (outer+inner loop subset) and project into canonical facts.
- Compose nested loop CorePlan v2 in strict/dev and emit shadow-adopt tag.
- Update the strict smoke to require the new tag.
- Guardrails:
- Release/default behavior remains unchanged (legacy JoinIR path stays).
- Gate stays green.
## Next (planned)
- P10: Pattern6_NestedLoopMinimal migration/design (keep nested gate green)
- P11: Pattern6_NestedLoopMinimal release adopt (TBD; keep strict gate green)