# Phase 20.16 — Frozen v1(Stage 0→1→2) Purpose - 凍結ツールチェーンの最小一式(compiler/core, runtime/minimal‑vm, stdlib/minimal)を構築し、自己ビルドの再現性を確認する。 Strategy - Stage 0: Rust で frozen‑v1 をビルド(発射台) - Stage 1: frozen‑v1 で同一ソースを再ビルド(自己) - Stage 2: 生成物の hash/正規化 diff を比較し、再現性を確認(S3 は任意) Acceptance Criteria - S0→S1→S2 のビルドが安定し、S1 と S2 の差分が 0(または許容差分が文書化) - JSON v0 / Core 意味論 / 診断タグは v1 仕様として固定(docs 参照) - quick/integration は既定OFF、opt‑in で selfhost canary が全緑 Notes - 「削減%」のメトリクスは廃止。代わりに契約準拠率・再現性・パリティで測る。 - 詳細戦略: `../FROZEN_TOOLCHAIN_STRATEGY.md` - Stage driver: `docs/development/tools/stage-pipeline.md`(S0/S1/S2 の使い方) Results (closeout) - S2(strict) 比較は代表サンプルで緑(nested‑if, diamond+phi)。loop サンプルは verifier 警告の観測教材として保留。 - MIR JSON の安定化(ValueId の遭遇順リネンバリング)を導入し、2回 emit の差分を大幅に低減。 - child_env をヘルパーに一元化(selfhost 子/nyvm(Core)/Gate‑C JSON 経路)。inline selfhost 経路もヘルパー適用。 - HKI v1 bring-up: kni.* を第一表記にし、`HAKO_KNI_TIME` / `HAKO_KNI_FS` ゲートと Gate‑C preflight を追加。fs/time スモークを quick/core に追加。 - HKI canary を quick allowlist へ組み込み(opt‑in)。追加: `kni.fs.read_all` 負例/正例、`kni.time.now_ms`、`kni.console.log`。 - Gate‑C(Core) で Map 正例を追加(`canary_gate_c_core_map_(len|get)_vm.sh`)。 - 既定トグル: `SMOKES_ENABLE_CORE_CANARY=1` を明示したときのみ HKI 正例を実行(既定ONは Gate 整備後に再検討)。