# CHECKLIST — Phase 20.33 (Stage‑B) - [x] Stage‑B 専用エントリ(`lang/src/compiler/entry/compiler_stageb.hako`)を追加。`--prefer-cfg` を受理。 - [x] `ParserBox.parse_program2` → AST JSON を取得(Quiet: 1行)。Stage‑A map parser は空/空白/エスケープに対応。 - [x] FlowEntry.emit_v0_from_ast_with_context(using/extern メタを統合)。 - [x] selfhost canary(return/binop/if/index)を Stage‑B でも PASS(opt‑in `SMOKES_ENABLE_STAGEB=1` で緑)。 - [x] v1→v0 降格(MirJsonV1Adapter)経路を整備(`--v1-compat` / `selfhost_stageb_v1_compat_vm` opt-in)。 - [x] tools/smokes/v2/profiles/quick/core/selfhost_* を追加(opt‑in)。配列ネスト/境界ケースを含む。 - [x] ドキュメント更新(README/PLAN/CHECKLIST)。 -— 未完(本フェーズ内で進める) — - [x] Gate‑C(Core) v1→MIR Interpreter 実行(`HAKO_NYVM_CORE=1`/最小ブリッジ)。 - [ ] NyVmDispatcher 直行(別タスク・将来対応)。 - [ ] v1→v0 最小ダウングレード(任意・`HAKO_NYVM_V1_DOWNCONVERT=1`)。未対応命令は Fail‑Fast。 - [x] Bridge 正規化: `HAKO_BRIDGE_INJECT_SINGLETON` 実装(Array/Map len → Method 化、Fail‑Fast 付き)。 - [x] Bridge 正規化: `HAKO_BRIDGE_EARLY_PHI_MATERIALIZE` 実装(φ をブロック先頭へ移動、順序保護)。 - [ ] 静的Boxメソッドの self 先頭統一(LLVM 命令Boxを含む)。互換が必要な経路は `HAKO_BRIDGE_INJECT_SINGLETON=1` で補完。 - [x] Gate‑C file/pipe × Plugins ON/OFF の対称性スモーク(数値出力=終了コード)。 - [ ] Stage‑A map リテラルの堅牢化(エスケープ/Unicode/{}/不正形診断)。 - [x] スモーク実行権限(core/* に chmod +x 反映)。 - [ ] 参照の古い表記整理(apps/selfhost-compiler → lang/src/compiler/* に統一。履歴注記は残す)。 - [ ] ランナー子環境ヘルパーの集約(selfhost 経路の ENV を helper へ)。 - [ ] Extern SSOT(VM/AOT 共通ローダ、既定OFF)。 ▼ 付記(ワークログ) - 2025‑11‑01: Runner の Gate‑C v1 直行(子プロセスで Hako controller 起動)を配線。ただし Hako 側で `call("…")` 解決に失敗→直行NG。v1→MIR Interpreter(最小ブリッジ const/copy/ret)は動作。 - 2025‑11‑01: Bridge トグル(len 変換/φ 先頭化)実装。Gate‑C v1 parity スモーク(file/pipe、plugins ON/OFF)と Stage‑A map 境界スモークを追加(opt‑in)。