第 8 章 ロードマップ

本章では Fayger 第一フェーズの境界を述べ、既知の方向に沿って後続フェーズの進化計画を示します。各進化項目は現アーキテクチャに与える影響範囲を注記し、後続設計が方向性を収斂しやすくします。

8.1 第一フェーズの範囲

第一フェーズで提供する Fayger は最低限:

  • 三層構造(Loader / Runtime / Adapter)の安定契約。
  • BuF 成果物の五段構成と確定的 CBOR Manifest / Section_Index。
  • ロードチェーン:Read(Header/Manifest/Index) → Parse → Verify(Structural) → Verify(Digest of Header/Manifest/Index) → Verify(Signature) → Negotiate Version → Select(Sections by LoadProfile) → Resolve → Read(Selected Section Bodies)? → HandOff。
  • BuF_Source 抽象。任意の格納バックエンド(ローカル、ネットワーク、オブジェクトストレージ、ユーザー定義)に対応。
  • 部分ロード(プロファイル駆動 Section 選択)と遅延ロード(Eager / Lazy の二つの LoadStrategy)。性能制約の端末(ドローン、カメラ)のサイズと実行時取得需要をカバー。
  • 解釈実行パス、BuF_Instance ライフサイクル状態機械と障害分離。
  • Universal_Instruction 8 カテゴリと内蔵 Platform_Adapter 4 種(デスクトップ / サーバー / ブラウザ / In-App)。
  • 統一エラーモデルと可観測性イベントバス。ロード層エラーは phase タグ付き。
  • 署名検証、強制署名モード、信頼ルート更新の可視性。

8.2 第一フェーズの非目標

第一フェーズの複雑度を抑えるため、次の方向は明示的に提供しません:

  • BuF_Instance 間の共有メモリと IPC プロトコル。
  • JIT コンパイルと機械語生成。
  • 分散スケジューリングと多ノード Fayger 連携。
  • BuF の差分配布と成果物横断の階層キャッシュ(部分ロードは単一成果物内の段選別をカバーするが、成果物横断の差分再利用と Distribution プロトコルは後続へ)。
  • 内蔵リモートリポジトリ / Distribution プロトコル。

非目標は「将来も不要」を意味せず、「現状契約面に存在しない」だけ。後続フェーズの追加は既存契約を破壊しない形で行います。

8.3 後続フェーズ 1:実行性能

主軸:Runtime_Interface を破壊せずに、より高効率な実行パスを追加。

8.3.1 ExecutionStrategy 抽象

「BuF 内の意味論をどう実行するか」を戦略として抽出:

interface ExecutionStrategy {
  prepare(obj: BuFObject) -> PreparedExecutable
  step(exec: PreparedExecutable, ctx: ExecutionContext) -> StepResult
}

第一フェーズが提供する Interpreter は具体戦略の一つ。後続では併存可能:

  • JIT:BuF code section の中間表現を機械語にコンパイル。
  • AOT:ロード時に機械語生成(リリース向け)。
  • HybridTier:解釈 → プローブ → コンパイル。

戦略切替は Runtime_Implementation の内部判断で、Runtime_Interface の対外契約には影響しません。

8.3.2 性能可観測性

新イベントカテゴリ:

  • ExecutionMetric:解釈 / コンパイル / GC などの指標サンプリング。
  • TierTransition:階層実行が一段から別の階層へ切り替え。

具体戦略の実装は対外露出しないが、呼び出し側はその影響を観測可能。

8.4 後続フェーズ 2:配布とキャッシュ

8.4.1 BuF 成果物横断の階層化と分割

第一フェーズで BuF 内部の Section 粒度のオンデマンド読み出し(Lazy)は対応済。後続では成果物横断で階層共有を導入:

  • BuF 間で共有される資源(標準ライブラリ、モデル重みなど)を独立階層に切り出し。
  • Manifest に任意の layer_refs 宣言を追加し、他成果物の Section を参照。
  • 配布プロトコルが階層資源を共有方式で取得。ローカルキャッシュ命中時に BuF を跨いで再利用。

これに合わせ Manifest が任意フィールドを増やすため、schema_version のマイナーを 1 段繰り上げます。既存 BuF は影響を受けません(互換経路は §8.7)。

8.4.2 Distribution プロトコル

軽量配布プロトコルを導入(OCI Distribution Spec 参考):

  • 三段:discover / pull / verify
  • 配布プロトコル自体は Fayger プロセス内ではなく、独立コンポーネントが実装。Fayger はそれが生む chunk のみを消費。

