Changelog¶
Unreleased¶
- Add machine-readable execution accounting for the bounded
TR-APR-001,TR-POL-003, andTR-SCA-002pilot to CLI JSON reports. Accounted findings and accounting come from one immutable execution snapshot; unreconciled accounting is rejected on that path, the operational policy-correspondence rule is separated from supporting schema locators and all carry value digests for comparison against the referenced trace-spec bytes, scheduler non-execution carries a reason, and existing verdict policy and CLI exit behavior are unchanged.
v0.5.1 — 2026-08-22¶
- Level 1 and Level 2 verification now requires a verifier-issued challenge via
--expected-nonceand checks it against the signedruntime.nonceusing constant-time comparison. Previously nonce binding existed only as an assertion over the repository's own pytest fixture; the shipped runner and CLI could report conformance for a fresh signed record containing an attacker-chosen or replayed nonce.
v0.5.0 — 2026-08-09¶
Added¶
trace-tests report: conformance results as an artifact somebody can forward.verifyanswers a question for whoever ran it; a pass/fail in a terminal is useless to an auditor, a counterparty or an acquirer. The new command emits self-contained HTML, a machine-readable JSON document (schema: agentrust-io/trace-tests/report/1), and an SVG level badge.
It runs every level up to --max-level instead of one, because the answer a reader needs is the highest level the record reaches, not whether it cleared the level the person running the tool happened to choose. --fail-under N gates CI on a level; without it the command exits 0, since producing an artifact and enforcing a threshold are different jobs.
The report states that it is not evidence. It is unsigned HTML describing one run of one suite version, and anyone can edit it, so every report carries the record's digest, the suite and authoring-library versions, and the command to reproduce the result — and tells a reader who does not trust the sender to go check the record instead. A conformance report that looks authoritative and cannot be checked is the same shape of thing as a control plane writing its own log, which is the problem this project exists to fix.
Self-contained by construction: no scripts, no external CSS, no fonts, no badge service. A badge served from someone else's infrastructure would add a dependency to an artifact whose whole point is needing none. A test asserts the HTML fetches nothing.
The HTML and the JSON are rendered from one assembled structure so they cannot disagree about the verdict, and unverified findings count as failures from Level 1 up exactly as they do in verify.
v0.4.1 — 2026-08-03¶
Fixed¶
--versionreported the wrong version.__version__was a second hardcoded literal alongsidepyproject.tomland never moved, so it sat at0.2.0through both the 0.3.0 and 0.4.0 releases:trace-tests --versionprinted0.2.0from a 0.4.0 install whileimportlib.metadatacorrectly returned0.4.0. It is now read from installed distribution metadata, so there is one source of truth and the value cannot fall behind a release again.
This mattered more than a wrong string usually would. The v0.2 profile cutover shipped in 0.4.0, and a 0.2.x suite rejects every v0.2 record, so --version is exactly the command someone runs to work out whether their suite matches their producer. It was the one command that could not answer.
v0.4.0 — 2026-07-28¶
Changed¶
- BREAKING: the suite now conforms to TRACE v0.2.
TR-ENVrequires the profiletag:agentrust-io.com,2026:trace-v0.2and fails a record carrying the v0.1 identifier. The v0.1 URI namedagentrust.io, a domain this project never controlled, which RFC 4151 does not permit for a tag URI; see agentrust-io/trace-spec#107. Nothing else about the record format changed, so a producer migrates by updating the profile string and bumpingagentrust-traceto 0.5.0.
This is a deliberate cutover rather than dual acceptance: a conformance suite that passed both identifiers would certify records minted under a domain we do not own. A v0.1 record is checked with the 0.3.x releases of this suite, which stay published.
- Registry, verifier, and documentation hosts moved from
agentrust.iotoagentrust-io.com.
v0.3.0 — 2026-07-21¶
azure-cvm-sev-snpplatform accepted (runtime.platform): Azure confidential VMs run SEV-SNP behind a Hyper-V paravisor (vTPM-rooted). Added to the bundled schema enum and the TR-RTE valid-platform set so Azure TRACE records pass conformance. Matchesagentrust-trace>=0.4.
v0.2.0 — 2026-06-19¶
- DID subject support:
subjectnow acceptsdid:URIs in addition tospiffe://. - Embedded signature verification: plain TRACE records signed with
agentrust-trace sign_record()are now cryptographically verified at all levels. - SLSA Level 0:
build_provenance.slsa_level: 0is now valid for software-only / development records. - Software-only platform:
runtime.platform: "software-only"accepted at Level 0. - Private key leak detection: TR-SIG now fails records that embed a private key (
dmember) incnf.jwk.
v0.1.0 — 2026-05-01¶
- Initial release with 7 test modules: TR-ENV, TR-SIG, TR-RTE, TR-POL, TR-TXN, TR-ANC, TR-SCA.
- Conformance levels 0, 1, 2.