リリース検証¶
英語版の参考訳です(10/11/2026 更新)。内容が異なる場合は英語版が優先されます。識別子、コマンド、コードブロックは翻訳せずにそのまま掲載しています。
リリースの公開後、tools/release-validation は、新しいコンシューマーが行うのと同じように、公開済みパッケージを公式レジストリからインストールし、インストールされたものに対して外部適合性カタログを実行します。このページでは、それが何を示すのか、これまでに何が実行されたのか、何が対象外なのかを説明します。実行方法のリファレンスは、ツールの README です。
対象範囲¶
09/11/2026 に公開された 6 つのバージョン(監査ドシエ)を、9 つのレーンで検証します。
| 公開済みバージョン | レーン |
|---|---|
npm @dcp-ai/sdk 2.4.0 |
npm-sdk |
npm @dcp-ai/wasm 2.2.0 |
npm-wasm-node(Node)と npm-wasm-browser(実際の Chrome) |
npm @dcp-ai/cli 2.2.0 |
npm-cli |
PyPI dcp-ai 2.11.0 |
pypi-wheel(wheel)と pypi-sdist(ソースからビルドした sdist) |
Go モジュール sdks/go/v2 v2.14.0 |
go |
crates.io dcp-ai 2.14.0 |
crates-default と crates-otlp(otlp feature 付き) |
各レーンは、専用に構築した環境を持つ一時ディレクトリにパッケージをインストールし、ダウンロードしたバイト列が公開されたものであること、インストールまたはコンパイルされるものがそのバイト列であることを確認します。そのうえで初めて、次の証拠を実行します。
- 60 のカタログセル。 適合性キットの 8 つの外部カタログを 6 つのレーン(SDK、Python の 2 レーン、Go、Rust の 2 レーン)で実行し、WebAssembly API に適用される 6 つのカタログをその 2 つのレーンで実行します。CLI のレーンにはカタログがありません。このリビジョンのカタログでは 6142 ケースになります。
- ブラウザー上の公開 API
DcpWasmの 103 の直接ケース。 - インストール済みの CLI に対する CLI の 4 つのスイート(218 テスト)と、そのネガティブコントロール。
- 同じ実行内の 58 のコントロール。一部は合格しなければならない肯定的なコントロールです。残りは、実際のレポートを改変したコピー、反転した期待値、注入した障害、タイムアウト、ローカルの取得元で、それぞれが求められているとおりの形で拒否されなければなりません。
このツール独自のカタログや期待値は追加しません。期待値はキットのもので、このリポジトリにコミットされています。
結果の意味¶
- PASS には、上記のすべてが 1 回の実行で必要です。これらのアーティファクトが、これらのハッシュで、これらのレジストリから取得され、このリビジョンのキットにより、この環境で、これらのカタログに合格したことを述べます。認証ではなく、実行されなかった環境については何も述べません。
- PARTIAL は、失敗のなかった一部のレーンまたはカタログの選択です。診断であり、合格として報告されることはありません。
- 不一致は、インストールされたアーティファクトが応答したものの、コミットされた期待値と一致しないことを意味します。
- エラーは、判定できる有効な応答がなかったことを意味します。レジストリ、ネットワーク、ツールチェーン、一致しない同一性、不完全なレポートやこの実行のものではないレポートなどが原因です。エラーがプロトコルによる拒否として数えられることはなく、合格として数えられることもありません。
パッケージをインストールして取得元を確認することは、適合性ではありません。動作についての証拠になるのは、カタログセルとブロックだけです。
このツールはプロトコルを一切変更しません。正規化プロファイル dcp-jcs-v1、コア、SDK、カタログは、そのまま使用します。
これまでに実行したもの¶
10/11/2026 に、公開ファイルだけを含むリポジトリのコピーから、完全なキャンペーンを 1 回実行しました。
| 項目 | 観測結果 |
|---|---|
| 結果 | PASS:60 セル(6142 ケース中 6142)、103 の直接ケース、218 の CLI テスト、ネガティブコントロール、58 のコントロール |
| モード | locked(コミットされたロック) |
| ホスト | Apple silicon(arm64)上の macOS、Node 22.15.0、npm 11.3.0 |
| Python | CPython 3.12.2、arm64 |
| Go | go1.26.10。このホストでは darwin/amd64 向けにビルドします。検証された Go バイナリは amd64 です |
| Rust | cargo と rustc 1.93.1、aarch64 |
| ブラウザー | Google Chrome 157.0.8103.50。user agent は情報が削減されたもので、どのアーキテクチャーで実行されたかは示しません |
| レポート | 実行 dfeaa975-f449-4947-8238-32bb3f372d87、report.json の SHA-256 は 2b5c4c109b76038c693c73ab6485a3a3634949790fd57648637deaf9a23b7ee7 |
レポートとそのファイルはメンテナーが保管しており、リポジトリには含まれていません。
このほかに、キャンペーンではない実行として、Linux x86_64 コンテナー(Ubuntu 24.04、CPython 3.12.3、同じホスト上でエミュレーション)で、Python の 2 つのレーンを最初のカタログについて fresh モードと locked モードで実行しました。Linux 用のロックはここから得たものです。
GitHub での完全なキャンペーンが合格しました。 10/11/2026(America/Santiago)に、GitHub の Ubuntu 24.04 x86_64 ランナーで、9 つのレーンすべてを locked モードで実行しました。保存された証拠を独立して照合し、60 セル(6142 ケース)、ブラウザーの直接ケース 103 件、CLI テスト 218 件、正確に 4 件の失敗を要求するネガティブコントロール、および 58 のコントロールがすべて合格しました。ツールのテストも省略なしで 37/37 合格しました。
| 項目 | 観測結果 |
|---|---|
| GitHub | Release validation #42936377966 |
| Run | 29adf7d3-14a9-4ad8-b57b-d3f3e5bcc628 |
| UTC | 2026-11-11T01:06:03.656Z – 2026-11-11T01:12:52.962Z |
| Node / npm | 22.23.4 / 10.9.9 |
| Python / pip | CPython 3.12.16 x86_64 / 25.0.1 |
| Go | 1.26.10 linux/amd64 |
| Rust | cargo / rustc 1.99.1, x86_64-unknown-linux-gnu |
| Chrome | Google Chrome 156.0.8078.79 |
report.json SHA-256 |
d0b5da90f06b204ae46677a8fbaeb54d6f3b1620c204f8aea2d33a7efedac84f |
ワークフローは関連する PR と手動で実行され、リポジトリへの読み取りアクセスのみを持ち、公開ステップはありません。アーティファクトの保持期間は 30 日です。ダウンロードしたファイルのハッシュを独立して再計算し、ソースツリーのダイジェストが、--clean によるコンシューマー削除前に記録されたインストール済みツリーの検査と一致することを確認しました。削除されたファイルを再度直接検査したという意味ではありません。
実行方法¶
node --test tools/release-validation/release-validation.test.mjs
node tools/release-validation/run.mjs --python "/path/to/python3.12" --go "/path/to/go" --cargo "$(rustup which cargo)"
1 つ目のコマンドは外部ネットワークを使用しません(1 つのテストが、ループバックの HTTP サーバーからインデックスを配信します)。2 つ目のコマンドは npm、PyPI、Go のプロキシ、crates.io からダウンロードを行い、Chrome を必要とします。--lane と --catalog で一部だけを選択でき、その場合の結果は PARTIAL になります。CI では、Release validation ワークフローを手動で開始します。要件、オプション、レポートの構成は、ツールの README に記載されています。
サードパーティーの依存関係は、コミットされたロックから取得するか(locked、デフォルト)、その時点で解決します(fresh)。Python のロックは、macOS arm64 と Linux x86_64 の CPython 3.12 用に用意されています。それ以外のインタープリターやプラットフォームでは、Python のレーンに fresh が必要です。
対象外¶
- 上記の 6 つ以外のバージョン、およびこれらのレジストリに公開されていないもの。フレームワーク統合、Docker イメージ、プロジェクトテンプレート、サービス、コントラクトです。
- 実行されなかったオペレーティングシステム、アーキテクチャー、インタープリター、ブラウザー。具体的には、Windows、arm64 向けの Go バイナリ、Chrome 以外のブラウザーは対象外です。
- ホスト自体のツール。npm、pip、Go、cargo、rustc、C コンパイラー、Chrome は、ホストにあるものをそのまま使用して記録するだけで、固定はしません。
- カタログ自体が対象としていない性質。その制限は、適合性キットと監査ドシエに記載されています。