4.7 KiB
4.7 KiB
Status, Scope, Related
| Status | Scope | Related | ||||
|---|---|---|---|---|---|---|
| Active | Legacy extractor reduction (planner+composer SSOT) |
|
Phase 29ap: Legacy extractor reduction (Step-E)
Goal: Reduce legacy extractor fallbacks while keeping planner+composer as the SSOT path.
Gate (SSOT):
./tools/smokes/v2/profiles/integration/joinir/phase29ae_regression_pack_vm.sh
P0: Reduce legacy extractors (Pattern1/3) ✅
- Scope:
- Remove Pattern1/3 extractor fallbacks in
single_planner. - Remove Pattern3 JoinIR router entry so plan line is the only path.
- Pattern1 JoinIR entry is retained for now (stdlib loops still rely on it).
- Remove Pattern1/3 extractor fallbacks in
- Guardrails:
- Outcome remains
Ok(None)for non-matching cases. - No new logs or error strings.
- Outcome remains
P1: Reduce JoinIR wrappers (Pattern6/7) ✅
- Scope:
- Drop JoinIR-side Pattern6/7 wrapper modules (plan/composer is SSOT).
- Keep routing through single_planner → composer adopt.
- Guardrails:
- No change to pattern selection or logs.
P2: Pattern1 stdlib to_lower subset (Plan SSOT) ✅
- Scope:
- Add char-map Facts/Planner/Normalizer path for StringUtils.to_lower (subset).
- Add regression smoke for stdlib to_lower and wire it into JoinIR gate.
- Keep Pattern1 in JoinIR legacy router table for stdlib join until a plan-based subset exists.
- Guardrails:
- No new logs or error strings.
- Fallback remains
Ok(None)when shape does not match.
P3: Pattern1 stdlib join subset (Plan SSOT) ✅
- Scope:
- Add array-join Facts/Planner/Normalizer path for StringUtils.join (subset).
- Add regression smoke for stdlib join and wire it into JoinIR gate.
- Remove Pattern1 from JoinIR legacy router table.
- Guardrails:
- No new logs or error strings.
- Fallback remains
Ok(None)when shape does not match.
P4: JoinIR legacy table shrink (Pattern8 removal) ✅
- Scope:
- Remove Pattern8 from
LOOP_PATTERNSso plan/composer stays SSOT for normal loops. - Keep legacy table as a last resort for the remaining legacy entries.
- Remove Pattern8 from
- Guardrails:
- No change to logs or error strings.
- Legacy routing remains a last-resort fallback.
P5: Remove Pattern2 from JoinIR legacy table ✅
- Scope:
- Remove Pattern2 (with break) from
LOOP_PATTERNS. - Keep plan/composer as the only routing path for Pattern2.
- Remove Pattern2 (with break) from
- Guardrails:
- No change to logs or error strings.
- Fallback remains
Ok(None)for non-matching plan cases.
P6: stdlib trim_start/trim_end subset (Pattern2BreakFacts) ✅
- Scope:
- Add a conservative Pattern2BreakFacts subset for
trim_start/trim_end. - Normalize
not is_whitespace(...)intois_whitespace(...) == falsein facts. - Restore quick smoke by ensuring stdlib loops are handled by plan/composer.
- Add a conservative Pattern2BreakFacts subset for
- Guardrails:
- No new logs or error strings.
- Subset only: if shape deviates, return
Ok(None).
P7: Pattern9 legacy table removal ✅
- Scope:
- Pattern9 is not referenced by stdlib/quick/gate; only legacy pack SKIP remains.
- Removed Pattern9 from JoinIR legacy table (plan/composer remains SSOT).
- Guardrails:
- No change to logs or error strings.
P8: Remove Pattern4 legacy routing ✅
- Scope:
- Remove Pattern4_WithContinue from
LOOP_PATTERNS. - Add a minimal continue fixture + regression smoke under JoinIR gate.
- Remove Pattern4_WithContinue from
- Guardrails:
- No change to logs or error strings.
- Plan/composer remains the only routing path for Pattern4.
P9: Pattern6_NestedLoopMinimal strict/dev gate ✅
- Scope:
- Add nested-loop feature facts and project to canonical facts.
- In strict/dev, emit a
Freeze::unstructuredtag to avoid legacy fallback. - Add a strict shadow smoke for nested minimal and wire it into the gate.
- Guardrails:
- 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.
P11: Pattern6_NestedLoopMinimal release adopt ✅
- Scope:
- Non-strict/release adopts the nested minimal CorePlan v2 when facts are present.
- Strict/dev tag and fail-fast behavior remain unchanged.
- Legacy fallback remains for non-matches.
- Guardrails:
- No new logs/tags in release.
- Gate stays green.
Next (planned)
- P12: Decide final removal of legacy nested loop entry (gate-first)