Skip to main content
ステータス: Request for Comments 最終更新: 2026 年 4 月 20 日

これらは何か

リファレンステストベクターは、仕様の特定のワイヤーフォーマットルールにピン留めされた機械可読な JSON フィクスチャです。出力がベクターの expected_* フィールドとバイト単位で一致する SDK は、そのルールのワイヤーフォーマットについてリファレンスと一致しています — 適合性クレームではありません(それは ストーリーボード のみが決定します)が、相互運用の必要な前提条件です。分岐する SDK は、自身のテストが合格しても相互運用バグを持っています。 ベクターは ストーリーボード を補完します。ストーリーボードはエージェントをエンドツーエンドで実行して pass/fail の判定を生成します。ベクターはライブラリを凍結された入力に対して分離して実行します。ベクターは署名者に「この 9421 リクエストはこの署名ベースを生成しなければならない(MUST)」と伝えます。ストーリーボードはエージェントに「バイヤーがこのリクエストを送るとき、このような形状の結果で応答しなければならない(MUST)」と伝えます。ほとんどの準拠スタックは両方を必要とします — ベクターはライブラリ内の正準化ドリフトを捕まえ、ストーリーボードはワイヤーでの動作ドリフトを捕まえます。 ベクターは適合性仕様ではありません — ストーリーボード がそれです。ベクターは、ストーリーボードと SDK ユニットテストが消費するリファレンス入力です。

バージョニング

コンプライアンスツリーの下に公開されるベクターセット — request-signingwebhook-signingplan-hashwebhook-receiver-envelopecatalog-macro-substitution — は仕様とともにバージョン管理されます。/compliance/{version}/test-vectors/{set}/ で提供されるコピーは、そのバージョンの GA リリースで凍結されます。ベクターのバイトを変える修正は次の AdCP マイナーリリースで出荷されます。/compliance/latest/test-vectors/{set}/ は最新の GA を追跡し、リリース間であなたの下で移動します。 /test-vectors/{name}.json で提供されるトランスポートとレスポンス抽出のベクターは、現在バージョン管理されていません: 各ファイルは変更されたときにその場で上書きされます。これらのフィクスチャを消費する SDK は、これらのファイルがバージョン管理されたコンプライアンスツリーに巻き込まれるまで、コミットにピン留めされたコピーをベンダリングすべきです(SHOULD)。例えば https://raw.githubusercontent.com/adcontextprotocol/adcp/<sha>/static/test-vectors/<name>.json から取得し、<sha> をロックファイルに記録します。 SDK は、利用可能な場所でバージョン管理されたパスを取得し、テスト中のバージョンを記録すべきです(SHOULD)。ピン留めされたバージョンについては、/compliance/{version}/... の CDN コピーが真実の源泉です。/compliance/latest/... は安定したピンではなく便宜的なエイリアスです。

公開されたセット

ここから始める: すべてのセットの Source 列の README.md が、ファイルレイアウト、鍵素材、前提条件(例: リプレイベクターに必要なランナー状態)、セットを SDK テストループに配線する方法を文書化します。ソースツリーの README が権威的です。このページのインデックスはカタログであり、統合ガイドではありません。 ディレクトリ CDN パス(3 つのコンプライアンスツリー行)はプログラム利用のためのベースパスです — CDN は個別のファイルを提供し、ディレクトリリストは提供しません。Source 列経由でツリーを参照してください。

テスト鍵は公開されている

すべての署名ベクターセットは、ライブラリが同一の入力に対して署名者と検証者のロールを実行できるよう、keys.json に秘密鍵素材を出荷します。これらの鍵は このスイートに対するグレーディングにのみ有効 です。 公開された keys.json ファイルの 1 つで宣言された kid を信頼する任意の本番検証者は悪用可能です — 秘密鍵は公開 CDN 上にあり、誰でもその kid の下で署名を偽造できます。執筆時点でこれには test-ed25519-2026test-es256-2026test-gov-2026test-revoked-2026(request-signing)と test-ed25519-webhook-2026test-es256-webhook-2026test-wrong-purpose-2026test-response-purpose-2026test-revoked-webhook-2026(webhook-signing ベクター)が含まれます。任意のスイート keys.json に現れるすべての kid を、現在も将来も、グレーディング外では信頼できないものとして扱ってください。 本番署名者は独自のキーペアを鋳造し、独自の jwks_uri の下で公開します。本番検証者は、ライブトラフィックに公開された信頼ストアに任意のテスト kid を登録してはなりません(MUST NOT)。

スコープ

上のセットは、すべてのサーフェスをまたぐトランスポート、署名、正準化ルール — ストーリーボードが検証できないバイトレベルのピン — を実行します。タスクごとのリクエスト/レスポンスフィクスチャは意図的にここに公開されていません: 適合性ストーリーボード(ワイヤー動作、エラーコード、ライフサイクル遷移)と JSON Schema(リクエスト/レスポンス形状)がそれらの間でタスクレベルの適合性をカバーし、凍結されたリクエスト/レスポンスペアの並行ツリーは、それが複製するストーリーボードに対してドリフトするでしょう。 実装者はスキーマから期待される形状を導出し、エージェントに対してストーリーボードを実行してワイヤー動作を確認します。機械可読なタスクごとのフィクスチャが欲しい SDK 作者は、別個のベクターセットを期待するのではなく、該当するストーリーボードからそれらを抽出すべきです。