Files
hakorune/docs/private/roadmap/phases/phase-20.15/README.md

39 lines
2.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Phase 20.15 — Selfhost αFreezeFirst + DualRun
Purpose
- 「削減%」ではなく「契約凍結+二重運用」で自立へ進める初回フェーズ。
- JSON v0 MIR スキーマと Core VM 最小意味論を固定し、Selfhost 最小ラインを quick に導線。
Strategy
- Freeze the contracts first: JSON v0 keys/型/operation 語彙と Core 最小 ops を docs/スモークで固定。
- DualRun migration: 同契約に対して Rust/LLVM と Hakorune(Core) を並走ENV/プロファイルで切替)。
Goals (highlevel)
- Core VM: mir_callArray/Map/Extern/Method 代表)と const/binop/compare/branch/jump/phi/load/store/copy/typeop の FailFast とタグ整備。
- Builder: 単一パス emit を維持し、usedbeforedef を reader/validator で FailFast。
- Canaries: emit→Core の return/binop/if/map/array 正負例を quick に追加既定OFF
- Front: adopt/noop/fail の契約を薄く定義既定OFF、将来の切替点
NonGoals (20.15)
- 既定挙動の変更はしない(すべて gate 配下)。広域リファクタは行わない。
Acceptance Criteria
- 契約準拠 canaryreturn/binop/if/array/map`SMOKES_ENABLE_2015=1` で緑。
- Core の新規 mir_call カバレッジに安定タグが付与され、負例は FailFast で固定。
- Builder→JSON v0 で usedbeforedef を出さないreader/validator で検出可能)。
Status (Final)
- quick/core canariesemit→Core: 正例/負例 含む代表4本が全て PASS
- map_len_getrc=7, phi_diamondrc固定
- array_set_oob_fail → [core/mir_call] array set out of bounds非0
- map_get_missing_fail → [core/mir_call] map get missing key非0
- JSON v0 schema を docs/development/architecture/mir_json_v0_schema.md に固定
Gates (default OFF)
- SMOKES_ENABLE_2015=1 — 20.15 canary 有効化
- HAKO_CORE_2015=1 — Core の拡張パスを許可
Notes
- ENV は HAKO_* 優先・NYASH_* は互換docs で alias を明記)。
- 詳細戦略: `docs/private/roadmap/phases/FROZEN_TOOLCHAIN_STRATEGY.md`