Files
hakorune/docs/development/current/main/phases/phase-29ac

Phase 29ac: JoinIR thaw plan (Pattern6/7 near-miss → PASS)

Goal: Convert freeze-fixed Pattern6/7 near-miss cases into PASS while keeping contracts intact (no by-name or silent fallback).

Status

  • P1 Pattern6 reverse scan: Plan/Normalizer で受理して PASS
  • P2 Pattern6 matchscan: fixture を contract-aligned に修正して PASS
  • P3 Pattern7 split-scan: near-miss を contract-aligned な OK fixture として PASS 固定(元の契約違反 fixture は残す)

Target list (SSOT)

  • Pattern6/7 の OK/contract fixtures 一覧: docs/development/current/main/design/pattern6-7-contracts.md

Outcome

  • PASS/contract fixture の一覧は SSOT に集約(上記参照)。
  • Phase29ac では split-scan の fixup OK fixture を追加し、契約違反 fixture は維持。
  1. Pattern6 reverse scan
    • Plan/Normalizer: add reverse support (i >= 0, step i = i - 1).
    • Smoke: phase29ab_pattern6_reverse_ok_min now OK PASS (RC=1).
  2. Pattern6 matchscan missing step
    • Freeze reason: [joinir/phase29ab/pattern6/contract] scan-with-init contract: missing step update
    • Resolution: add explicit i = i + 1 step in fixture (contract-aligned).
  3. Pattern7 split-scan near-miss
    • Resolve then/else update mismatches without relaxing contracts.
    • Freeze reason: [joinir/phase29ab/pattern7/contract] split scan contract: else i update must be \i = i + 1``
    • Resolution: keep the contract-violation fixture as FAIL-Fast, and add a contract-aligned fixup fixture for PASS.

Commands

  • ./tools/smokes/v2/run.sh --profile integration --filter "phase29ab_pattern6_*"
  • ./tools/smokes/v2/run.sh --profile integration --filter "phase29ab_pattern7_*"
  • ./tools/smokes/v2/run.sh --profile integration --filter "phase29ab_pattern7_*"