モジュール XIV — 内部カタログとマーケットプレイス
モジュール XIV は組織の内部カタログ — 全社で再利用が承認されたエージェント、MCP サーバー、スキル、テンプレート、モデル、サードパーティコネクターの、キュレーションされ ガバナンスされたレジストリです。estate が場当たり的なコピーではなく、精査されバージョン管理された ケイパビリティに標準化できるよう、そして「承認済み」が wiki の中の言葉ではなく検証可能な何かを 意味するよう、存在します。Intelligence レイヤーに位置し、作用サーフェスを持ちません: キュレーションし記録する一方で、プロビジョニングは別の場所で起こります。
カタログはレジストリであって、ドキュメントストアではありません。エントリーは、再利用可能な
ケイパビリティの、キュレーションされバージョン管理された一つの定義であり、agent、mcp、
skill、template、model、connector のいずれかの種別を持ちます。各 (kind, slug, version)
はそれ自身が不変のアーティファクトです — 新しいバージョンの公開は新しいエントリーを作成し、
承認と署名はバージョンごとに行われます。エントリーは固定されたライフサイクルを進みます:
draft → pending → approved → deprecated
draft のみが可変です; 承認はそれを凍結します。エントリーのスペックはオペレーターが作成した 定義 — トランスポート、モデル、プロンプトの参照、スコープ、そしてシークレットへの参照 — で あって、決して資格情報の値ではありません。作成/承認パスはインライン資格情報を運ぶスペックを拒否 するため、このモジュールは定義、参照、ガバナンスメタデータを格納し、シークレットやペイロードを 決して格納しません。
バージョン管理、凍結、署名
Section titled “バージョン管理、凍結、署名”承認こそが「承認済み」を検証可能にする場所です:
- コンテンツハッシュ。 承認時、エントリーは、その正規かつ決定論的にシリアライズされた前像に 対する SHA-256 コンテンツハッシュでピン留めされます。オペレーターが作成したすべての フィールドがカバーされるため、承認済みエントリーのその後のいかなる変更も検知可能です — 署名がなくても改竄検知可能です。
- 台帳証明。 承認は追記専用でハッシュチェーン化された監査台帳に記録され、それを承認した 実際のプリンシパルに帰属されます。
- Ed25519 署名。 カタログ署名鍵がプロビジョニングされている場合、承認はコンテンツハッシュに 対するデタッチド Ed25519 署名も生成し、公開鍵と短いフィンガープリントを伴います — 「承認済み = 検証可能」。署名鍵はエンジンのフェイルクローズドな鍵シームの下、ブート時にロードまたは ミントされ、監査台帳鍵とは独立しています; このモジュールは自身のカタログ鍵を所有し、 エンジンの内部監査署名者に到達することは決してなく、トラスト境界をクリーンに保ちます。
検証はハッシュを再計算し、ノードに鍵が設定されている場合は署名をトラストアンカーとして扱います:
剥がされた署名(ダウングレード)や他の鍵で作られた署名(差し替え)は not verified として報告
されます。GET …/pubkey は署名が有効かどうかを報告します; エントリーごとの verified /
signed / signed_by の状態は、エントリールートと検証ルートによって返されます。
検証済みサードパーティコネクター
Section titled “検証済みサードパーティコネクター”connector エントリーは、リリースされたサードパーティコネクタープラグイン — ビルドされた
バイナリまたは OCI アーティファクト — をキュレーションします。そのスペックは、キュレーション対象を
記録します: アーティファクトの sha256(artifact_digest)、リリース/OCI 参照、パブリッシャー、
コネクターのディスクリプター名。エントリーは外部コネクターエコシステムのテナント向け認証記録
です: 「承認済み」を、単に「誰かが承認をクリックした」ではなく「そのサプライチェーン証明が
検証された」を意味させることができます。
このフローは MCP エントリーのアドミッションペアを反映し、独自のポリシーと判定の記録を持ちます (エビデンスは種別ごとにカウントされるため、コネクターの判定が MCP の判定とテーブルを共有することは 決してありません):
GET/PUT …/connector-admission/policy— テナントごとのトラストルート:require_signed、オプションのrequire_subject_digest、Sigstore のアイデンティティ/発行者の ピン、ベアな公開鍵、CA ルート、そして in-toto のプレディケート許可リスト(デフォルトは SLSA provenance v1/v0.2 と SPDX/CycloneDX の SBOM — コネクターはモデルウェイトではなくビルド されたアーティファクトであるため、provenance と SBOM の形)。ポリシーがなければ観測モード — テナントがオプトインするまで何もゲートされず、ポリシーエンドポイントは誠実にそう述べます。POST …/entries/{id}/admit— エントリー種別(mcpまたはconnector)でディスパッチされる 一つの共有ルート: オペレーターが供給した Sigstore 証明バンドルを検証し、エントリーごとに一つの claim 対 verified の判定を記録します。リクエストがexpected_digestをピン留めしない場合、 バインディングはエントリーのspec.artifact_digestからデフォルト化されます — エントリーは 自身がキュレーションするアーティファクトを名指すため、明示的にオーバーライドされない限り、 アドミッションはそのアーティファクトにバインドされます。不正な形式のバンドルは400です; 整形式だが検証に失敗するバンドルはエラーではなく、記録された否定判定です。GET …/connector-admissions— 記録された判定。エントリー(entry_ref)でフィルタ可能で、 検証済み判定に限定可能(verified=true)。- デナイクローズドな承認ゲート。
require_signedがオンのとき、コネクターエントリーは、 エントリーが現在キュレーションしているダイジェスト(spec.artifact_digest)にバインド された検証済みの provenance/SBOM アドミッション判定があるときにのみ承認(したがって検証済み コネクターとして掲載)できます;require_subject_digestがオンのとき、そのアーティファクト バインディング自体が確認されなければなりません。アドミッション後にキュレーション対象のダイジェストを 編集するとゲートは無効化されます — 新しいアーティファクトに対する再アドミッションが必要です。
ガバナンス下のセルフサービス・インスタンス化
Section titled “ガバナンス下のセルフサービス・インスタンス化”インスタンスは、承認済みエントリーをインスタンス化するセルフサービスのリクエストです —
承認済みエントリーのみがインスタンス化できます。このモジュールはリクエスト、そのプロベナンス
(どのエントリーバージョンに由来するか)、そのターゲット、そのガバナンスステータスを記録し、
健全なステートマシン(requested → approved/rejected → active)を強制します。誰が承認してよいかを
決定せず、プロビジョニングも行いません: 承認の決定はガバナンスに、実際のプロビジョニングは
デプロイメントに属します。承認、非推奨化、署名、インスタンス化は、実際のプリンシパルに対して
特権的で、RBAC でゲートされ、自己監査されるアクションです。
- モジュールカタログ — モジュール XIV の位置づけと、 govern/observe 対 actuate の区分。
- ガバナンスと承認 — human-in-the-loop の承認フロー。
- アーキテクチャ概要 — エンジン、レイヤー、エントリーが 宣言する共有データモデル。
- イベントバスリファレンス — このモジュールが意図的に消費しないバス。
- 誠実さと限界 — 製品全体の作用ポスチャー。