メインコンテンツまでスキップ

MPK契約

MPKは、コンパイルされたモデルアーカイブに埋め込まれた推論契約です。これは、ルートプランナーと下流のエクストラクターが読み込むJSONファイルであり、ファイル名はmpk.jsonまたは*_mpk.jsonです。モデルアーカイブ自体は、Modelを通じてロードされる通常の.tar.gzファイルです。

このページでは、以下の2つの点を明確に区別します。

  • アーカイブ:バイナリ、設定、重み、およびMPK契約JSONを含む.tar.gz形式の配布単位。
  • 契約:推論ルーティングの根拠となる*_mpk.jsonJSONドキュメント。

バイトレベルの契約およびセキュリティルールについては、MPK契約(貢献者参照)を参照してください。

単一の.tar.gzアーカイブを使用する理由

Modalix上のモデルには、多くの要素(コンパイルされたMLAグラフ、CVUカーネル、設定、重み)が含まれています。これらを1つの署名された.tar.gzアーカイブにまとめることで、以下の利点があります。

  • アトミック性:モデル全体がロードされるか、まったくロードされないかのいずれか。
  • バージョン管理:MPK契約は、そのスキーマバージョンを宣言します。互換性のない契約は、早期に拒否されます。
  • トレーサビリティ:チェックサム、署名、および配布を行うための単一のアーティファクト。
  • 再現性:同じアーカイブとMPK契約が与えられた場合、フレームワークのプランナーは同じルーティング決定を行います。

MPK契約は唯一の信頼できるJSON

モデルアーカイブには、他のJSONファイルが含まれている場合があります。ただし、フレームワークはmpk.jsonまたは*_mpk.jsonのみを推論契約として扱います。アーカイブ内の他のJSONからモデルのトポロジーを推測しないでください。契約は「MPK契約に含まれていない場合は、存在しない」という原則に従います。

このルールにより、フレームワークのプランナーは決定的な動作を維持します。

モデルアーカイブのロード

アプリケーションは、アーカイブローダーAPIを直接呼び出しません。.tar.gzパスを使用してModelを構築します。Modelは、アーカイブの検証、安全なコンテンツを内部レイアウトに抽出、MPK契約の解析、およびルートプランニングを実行します。

正確な小文字の.tar.gz形式のモデルアーカイブのみが受け入れられます。.mpk.tgz.tar、およびプレーンな.gzファイルは、アーカイブの検査前に拒否されます。

セキュリティ対策

モデルアーカイブはシステム外部から提供されるため、ロードはフェイルクローズで行われます。受け入れられたすべてのアーカイブは、厳格なマトリックスチェックを受けます。

  1. 拡張子の許可リスト.tar.gz のみが許可されます。
  2. サイズ制限 — アーカイブ、エントリ、および合計 JSON バイト数の制限。
  3. エントリ数の制限 — zip ボム形式のパックに対する保護。
  4. JSON の深さの制限 — パーサーのスタックオーバーフローに対する保護。
  5. パス走査の保護 — 正規化されたパスで、絶対パスと .. セグメントが拒否されます。
  6. UTF-8 の検証 — エントリのパスは有効な UTF-8 でなければなりません。
  7. Unicode の類似文字の拒否 — 視覚的に紛らわしいパス文字が拒否されます。
  8. ファイルタイプの許可リスト — 既知のファイルタイプのみが抽出されます。
  9. JSON の重複キーの拒否 — 任意の深さでの重複キーが拒否されます。
  10. スキーマの検証 — コントラクトとローダー側のメタデータは、サポートされているスキーマと一致する必要があります。
  11. 必須セクションの検証 — 推論コントラクトとモデルバイナリが存在する必要があります。
  12. カーネルの許可リスト — 参照されるカーネルは、フレームワークの既知のセットに含まれている必要があります。

上位レイヤーは、エラーを構造化された io.* または mpk.* エラーコードを持つ NeatError として報告します。

関連する型

  • Model.tar.gz モデルアーカイブをロードし、ルートフラグメントを公開するパブリックなエントリポイント。
  • MpkContract および関連する内部構造体 — mpk.json / *_mpk.json から解析された推論コントラクト。

詳細情報

  • MPK契約(貢献者参照) — バイトレベルのルールとフィールドのセマンティクス。
  • 「MPK コントラクト」 — デザインの詳細な解説の §0.16、§15。
  • 「モデルアーカイブのセキュリティマトリックス」 — デザインの詳細な解説の §91。