# Phase 29ab: JoinIR completion triage (P1–P9)

Goal: Fix near-miss vs OK boundaries for Pattern2/6/7 and provide a single entry point for fixtures, smokes, and contracts.

## Contracts (SSOT)

- Pattern2 promotion: `src/mir/builder/control_flow/joinir/patterns/pattern2/api/README.md`
- Pattern6/7 contracts: `docs/development/current/main/design/pattern6-7-contracts.md`
- compose SSOT: `docs/development/current/main/design/edgecfg-fragments.md`

## Fixtures and Smokes

Pattern6/7 の OK/contract fixtures 一覧は SSOT に集約:
- `docs/development/current/main/design/pattern6-7-contracts.md`

### Pattern2 / Phase 263
- Pattern2 LoopBodyLocal min:
  - `apps/tests/phase29ab_pattern2_loopbodylocal_min.hako`
  - `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_min_vm.sh`
- Pattern2 LoopBodyLocal seg:
  - `apps/tests/phase29ab_pattern2_loopbodylocal_seg_min.hako`
  - `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_loopbodylocal_seg_min_vm.sh`
- Pattern2 seg notapplicable:
  - `apps/tests/phase29ab_pattern2_seg_notapplicable_min.hako`
  - `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_seg_notapplicable_min_vm.sh`
- Pattern2 seg freeze:
  - `apps/tests/phase29ab_pattern2_seg_freeze_min.hako`
  - `tools/smokes/v2/profiles/integration/apps/phase29ab_pattern2_seg_freeze_min_vm.sh`
- Phase 263 realworld seg (Derived slot path):
  - `apps/tests/phase263_pattern2_seg_realworld_min.hako`
  - `tools/smokes/v2/profiles/integration/apps/phase263_pattern2_seg_realworld_min_vm.sh`

## Commands

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