Files
hakorune/docs/private/roadmap/phases/phase-20.19

Phase 20.19 — BridgeB強化と脱Rust前進P0/P1

Status: Completed (20251030)

目的

  • BridgeBNy/Core 直行をファイル入力まで完成execute_via_bridge_b
  • Core 側の FailFast を戻り値last_error_tagへ寄せ、Runner 整形を薄くする。
  • GateC(Core) の file/pipe の対称性を維持しつつ、TTL を計画的に撤去。
  • 次フェーズ以降に向け、自給自足ラインHakorune compiler → Koarune をコンパイル)へ道を開く。

背景(前フェーズの到達点)

  • Core dispatcher canaryoptin4/4 緑。タグ/rc整形の安定化済み。
  • BridgeB は include 方式で安定。タグ行優先・数値→rc=(val&0xFF)。
  • SSOTArray/Map/Stringを docs に集約し、GateC/Core と Runner 整形の役割分担を明確化。

スコープ(本フェーズ)

  • 実装P0
    • execute_via_bridge_b(file_path): .hako → selfhost emit(JSON) → try_lang_core_dispatch_json | .json → try_lang_core_dispatch_json
    • Core: last_error_tag の適用拡大Array/Map のFail系
    • Runner: BridgeB フォールバックのタグ合成ヒューリスティックを段階撤退last_error_tag が揃い次第)。
  • テスト/ドキュメント
    • BridgeBfile/pipecanary 2本成功時 rc/出力とタグの整合)。
    • SSOT に追補clear()/delete() の振る舞い、構文制限注記)。
    • CURRENT_TASK/CHECKLIST の更新と TTL 明記。

除外(本フェーズではやらない)

  • Rust Parser/AST の即時撤去(段階撤退方針を維持)。
  • Optimizer 大規模移行 / LLVM 外部化(計画のみ)。

受入れ基準

  • BridgeB: .hako 入力 → emit(JSON) → Core 実行が file/pipe の両方で PASS。
  • last_error_tag: String/Array/Map の代表Fail系が戻り値にタグを載せ、Runner 側がヒューリスティック無しでも整形可能(段階)。
  • quickoptinで BridgeB 追加 canary 緑。既存Coreカナリア4本は引き続き緑。

Koarune 自給自足ライン(位置づけ)

  • 目標: 「GoがGoをコンパイル」にならい、Hakorune compiler で Koarune をコンパイルする構図へ段階移行。
  • 進め方: まずは Ny/Hakorune compiler をSSOT化Core/Emit/BridgeBを安定化。Koaruneは言語面の最小サブセットからMIR(JSON)出力を得て、GateC/Core で実行確認。以降、文法・型・標準ライブラリを薄く拡張。
  • ガード: 既定挙動や公的仕様は揺らさず、常に optin で進める。

関連資料

  • docs/development/architecture/collection_semantics.mdSSOT
  • docs/development/architecture/core_diagnostics.md安定タグ/rc整形
  • docs/development/architecture/self_hosting_roadmap.mdKoarune 方向性)

実績(ハイライト)

  • GateC(Core) 直行の FailFast 化BridgeB 無応答時は静かなフォールバックを禁止し、安定タグで失敗)
  • BridgeB タイムアウト既定を 8s に調整(HAKO_BRIDGE_B_TIMEOUT_MS で上書き可能)
  • Core mir_call に ArrayBox.clear/0ModuleFunction エイリアス)を追加(メタデータのみクリア)
  • quick プロファイルはグリーン維持Core カナリアはオプトイン化)
  • BridgeB カナリアはオプトイン継続(デフォルトの緑を崩さない方針)

メモ(今後の扱い)

  • BridgeB は TTL 的に維持需要を見て緑化を後追い。Core 直行JSON→Interpreterを主経路とする。
  • last_error_tag は代表 Fail 系をカバー済みString.indexOf bang / Array.set OOB / Map.set invalid 等)。不足があればケース追加で拡張する。