## Phase 20.11 — AOT FFI + AotBox Plugin + Runner Decision(脱Rust/配布前進) 目的 - AOT の実用導線を「小ライブラリ + プラグイン(AotBox)」で公開し、将来は「プロセス → インプロセス(FFI)」へ段階移行。 - UsingResolver の“本配線”へ一歩前進(挙動不変のまま runner→ModuleFunction 決定導線を細く接続)。 - EXE 配布 UX を整える(ユーザーが自作ハコルネスクリプトを簡単に exe 化できる導線)。 範囲(変更は小差分・既定不変) - AOT: 入口は AotBox プラグイン(compile/2, link/3)を優先。内部で C‑ABI 小ライブラリ → FFI(native/harness/rust) を委譲。 - 直結の小ライブラリ経路は後方互換として温存(プラグイン未ロード時のフォールバック)。 - Runner: UsingResolver.resolve/1 の結果(JSON)を受け取り、Rust 側は検証/整流へ寄せるためのフックをゲート配下に追加。 - 配布: bin ランチャと dist レイアウトの雛形を整備。OS 別アーティファクトの配置規約を固定。 ゲート - `HAKO_AOT_USE_FFI=1`(既定OFF): ny-llvmc を in‑process で呼ぶ FFI 経路に切替(現時点スタブ)。 - `HAKO_AOT_USE_PLUGIN=1`(既定OFF): emit-exe 経路を AotBox 経由に切替(段階導入・挙動不変)。 - `HAKO_CODEGEN={llvm|cranelift}`(既定=llvm): 将来の Cranelift 実験を opt‑in で許可。 - `HAKO_USING_DECISION_FROM_LANG=1`(既定OFF): runner→ModuleFunction の決定を使用(失敗は Fail‑Fast・短文)。 受け入れ基準(概要) - AOT: 小ライブラリ・プラグイン・CLI の3経路が依存あり環境で PASS(従来のプロセス版も PASS)。 - Runner: 決定フック ON でも挙動不変(短文観測のみ)。負例は FAIL を短文で観測できる。 - 配布: dist テンプレがビルドで生成可能、bin ランチャで OS 自動委譲が動作。 参照 - phase-20.10(Runner/UsingResolver 観測)、c-abi-aot.md、runner-facade.md、env-variables.md - plugins/(AotBox の配置・ビルド方針)