8.4.3 ローカルキャッシュ

ロード済みかつ署名検証通過の BuF について、Manifest と Section の解析結果をキャッシュし、プロセス間で命中。命中時も署名検証を再実行(キャッシュ毒化を避けるため)。

8.5 後続フェーズ 3:インスタンス間連携

8.5.1 共有メモリ(制御付き)

同一 Fayger 内の複数 BuF_Instance が共有メモリ領域を持てるようにする:

  • Manifest で shared_memory ケーパビリティを明示宣言。
  • ランタイム層が領域を一括割当て、ケーパビリティ承認に基づき要求側に提供。
  • 共有領域はクォータ監視下、違反は停止を発動。

8.5.2 IPC プロトコル

インスタンス間メッセージ伝達(同一プロセス内、同一 Fayger 内):

  • Universal_Instruction の新カテゴリ ipc で表現。
  • 既定拒否。Manifest で対向 ID 集合またはトピックを宣言する必要あり。

8.5.3 単一 Fayger 内の依存組み立て

ある BuF が他の BuF を依存として参照可能にする:

  • ロードチェーンの Resolve 段で再帰解決をサポート。
  • 依存グラフは Manifest の dependencies フィールドで表現。
  • 循環依存は Resolve 段で拒否。

8.6 後続フェーズ 4:分散

主軸:多ノード Fayger 連携。第一フェーズには含まないが、次の方向に余地を残します:

  • BuF_Instance の ID は多ノード視点でも一意に指定可能であること。
  • Lifecycle イベントのタイムスタンプは外部トレース系と整合可能であること。
  • Universal_Instruction の TLV エンコーディングは既にネットワーク輸送可能性を持ち、将来の「リモート命令ディスパッチ」は独立 Adapter として実装可能。

8.7 互換性戦略

各進化は次の互換性規則を遵守します。さもなくば破壊的変更とみなします:

  1. Runtime_Interface バージョン:メソッド追加や意味論変更時は SemVer に従って繰り上げ。BuF_Manifest は runtime_interface_min で依存最低バージョンを表現。
  2. BuF schema バージョン:任意フィールド追加でマイナー繰り上げ、必須追加や既存意味論変更でメジャー繰り上げ。
  3. エラーコードの安定性:公開済みのエラーコードを再利用したり意味を変えたりしない。新規追加は可。
  4. Universal_Instruction カテゴリ:既存 8 カテゴリの番号は再利用しない。新カテゴリは予約ビットを使用。
  5. 廃止フロー:先に deprecation_notice でマーク、ロード時に通知を出すが許可は継続。少なくとも 1 メジャーを跨いで除去。

8.8 ツール推奨

長期進化を支えるため次のツール整備を推奨:

  • 依存方向の静的検査:ランタイム層が Platform_Adapter 型を import すること、ロード層内部型を逆参照することを禁止。ArchUnit / dep-cruiser / カスタム lint で実装可。
  • プロパティテスト基線スイート:ブループリント中の正しさ性質(ラウンドトリップ等価性、状態機械遷移、エラー連鎖、ケーパビリティ削減の集合代数など)を、言語横断の Conformance Suite として固定し、各 Runtime_Implementation が自検証。
  • Manifest CBOR 検証器:Manifest が確定的 CBOR を使っているかをチェック。非確定エンコーディングは非準拠とみなす。
  • Adapter 記述子のヘルスチェック:アダプタ登録時に supported_capabilitiessupported_instructions の整合(ケーパビリティビットと命令の必要ケーパビリティの最小閉包など)を即時点検。

8.9 後続フェーズ ロードマップ(要約)

フェーズ主要方向主要影響層互換性影響
フェーズ 1(現)三層契約、解釈実行、内蔵 4 アダプタ、署名、Section 部分ロード、Eager/Lazy、BuF_Source 抽象三層 + 横断
フェーズ 2ExecutionStrategy / JIT / AOTRuntime互換(追加)
フェーズ 3成果物横断の階層化 / Distribution / ローカルキャッシュLoader互換(マイナー)
フェーズ 4共有メモリ / IPC / 依存グラフRuntime + Loader互換(追加)
フェーズ 5多ノード連携Adapter(リモートディスパッチ)互換(追加)

後続フェーズの設計文書は独立ブループリントとして公開し、本ブループリントと同じ用語と契約を共有します。