test(conformance): portable PIC/TRACE bridge corpus and independent verifier
Maintainers usually reply within 1 day
@coreytshaffer is already working on this.
Since Sep 7, 2026.
Assessment
This issue has not been assessed yet.
Description
Spec section affected
docs/integration/pic-trace-bridge-v1.md- Bridge verifier tests and the eventual conformance-corpus location
Problem
Issue #179 delivered the PIC/TRACE authorization bridge design, schema, reference verifier, and eight implementation tests. Its completion note records a narrower remaining gap: those tests use inline fixtures and are not a portable vector set that a second implementation can consume.
TRACE already has a general cross-language RFC 8785/JCS corpus from PR #126. The remaining gap is bridge-specific:
- Can another verifier reproduce the bridge-specific signed bytes and digests while using PR #126 for shared canonicalizer conformance?
- Does it reach the same result at trust-key, time-window, scope, digest, and transcript boundaries?
- Does each negative case fail for the intended rule rather than an unrelated earlier error?
Proposed change
This would be a non-normative, informative conformance addition. I propose a versioned JSON corpus for pic-trace-bridge-v1, an independent verifier, and a differential runner.
The case contract would contain:
- bridge artifact and trusted-authorizer JWK;
- declaration and PIC verifier outputs;
- tool call and optional transcript;
- fixed verification time;
- expected semantic result and stable reason code; and
- bridge-specific canonical bytes and reproducibility metadata where relevant.
Vector families would cover:
- valid bound execution;
- malformed and unknown-field rejection;
- signature, trust-key, and
authorizer_key_idfailures; - deny, not-yet-valid, invalid-window, and expiry behavior;
- tool and impact scope mismatch;
- PIC, declaration, and tool-call digest mismatch;
- missing, partial, or contradictory transcript evidence; and
- cross-language canonicalization by reference to PR #126, with new signed-object fixtures only where the bridge introduces an additional input or binding.
The independent verifier would not import agentrust_trace.intent_bridge. The runner would execute the corpus against both implementations and report agreement or a preserved ambiguity. A bounded mutation check would verify that each negative vector makes its named rule load-bearing.
I would appreciate maintainer guidance on whether the corpus should live beside the bridge in trace-spec, in trace-tests, or initially in a standalone repository until the case contract and outcomes are reviewed.
Backward compatibility
- Non-breaking (informative conformance corpus and tooling)
- Breaking
No change to the completed bridge schema or verification semantics is proposed. Any ambiguity found during differential testing would be raised for maintainer decision before becoming a claimed conformance rule.
Motivation
Agreement between a verifier and inline tests constructed in the same codebase does not establish cross-implementation agreement. A portable corpus would let a second implementation test trust configuration, temporal boundaries, scope, execution binding, and failure classification without inheriting the reference implementation's assumptions.
Reusing PR #126 keeps generic JCS portability in one place and makes this contribution specifically about the authorization-to-execution bridge. The documentation would continue to keep authorization, execution binding, runtime attestation, and real-world outcome verification separate.
Acceptance criteria
- A clean offline checkout regenerates byte-identical vectors.
- Test-only signing material and corpus hashes are published and clearly non-production.
- Every case validates against the versioned schema before semantic verification.
- The AgenTrust reference verifier and independent verifier agree on all settled cases.
- Differences are reported for maintainer decision rather than silently normalized.
- Shared RFC 8785 behavior is reused from PR #126; any new canonicalization fixture exercises a bridge-specific input.
- The corpus is language-neutral and usable by a future TypeScript, Rust, or other SDK.
- Documentation preserves the boundary between authorization, execution evidence, attestation, and outcome claims.
Non-goals
- No redesign of the completed bridge semantics.
- No PIC dependency in the TRACE Trust Record schema.
- No runtime self-asserted authorization or embedded trust anchor.
- No claim that a valid authorization proves execution, outcome correctness, or TRACE attestation.
- No attempt to settle the gated
step_upanddeferdesign in #191.
Related issues or PRs
- Design origin and recorded portability gap: #179
- Existing portable RFC 8785/JCS corpus to reuse: #126
- Adjacent gated-decision threat-model context: #191
Implementation offer and relevant work
I would like to contribute the initial case contract, deterministic generator, independent Python verifier, differential runner, and documentation. Relevant prior work:
- TriageCore Signed Intent evidence boundary: https://github.com/coreytshaffer/triagecore-signed-intent#evidence-boundary
- Agent Control-Plane Eval Kit: https://github.com/coreytshaffer/agent-control-evals
- Dominant language
- Python
- Stars
- 37
- Forks
- 33
- Avg merge
- 1d 4h
- Merged PRs (30d)
- 120
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from agentrust-io/trace-spec
-
Difficulty 5/5 Over a week Newbie friendliness 25/100
agentrust-io/trace-spec#593 · 1 comment ·
Maintainers usually reply within 1 day
-
bug needs-review:HIGH
Difficulty 5/5 Over a week Newbie friendliness 20/100
agentrust-io/trace-spec#591 · 11 comments ·
Maintainers usually reply within 1 day
-
prototype(manifest_requirements): resolve accepted_methods without duplicating bindings and reject unconfigured binding endpoints with ProfileErrorPossibly taken @drk-ram claimed this 2 days ago. Open
Difficulty 3/5 1-2 days Newbie friendliness 78/100
agentrust-io/trace-spec#580 ·
Maintainers usually reply within 1 day
-
feat(delegation): add parent_record_hash, verify_delegation_link, and verify_delegation_chain to agentrust_tracePossibly taken @drk-ram claimed this 2 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 58/100
agentrust-io/trace-spec#581 ·
Maintainers usually reply within 1 day
-
revocation,trust-record-verify: implement es256 and es384 bundle verification and add EC revocation vectors (#448 items 1, 10)Possibly taken @drk-ram claimed this 2 days ago. Open
Difficulty 4/5 3-5 days Newbie friendliness 52/100
agentrust-io/trace-spec#584 ·
Maintainers usually reply within 1 day
All issues in agentrust-io/trace-spec
Similar issues
-
infrastructure
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
khuisman/mcp-gee-sweet#1152 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
-
backroom bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
ditto-assistant/ditto-subnet#3069 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
open-webui/open-webui#32901 · 1 comment ·
Maintainers usually reply within 1 day
-
0.3.3 bug
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
Maintainers usually reply within 1 day