Implementation report: six verifiers written from the v0.2 text alone, run over 2,816 inputs (four findings)
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 20/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- json, python
調査の方向性
Start by reading trace-v0.2.md, especially §§3.1, 3.1.5, 3.3 and the §5 phase table, alongside trace-claim.json; compare these with the conformance vectors and examples named in the report. Reproduce the four findings against the repository verifier and determine which specification clauses or expected verdicts need correction. Done means the text, schema, verifier behavior and vectors agree on the reported cases; the full protocol and per-input tables are not yet linked.
索引モデルが issue の本文から書いたものです。
説明
Repository state: commit 473045fd (2026-10-18), trace-v0.2.md and trace-claim.json as given in the repo at that commit. Reference used: verify_record from the same commit (installed from source) and, as a second oracle, the PyPI release agentrust-trace 0.11.0.
Method, briefly. Six fresh language-model agents (two runs each of three models) were each given only the two files above and a fixed function interface, were forbidden to read anything else or to use the network (audited from their tool logs), and had to log every point the text did not decide. Their implementations were run with the reference over 133 real records (your conformance vectors, examples, registry entries, two of our intake fixtures), re-signed twins of the 32 records both oracles accept, and single-point mutants of those twins labelled by the clause they probe. Every disagreement was attributed to a clause and classified independently by two raters who saw only the text and the disagreement. This is part of a measurement study across three specifications (RFC 8785 is the control); the full protocol, corpora, implementations and ratings will be posted with a DOI and I will link it here.
Findings, in the order of how much of the corpus they move.
-
Required fields: text and schema disagree, and the disagreement decides 30% of the corpus. §3.1 says "All fields are required unless marked OPTIONAL" and its table does not mark
tool_transcriptortransparency;trace-claim.jsonomits both fromrequiredand describestool_transcriptas "OPTIONAL for Phase 1 records"; the §5 phase table liststransparencyamong Phase 1 fields andtool_transcriptfrom Phase 2; the Authority clause says the schema is the defective artefact when they disagree. No conformance vector or example carries either field. Four of six implementations followed the schema and agree withverify_recordon 97.7% of inputs; two followed §3.1 and reject 857 and 1,029 of the 1,035 inputs the reference accepts. Both raters classified this as self-contradicting text. One edit to either side resolves it; as written, the text's own precedence rule points to the side the vectors do not take. -
Trust anchor at the signature step. §3.3 step 1 says the binding is verified against the key in
cnf.verify_recordraises when no trusted key is supplied; four of six implementations, following step 1 literally, verify against the record's owncnfkey and accept (32 of 32 such calls), and no implementation refuses for want of an anchor. The text does not say whether a verifier with no external anchor must refuse, or whether a later appraisal step is meant to carry the anchor. If the intent is that a record checked only against its own key is not valid, the text should say so at step 1; if the intent is that the anchor comes from appraisal, the step should say that too. Both raters classified this as silence. -
§3.1.5 measurement rule is not enforced by
verify_record. Two of the repo's own example records haveappraisal.platform_measurement.measurementdifferent fromruntime.measurement; the vector envelope expects rejection; all six implementations reject;verify_recordat 473045fd accepts, because the rule lives in a separate component that function does not call. Of the 56 vectors carrying an expected verdict, the four schema-side implementations reproduce 56,verify_record54, the PyPI release 38. -
Embedded-form algorithm set. The text lists ES256 for JWT contexts and fixes no algorithm set for the embedded signature form; 32 records with an EC P-256
cnfkey and a raw r||s signature are refused by the reference ("unsupported JWK kty 'EC'; expected 'OKP'") and verified by four of six implementations. Both raters: silence.
Also noted: the PyPI release 0.11.0 ships a schema older than the repo's and rejects 21 of the repo's newer example records for an unknown property (platform_measurement), so anyone pinning the release gets different verdicts from anyone pinning the repo; the two oracles differ on 53 of the 2,816 inputs.
What I am not claiming: that any of the six implementations is correct, or that these are vulnerabilities in a deployed verifier. Each is an input on which two readers of the same text reach different verdicts. Happy to share the per-input tables now if useful, and the full package once it has a DOI.
Disclosure: our intake tooling consumes TRACE records (two fixtures above are ours), and we maintain a companion layer for cA2A and a terms layer that judges TRACE records; no product of ours is evaluated in this study.
- 主要言語
- Python
- スター
- 37
- フォーク
- 33
- 平均マージ
- 1日 4時間
- マージ済み PR(30日)
- 111
環境構築
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
agentrust-io/trace-spec のほかの issue
-
prototype(azure_execution_binding): bind HCLAkPub exponent e and key size, reject duplicate JSON keys, and harden _secure_boot_state and authenticode_sha256対応中かも @drk-ram が 1 日前に担当しました。 オープンneeds-review:MEDIUM
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
agentrust-io/trace-spec#613 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
content_marking: validate record.alg against record.hash prefix, reject unknown assertion fields, and check anchor agreement対応中かも @drk-ram が 1 日前に担当しました。 オープンneeds-review:MEDIUM
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
agentrust-io/trace-spec#614 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
adapters: validate data_class, policy/appraisal enums, and URI fields in TraceAGTAdapter and TraceSandboxAdapter対応中かも @drk-ram が 1 日前に担当しました。 オープンneeds-review:MEDIUM
難易度 4/5 3〜5日 初心者へのやさしさ 20/100
agentrust-io/trace-spec#615 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
trust-record-verify: reject non-object inputs in parentRecordHash, verifyDelegationLink, and bundleDigest対応中かも @drk-ram が 1 日前に担当しました。 オープンneeds-review:MEDIUM
難易度 2/5 1〜3時間 初心者へのやさしさ 35/100
agentrust-io/trace-spec#616 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
intent_bridge,successor_observation: validate caller options and trusted JWKs at entry and deep-copy observation before predicate対応中かも @drk-ram が 1 日前に担当しました。 オープンneeds-review:MEDIUM
難易度 4/5 1〜2日 初心者へのやさしさ 35/100
agentrust-io/trace-spec#617 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
agentrust-io/trace-spec の issue をすべて見る
似ている issue
-
Project submission:オープン
難易度 1/5 1時間未満 初心者へのやさしさ 72/100
slavakurilyak/awesome-ai-agents#845 ·
メンテナーはふだん 1 日以内に返信
-
tests: pin that the atomic writers in utils/paths.py stage the temporary file in the target's directory対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープンdifficulty:2 enhancement good first issue
難易度 1/5 1〜3時間 初心者へのやさしさ 92/100
MakazhanAlpamys/Soup#2178 ·
メンテナーはふだん 1 日以内に返信
-
[BUG] dcg.waggr permutation p-values are folded twice, so near-zero scores get the smallest p-valuesオープン
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
scverse/rapids-singlecell#854 ·
メンテナーはふだん 1 日以内に返信
-
Slang input: int8_t4_packed and uint8_t4_packed are copied into CrossGL対応中かも @ninglinLiu が今日担当しました。 オープンarea:frontend backend:slang bug direction:input
難易度 2/5 1〜3時間 初心者へのやさしさ 70/100
メンテナーはふだん 1 日以内に返信
-
random_elements(unique=True) on an OrderedDict: ZeroDivisionError once only zero weights remain, AssertionError with use_weighting=False対応中かも このイシューにリンクされたプルリクエストがオープン中、またはマージ済みです。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
メンテナーはふだん 13 日以内に返信