第 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 互換性戦略
各進化は次の互換性規則を遵守します。さもなくば破壊的変更とみなします:
- Runtime_Interface バージョン:メソッド追加や意味論変更時は SemVer に従って繰り上げ。BuF_Manifest は
runtime_interface_minで依存最低バージョンを表現。 - BuF schema バージョン:任意フィールド追加でマイナー繰り上げ、必須追加や既存意味論変更でメジャー繰り上げ。
- エラーコードの安定性:公開済みのエラーコードを再利用したり意味を変えたりしない。新規追加は可。
- Universal_Instruction カテゴリ:既存 8 カテゴリの番号は再利用しない。新カテゴリは予約ビットを使用。
- 廃止フロー:先に
deprecation_noticeでマーク、ロード時に通知を出すが許可は継続。少なくとも 1 メジャーを跨いで除去。
8.8 ツール推奨
長期進化を支えるため次のツール整備を推奨:
- 依存方向の静的検査:ランタイム層が Platform_Adapter 型を import すること、ロード層内部型を逆参照することを禁止。ArchUnit / dep-cruiser / カスタム lint で実装可。
- プロパティテスト基線スイート:ブループリント中の正しさ性質(ラウンドトリップ等価性、状態機械遷移、エラー連鎖、ケーパビリティ削減の集合代数など)を、言語横断の Conformance Suite として固定し、各 Runtime_Implementation が自検証。
- Manifest CBOR 検証器:Manifest が確定的 CBOR を使っているかをチェック。非確定エンコーディングは非準拠とみなす。
- Adapter 記述子のヘルスチェック:アダプタ登録時に
supported_capabilitiesとsupported_instructionsの整合(ケーパビリティビットと命令の必要ケーパビリティの最小閉包など)を即時点検。
8.9 後続フェーズ ロードマップ(要約)
| フェーズ | 主要方向 | 主要影響層 | 互換性影響 |
|---|---|---|---|
| フェーズ 1(現) | 三層契約、解釈実行、内蔵 4 アダプタ、署名、Section 部分ロード、Eager/Lazy、BuF_Source 抽象 | 三層 + 横断 | — |
| フェーズ 2 | ExecutionStrategy / JIT / AOT | Runtime | 互換(追加) |
| フェーズ 3 | 成果物横断の階層化 / Distribution / ローカルキャッシュ | Loader | 互換(マイナー) |
| フェーズ 4 | 共有メモリ / IPC / 依存グラフ | Runtime + Loader | 互換(追加) |
| フェーズ 5 | 多ノード連携 | Adapter(リモートディスパッチ) | 互換(追加) |
後続フェーズの設計文書は独立ブループリントとして公開し、本ブループリントと同じ用語と契約を共有します。
