# JoinIR Merge Coordinator（箱の地図）

責務: JoinIR 生成物をホスト MIR に統合するフェーズ（block/ValueId remap → rewrite → PHI/ExitLine 再接続）。

主な箱と入口:
- `instruction_rewriter.rs` — JoinIR→MIR 命令を書き換えつつブロックを組み立てるメイン導線
- `phi_block_remapper.rs` — PHI の block-id だけを再マップする専用箱（ValueId は remapper 済みを前提）
- `loop_header_phi_builder.rs` / `exit_phi_builder.rs` — ヘッダ/出口 PHI の組み立て
- `inline_boundary_injector.rs` — Host↔JoinIR の ValueId 接続（Boundary 注入）
- `value_collector.rs` / `block_allocator.rs` — 再マップ前の収集と ID 割り当て
- `tail_call_classifier.rs` — tail call 判定（loop_step の末尾呼び出し検出）

Fail-Fast の基本:
- block/ValueId 衝突や PHI 契約違反は握りつぶさず `Err` で止める
- remap は「ValueId remap」→「block-id remap」の順で一貫させる（PHI 二度 remap は禁止）

拡張時のチェックリスト:
1. 新しい JoinInst → MIR 変換を追加する場合、`instruction_rewriter` に閉じて追加し、PHI/ExitLine 契約が壊れないか確認。
2. PHI の入力ブロックを触るときは `phi_block_remapper` 経由に寄せて二重 remap を防ぐ。
3. 増やした box/契約はここ（README）に一言追記して入口を明示。
