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 (initial)
apps/tests/phase29ab_pattern6_reverse_firstfail_min.hakoapps/tests/phase29ab_pattern6_matchscan_firstfail_min.hakoapps/tests/phase29ab_pattern7_firstfail_min.hako
Outcome (SSOT)
PASS fixtures (behavioral)
- Pattern6 reverse scan OK:
apps/tests/phase29ab_pattern6_reverse_ok_min.hako(RC=1) - Pattern6 matchscan OK:
apps/tests/phase29ab_pattern6_matchscan_ok_min.hako(RC=1) - Pattern7 split-scan near-miss fixup OK:
apps/tests/phase29ac_pattern7_splitscan_nearmiss_fix_ok_min.hako(RC=3)
FAIL-Fast fixtures (contract boundary)
- Pattern6 scan-with-init contract violation:
apps/tests/phase29ab_pattern6_firstfail_min.hako(tag:[joinir/phase29ab/pattern6/contract]) - Pattern6 reverse scan contract violation:
apps/tests/phase29ab_pattern6_reverse_firstfail_min.hako(tag:[joinir/phase29ab/pattern6/contract]) - Pattern6 matchscan contract violation:
apps/tests/phase29ab_pattern6_matchscan_firstfail_min.hako(tag:[joinir/phase29ab/pattern6/contract]) - Pattern7 split-scan contract violation:
apps/tests/phase29ab_pattern7_firstfail_min.hako(tag:[joinir/phase29ab/pattern7/contract])
Pass order (recommended)
- Pattern6 reverse scan
- Plan/Normalizer: add reverse support (
i >= 0, stepi = i - 1). - Smoke:
phase29ab_pattern6_reverse_ok_minnow OK PASS (RC=1).
- Plan/Normalizer: add reverse support (
- Pattern6 matchscan missing step
- Freeze reason:
[joinir/phase29ab/pattern6/contract] scan-with-init contract: missing step update - Resolution: add explicit
i = i + 1step in fixture (contract-aligned).
- Freeze reason:
- 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 "phase29ac_pattern7_*"