# Phase 266 — EdgeCFG wires → MIR terminator（test-only PoC）

Status: Completed ✅  
SSOT (design): `docs/development/current/main/design/edgecfg-fragments.md`

## ゴール
- `Frag.wires`（解決済み配線）を **MIR terminator** に落とす最小 PoC を作る
- JoinIR/NormalizedShadow には触らず、**MIR BasicBlockId 層だけ**で証明する

## 完了内容
- `emit_wires(function, wires)` を SSOT として追加（Jump/Return のみ）
  - `from` ごとにグループ化し **1 block = 1 terminator** を Fail-Fast で強制
  - `Return` は `target=None` を許可（target が意味を持たない）
  - `Jump` は `set_jump_with_edge_args()`（Phase 260 の SSOT ルール）
  - `Return` は `set_terminator(Return) + set_return_env()`（Return 専用メタ）
- `verify_frag_invariants_strict()` を追加（段階導入）
  - 既存 `verify_frag_invariants()` は警告のまま維持
  - strict は `wires/exits` 分離契約を Err 化（PoC/emit 側のみ）

## 主要ファイル
- `src/mir/builder/control_flow/edgecfg/api/emit.rs`
- `src/mir/builder/control_flow/edgecfg/api/verify.rs`
- `src/mir/builder/control_flow/edgecfg/api/mod.rs`

## テスト
- `emit` のユニットテスト（Jump/Return/unwired/multiple-from）を追加し PASS

## 次フェーズ
- Phase 267:
  - Branch の生成（wires → MIR）を追加
  - JoinIR/NormalizedShadow/Pattern6/7/8 の実適用（層境界を守って段階導入）
