A PRML receipt as attestation evidence in a CycloneDX 1.6 BOM (working example) #1078
sk8ordie84
started this conversation in
Show and tell
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Following the
prmlproperty namespace merged into the taxonomy last week (#193), here is a complete, schema-valid 1.6 document that uses it insidedeclarations:https://github.com/studio-11-co/falsify/tree/main/examples/cyclonedx-attestation
What it attests, for one component: that the acceptance criterion of an evaluation (metric, comparator, threshold, dataset identity, seed) was committed to a SHA-256 hash and independently timestamped before the result existed, and that the observed result meets that committed criterion. Two requirements defined in
definitions.standards, two claims, four evidence entries (manifest, RFC 3161 token, Rekor inclusion proof, verifier output), an attestation map and an affirmation. The record is a real one from a public registry, not synthetic. A small script validates the BOM against the 1.6 schema and then re-derives the evidence offline: recomputes the manifest hash and re-evaluates the verdict.The reason we built it: an ML-BOM's
modelCard.quantitativeAnalysisrecords what was measured. Attestations add claims, evidence and an assessor. What a consumer still cannot check from either is when the pass bar was fixed. A pre-registration receipt is evidence for exactly that, and it is verifiable without trusting the assessor, which seemed to be the point of CDXA.One modelling question for people closer to the attestations design.
evidenceentries carry no free-formproperties, so theprml:*values sit on the component being attested, and each evidence entry points at the artefact by URL withpropertyNamenaming the taxonomy key it substantiates. Is that the intended placement, or would you rather see the values insideevidence.data(attachment or URL) only, with the component kept clean? Happy to restructure the example either way.Aware of #1072; the example pins 1.6 and would carry over as an assertion with its own target.
Limits are written into the claims'
reasoningfields rather than the README, so they travel with the file: a receipt proves the bar existed no later than the timestamp; it does not prove the run started afterwards, and it says nothing about whether the result is correct.All reactions