Skip to content

Make TRACE records conform to agentrust-trace v0.2 (Level 0) - #1

Merged
litzki-systems merged 5 commits into
mainfrom
claude/repo-local-diff-b8wz69
Aug 24, 2026
Merged

litzki-systems merged 5 commits into
mainfrom
claude/repo-local-diff-b8wz69

Conversation

@litzki-systems

Copy link
Copy Markdown
Owner

What & why

The bridge was left mid-fix: it emitted TRACE records in a hand-rolled shape that failed the official agentrust-trace-tests 7/7 (missing eat_profile/iat/subject/cnf/policy, and signing over a plain json.dumps pre-image instead of the JCS canonical form the verifier expects).

This finishes the conversion to the released agentrust-trace v0.2 format. Generated records now pass conformance at Level 0 (TR-ENV, TR-SIG, TR-POL), 8/8, 0 failures.

Changes

  • trace.pybuild_trace_record now produces a v0.2 TrustRecord; signing delegates to agentrust_trace.sign.sign_record (populates cnf.jwk, signs the JCS pre-image). Every strong-guarantee field is set to its weakest honest value, matching the project's "What it does not claim" stance: runtime.platform: software-only, origin.kind: third-party-control-plane, appraisal.status: none, build_provenance.slsa_level: 0. enforcement_mode is constrained to the conformance-valid set — declared is rejected with a clear error because TR-POL-002 does not accept it.
  • tests/test_trace.py — rewritten to verify with the real agentrust_trace.verify_record, assert structural validity via TrustRecord, cover tamper detection, and run the conformance suite in-process at Level 0. 7 tests pass.
  • README.md — corrected the reproduction command to trace-tests verify --record … --level 0; added the openssl genpkey step so the demo key is generated locally instead of committed.
  • integration.yamltrace_conformance: pending → level-0; verified intentionally stays false pending CI (no self-awarded endorsement).
  • .gitignore — ignore private signing keys (*-private.pem, *.key).

Why Level 0 is the ceiling

This bridge transcribes a SOVP attestation; it does not measure a hardware TEE. The suite accepts software-only only at Level 0, and rejects it at Level 1+. Level 0 is therefore the honest maximum for a transcription bridge.

Reproduction

python -m pytest integrations/litzki-sovp/tests
openssl genpkey -algorithm Ed25519 -out integrations/litzki-sovp/examples/ed25519-private.pem
litzki-sovp-trace --input integrations/litzki-sovp/examples/sovp-attestation.json \
  --private-key integrations/litzki-sovp/examples/ed25519-private.pem --output /tmp/sovp.trace.json
trace-tests verify --record /tmp/sovp.trace.json --level 0
# Result: PASS (8 checks, 0 failures)

🤖 Generated with Claude Code


Generated by Claude Code

claude added 3 commits August 23, 2026 15:11
The bridge produced records in a hand-rolled shape that failed
agentrust-trace-tests 7/7 (missing eat_profile/iat/subject/cnf/policy,
signature over plain json.dumps instead of the JCS pre-image).

Rebuild build_trace_record against the released agentrust-trace v0.2
TrustRecord model and delegate signing to agentrust_trace.sign.sign_record,
so records now pass conformance at Level 0 (TR-ENV, TR-SIG, TR-POL), 8/8.

Every field that would assert a strong guarantee is set to its weakest
honest value, matching the project's "What it does not claim" stance:
software-only runtime, origin third-party-control-plane, appraisal none,
slsa_level 0. enforcement_mode is constrained to the conformance-valid set
(declared is rejected because TR-POL-002 does not accept it).

Tests rewritten to verify with the real agentrust_trace.verify_record and to
run the conformance suite in-process. Reproduction command in the README
corrected to `trace-tests verify`. integration.yaml conformance updated from
pending to level-0; verified stays false pending CI.

Housekeeping: git-ignore private signing keys (*-private.pem, *.key) and
document generating the local demo key with openssl instead of committing it.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XmyyEhv9XFUwZm2uGhefQA
Marketplace-readiness: a GitHub Actions workflow runs the exact reproduction
(pytest + `trace-tests verify --level 0`) on every push and pull request across
Python 3.11 and 3.12, so the Level-0 conformance claim is continuously proven
rather than asserted. Adds the Apache-2.0 LICENSE text declared in pyproject.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XmyyEhv9XFUwZm2uGhefQA
CI is green on this head (pytest + `trace-tests verify --level 0`, Python 3.11
and 3.12), which is exactly the bar the README sets for the Verified claim
("pass agentrust-trace-tests in CI"). Flip integration.yaml verified to true and
scope the note: it attests Level-0 conformance via this repo's CI, not an
endorsement by the AgenTrust maintainers.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XmyyEhv9XFUwZm2uGhefQA
@litzki-systems
litzki-systems marked this pull request as ready for review August 23, 2026 15:21
claude added 2 commits August 23, 2026 15:24
The AgenTrust integration schema states the Verified tier is "set by maintainers
during review, never self-declared", and CONTRIBUTING rule 2 treats inflated
claims as grounds for removal. Revert the verified flag to false and note that
the tier is granted during marketplace review. CI still proves Level-0
conformance; that evidence is what a reviewer reproduces, not a self-awarded badge.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XmyyEhv9XFUwZm2uGhefQA
The root README read as a scratch workspace note ("Local workspace for
preparing ..."), which presents a scaffold rather than a finished tool to
anyone landing on the repository. Replace it with a product front page:
what the bridge does and does not claim, install, usage, the Level-0
conformance reproduction, CI/License/conformance badges, and a pointer to the
marketplace integration directory.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XmyyEhv9XFUwZm2uGhefQA
@litzki-systems
litzki-systems merged commit ee4e490 into main Aug 24, 2026
4 checks passed
@litzki-systems
litzki-systems deleted the claude/repo-local-diff-b8wz69 branch August 25, 2026 15:49
litzki-systems added a commit that referenced this pull request Aug 25, 2026
Brings main to the real state: v0.2-conformant Ed25519-signed TRACE records (Level 0, 8/8), CI, Apache-2.0 LICENSE, product README, and the marketplace integration manifest.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants