Repository navigation
spec,conformance: close Go verifier findings on Anchor Format §4 entry fields, valid_cmcp_runtime signature, and citation-resolution exception docs (#448 items 6, 12, 20) - #572
Conversation
…CMCP runtime signature, and citation exception docs Closes agentrust-io#571 Signed-off-by: Raghuvar Durga <177662415+drk-ram@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
dinakarjs
left a comment
There was a problem hiding this comment.
Reviewed exact head 246478c. The replacement fixture has a canonical 64-byte unpadded Ed25519 signature over the complete unmodified JCS signing body. The required registry entry fields remain required while optional profile fields are explicitly permitted. The citation README correctly distinguishes a lookup-stub exception class from a protocol constant. The frozen differential copy is outside the five-file diff and remains unchanged.
Independent Linux/Python 3.12.14 with matching hash-locked dependencies and explicit checkout paths: 46 selected root/citation tests and 782 conformance tests pass, with 5 existing XPASS outcomes. The first conformance attempt lacked installed distribution metadata (two CLI metadata failures); installing the local package metadata without changing sources resolved that environment issue, and the complete rerun passes. DCO and whitespace checks pass; returned technical workflows succeed, Dependabot skipped. Bounded fixture/editorial compatibility review, not fresh cMCP execution or a new normative protocol acceptance. Reviewed with OpenAI Codex assistance.
imran-siddique
left a comment
There was a problem hiding this comment.
Thanks @drk-ram, and @dinakarjs for the review. Approving as sponsor for the section 4 wording: the reference registry already writes canonicalization_id and mmr_checkpoint into its entries, so "exactly these fields" was wrong about what we ship. This closes items 6, 12 and 20 of #448.
What this changes
Contributor: Raghuvar Durga (@drk-ram)
Closes #571 (and closes the remaining open findings 6, 12, and 20 from #448):
spec/registry-anchor-v1.md§4 (#448Item 20):An anchor is recorded as one JSON object with exactly these fields:in §4 (## 4. Registry entry) withAn anchor is recorded as one JSON object carrying these required fields:.canonicalization_id(identifying the leaf canonicalization profile) andmmr_checkpoint(or other transparency-log checkpoint metadata), and that a verifier that does not consume optional entry fields ignores them rather than rejecting the entry.conformance/tests/vectors/valid_cmcp_runtime.json(#448Item 6):"signature": "unsigned-test-vector"inconformance/tests/vectors/valid_cmcp_runtime.jsonwith a valid 64-byte canonical unpadded base64url Ed25519 signature (3IxZkIUnz9FUnYHmO-7cBO6Cyg80FGycchnUYMyQPGtFTH1gwGD0fBl8RQpBQhQh1zwCOuqO38Q4SHawnpdLDg) computed over the RFC 8785 (JCS) canonical bytes of the claim under its embedded RFC 8032 §7.1 Test Vector 1 public key (x = 11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo).conformance/tests/unit/test_runner.pyto addtest_cmcp_runtime_vector_signature_verifies, provingTR-SIGpasses on the unmutatedvalid_cmcp_runtime.jsonat Level 1.trust-record-verify/differential/corpus/vectors-trace-tests-3af2b53/valid_cmcp_runtime.jsonuntouched so itsimport-manifest.jsonSHA-1 pin remains intact.examples/citation-resolution/README.md(#448Item 12):expected.citations[*].evidence.exceptioncarries"KeyError"in theresolver_raisedvectors: the consumer records the class or type name of whatever exception the caller-supplied resolver raised (type(exc).__name__in Python), and the reference test harness's lookup-table resolver (table[uri]) raises Python'sKeyErrorwhen a URI is absent fromcontext.resolutions. Notes how conformance runners in Go, Rust, or TypeScript handle this harness artifact.Type of change
Spec section
Companion specification
spec/registry-anchor-v1.md§4 (Registry entry),conformance/tests/vectors/valid_cmcp_runtime.json, andexamples/citation-resolution/README.md(no changes tospec/trace-v0.2.md).Tests for a fix
tests/test_go_verifier_findings_6_12_20.py::test_valid_cmcp_runtime_vector_has_valid_ed25519_signaturefails onorigin/mainbecauseconformance/tests/vectors/valid_cmcp_runtime.jsoncarries"signature": "unsigned-test-vector", and passes onHEADwithTR-SIG-001reportingStatus.PASS.tests/test_go_verifier_findings_6_12_20.py::test_registry_anchor_v1_section_4_allows_optional_entry_fieldsfails onorigin/mainbecausespec/registry-anchor-v1.md§4 requires"with exactly these fields"and omitscanonicalization_idandmmr_checkpoint.tests/test_go_verifier_findings_6_12_20.py::test_citation_resolution_readme_documents_harness_keyerror_exceptionfails onorigin/mainbecauseexamples/citation-resolution/README.mddoes not document whyexpected.citations[*].evidence.exceptionis"KeyError"for non-Python conformance runners.Validation commands and results:
pytest tests/test_go_verifier_findings_6_12_20.py tests/test_citation_resolution.py-> passed (49 passed)pytest conformance/tests-> passed (782 passed, 5 xpassed)python tools/review_bar.py --base origin/main --head HEAD-> passed (3 fail on behaviour, 0 fail on a missing name or file, 0 pass or skip)python tools/check_dashes.py-> passed (no dashes outside examples/, spec/trace-v0.1.md)ruff check tests/test_go_verifier_findings_6_12_20.py conformance/tests/unit/test_runner.py-> passedmypy --strict tests/test_go_verifier_findings_6_12_20.py-> passedChecklist
git commit -s)CHANGELOG.mdupdated (for any normative change)<!-- CHANGED: #NNN: description -->in spec text