Skip to content

conformance: sign manifest-reference fixtures 01-05 as v0.3 records (#538 follow-up) - #544

Closed
babyblueviper1 wants to merge 4 commits into
agentrust-io:mainfrom
babyblueviper1:manifest-ref-fixtures-v03-profile
Closed

babyblueviper1 wants to merge 4 commits into
agentrust-io:mainfrom
babyblueviper1:manifest-ref-fixtures-v03-profile

Conversation

@babyblueviper1

Copy link
Copy Markdown
Contributor

Draft, stacked on #538: the diff against main includes #538's commit. Only the last commit, 9aaa4f2, is this PR.

What this changes

tests/test_v03_draft_schema.py in #538 reads the six manifest-reference fixtures from #487. It patches eat_profile to v0.3 before validating, because the fixtures were signed as v0.2 records. Patching after signing breaks the signature, so no checker can run the schema, the signature and the digest binding on the same record. That is item 3 of the audit on #483: integrate the reference into a conformance module, keeping the signed mismatch, unresolved, signature-first and no-manifest controls.

  • Fixtures 01-05 are re-signed with tag:agentrust-io.com,2026:trace-v0.3. Same test key, same manifests, same expected outcomes.
  • 06 stays a v0.2 record with no manifest, the control that verifies as today.
  • Two tests, with no patching:
    • 01, 02, 04 and 05 validate against trace-claim-v0.3-draft.json exactly as signed.
    • 03 is rejected for its signed manifest_verification_result and nothing else. That is the reference-only ruling, now enforced by the schema on the signed record.
  • The generator writes UTF-8 with newline="", so a Windows run reproduces the committed bytes.

Checked

  • With feat(schema): add top-level manifest reference to v0.3 draft schema (#483) #538 at 75b5fbb: tests/test_v03_draft_schema.py 32/32 (27 + 5 new), and conformance/tests/test_manifest_ref_draft_vectors.py 12/12 (the four wrong checkers are still caught).
  • As signed: the signatures on 01-04 and 06 verify, and 05 fails as designed.
  • The schema results above hold with no eat_profile patch.
  • ruff check is clean on both touched Python files.

The patch lines in #538's tests become no-ops. They can be removed in #538 or here, whichever the maintainers prefer. The sha256/sha384 contract (item 1) is not touched.

drk-ram and others added 2 commits October 15, 2026 17:10
…gentrust-io#483)

Add the optional top-level manifest {id, digest, media_type} object to schema/trace-claim-v0.3-draft.json per the reference-only ruling on agentrust-io#483, preserve properties.manifest in scripts/gen_v03_draft_schema.py, and validate the agentrust-io#487 fixtures and malformed manifest shapes in tests/test_v03_draft_schema.py.

Signed-off-by: Raghuvar Durga <177662415+drk-ram@users.noreply.github.com>

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…gentrust-io#538 follow-up)

agentrust-io#538's schema tests read these fixtures but patch eat_profile to v0.3 first,
which breaks each record's signature, so no checker could run the schema, the
signature and the digest binding on the same bytes (dinakarjs's item 3 on agentrust-io#483).
01-05 are now signed with the v0.3 profile tag and validate against
trace-claim-v0.3-draft.json as signed; 03 is rejected for its signed
manifest_verification_result, on purpose; 06 stays the v0.2 control.
Two tests pin this without any patch. Generator writes UTF-8 with newline="".

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Signed-off-by: babyblueviper1 <babyblueviperbusiness@gmail.com>
@github-actions

github-actions Bot commented Oct 16, 2026 •

Copy link
Copy Markdown
Contributor

🔴 Contributor Check: HIGH

Check Result
Profile HIGH
Credential LOW
Overall HIGH

Automated check by AgenTrust Contributor Check.

@github-actions github-actions Bot added the needs-review:HIGH Contributor check flagged HIGH risk label Oct 16, 2026

@dinakarjs dinakarjs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Independent approval of the bounded fixture-signing follow-up at 9aaa4f2, specifically the final eight-file commit on top of #538. The schema/generator changes inherited from #538 are not newly approved normative scope here; this remains a draft stack, not adoption of v0.3 or delivery of a production manifest-reference verifier.

Python 3.12, prepared TRACE environment, absolute PYTHONPATH to this checkout: tests/test_v03_draft_schema.py 32 passed; conformance/tests/test_manifest_ref_draft_vectors.py 12 passed. These were separate pytest invocations because the two suites have colliding tests.conftest import names. Ruff passes on both touched Python files; diff whitespace check passes.

A separate review script read the committed records without patching eat_profile, constructed JCS preimages, verified Ed25519 signatures directly, independently hashed resolved manifest bytes, and validated the draft schema. Results: 01 valid signature/schema and matching digest; 02 valid signature/schema with mismatching resolved bytes; 03 valid signature, exactly one schema error for the forbidden producer-asserted result, and a digest mismatch; 04 valid signature/schema with no resolved manifest; 05 schema-valid but signature-invalid as intended; 06 remains a validly signed v0.2 no-manifest control. The generator reproduces all six committed fixture files byte for byte.

Regression sensitivity: temporarily restoring only fixture 01 to its validly signed parent v0.2 bytes fails the new as-signed v0.3 test (1 failed, 3 passed), while preserving the signature. Fixture restored; worktree clean. The existing four wrong-checker controls also pass, meaning each incorrect checker remains detected.

Nonblocking documentation cleanup: the README's earlier byte-identical-to-2cd4ae7 statement is contradicted/corrected by the appended paragraph; consolidating it into one historical statement would read more clearly. The no-op eat_profile patches in #538's older tests can be removed when the stack is integrated. No live hardware or complete #483 acceptance claim.

The README stated the records were byte-identical to 2cd4ae7 in one
paragraph, then said they were no longer byte-identical in the next
(re-signed for the profile change) -- merge into one accurate statement.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@babyblueviper1

Copy link
Copy Markdown
Contributor Author

Thanks for the independent re-derivation — appreciate the byte-level check on all six fixtures and the regression-sensitivity probe on 01. Fixed the nonblocking doc issue: consolidated the README's byte-identity statement into one accurate paragraph (97adf4a) instead of the earlier/later contradiction. Left the no-op eat_profile patch cleanup for the stack-integration pass, as you suggested.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@dinakarjs dinakarjs left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Follow-up at 571c142: the only change since my reviewed 9aaa4f2 is the fixture README consolidation. The contradictory byte-identity wording is resolved: 01-05 are identified as re-signed v0.3 records, 03's intentional schema rejection is retained, and 06 remains the v0.2 control. Fixtures, generator, schema and tests are unchanged, so my prior byte/signature/schema and mutation evidence remains applicable to those unchanged files; I did not rerun it for this prose-only delta. Current-head technical checks pass.

Approval remains limited to this fixture follow-up on the draft #538 stack, not adoption of v0.3, the inherited normative proposal, a production manifest verifier, or full #483 acceptance. No-op patch cleanup remains a nonblocking stack-integration task.

@babyblueviper1

Copy link
Copy Markdown
Contributor Author

Closing: these three commits landed in main through #551 (e1560f3), rebased on the merged #538, with the fixture bytes identical to this branch's head.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-review:HIGH Contributor check flagged HIGH risk

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants