Repository navigation
Conversation
Adds an optional externalValidation array to entryMetadata. Each item references externally hosted validation material (e.g., benchmark results, audits) by uri and type, with an optional sha256 of the referenced content. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…ventions Use url instead of uri, replace sha256 with an alg/hash pair drawn from the C2PA hash algorithm list, and require type to be an entity-specific namespaced value, following the External Reference assertion's hashed-ext-uri-map and data_types conventions. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Show a hashed benchmark report, a signed in-toto attestation (sha384), a third-party Verifiable Credential, and an unhashed live leaderboard. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
| "hash": { | ||
| "type": "string", | ||
| "pattern": "^[a-fA-F0-9]+$", | ||
| "description": "Hex-encoded hash of the content at `url` at the time the entry was written or last updated, computed with `alg`" | ||
| } |
There was a problem hiding this comment.
Reuses the existing namespace pattern and the hashed-ext-uri shape correctly.
No length check on hash against alg. sha256/384/512 are fixed-length hex (64/96/128 chars) — worth enforcing so a truncated hash doesn't silently pass. Not blocking.
Concretely:
| "hash": { | |
| "type": "string", | |
| "pattern": "^[a-fA-F0-9]+$", | |
| "description": "Hex-encoded hash of the content at `url` at the time the entry was written or last updated, computed with `alg`" | |
| } | |
| "hash": { | |
| "type": "string", | |
| "pattern": "^([a-fA-F0-9]{64}|[a-fA-F0-9]{96}|[a-fA-F0-9]{128})$", | |
| "description": "Hex-encoded hash of the content at `url` at the time the entry was written or last updated, computed with `alg`. Length must match sha256 (64), sha384 (96), or sha512 (128) hex characters" | |
| } |
Doesn't tie the length to the specific alg value (that needs an if/then at the item level), but catches a truncated or garbled hash either way.
This overlaps with #79 — both add an informational evidence array to entryMetadata, different shape. Only one should land. This one lets you pin content with a hash; #79 doesn't. Which do you want to keep?
Separately: this is generic evidence (audits, leaderboards, certifications), not robustness measurement, so it doesn't address #61 either — that issue asked for comparable, structured scored results, not a link to an owner-hosted page in arbitrary format. If this and #79 get reconciled, robustness numbers probably want to stay a separate structured field precisely so they're comparable; this shape is fine for everything else (audits, leaderboards, certifications) that isn't trying to be comparable across entries.
domguinard
left a comment
There was a problem hiding this comment.
I suggest we first look at iterations from the initial PR related to this topic (https://github.com/c2pa-org/softbinding-algorithm-list/pull/79/changes) and present this alternative as well to the group during the next meeting.
|
This looks like a duplicate effort of what's trying to be achieved in #79. Since they are both propsoing the same methodology i.e. URL to benchmarks with optional hash, can we discuss them both in one PR? |
|
I think that we are going to get push back for including benchmarks in the soft binding list. Specifically because we were told not to include benchmarks in the soft binding list. This PR is opaque way to link external data, which can include benchmarks and other information (I.E a compromise.) I'm fine not discussing this or marking it as a draft. But I feel like it might be best to get approval to place benchmark in the soft bindings list first before we settle on a schema. |
Adds an optional
externalEvidencearray toentryMetadataas a more general alternative to thebenchmarkingInformationobject proposed in #79.Each item references externally hosted evidence supporting an algorithm's stated capabilities (e.g., benchmark results, audits, certifications). The evidence is provided by the entry owner and is informational only.
urluri)typeorg.example.evidence.benchmarkalgsha256|sha384|sha512hashhashalgurlwhen the entry was written or last updatedExamples
The schema example now shows four kinds of evidence. All URLs and hashes are placeholders.
sha256test-resultpredicatesha384algcan be usedsha256The
typevalues use each publisher's own namespace, since no C2PA-defined evidence types exist yet. A follow-up could define a small set ofc2pa.*evidence types, following the pattern ofc2pa.types.audit-login the External Reference assertion.The naming and structure follow existing core spec conventions rather than introducing new ones:
url+alg+hashmirrorhashed-ext-uri-map, and the namespacedtypemirrorsdata_types/categories.hashis hex encoded because the list is JSON rather than CBOR.The schema example is updated. The schema passes
jsonschema lint, andsoftbinding-algorithm-list.jsonstill validates.A corresponding core spec change will be needed, since
SoftBinding.adocincludes this schema.🤖 Generated with Claude Code