feat(schema): add portable attestations and audience evidence - #6218
Conversation
406bd98 to
2edd27d
Compare
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated schema paths touched and review_decision is REVIEW_REQUIRED (not APPROVED).
This PR is additive Normative-class throughout: new attestation/audience-evidence schemas, new optional fields, new capability blocks, three changesets, and three conformance-vector suites. The reviewer verified no removals, no optional↔required flips, no wire-shape changes, and byte-identical enum values in the signal-definition.json inline→$ref refactor. Only a single low finding survived (a docs row understating that tool is required in check_governance runtime_attestations), which is non-blocking.
However, the change touches 25 files under static/schemas/source/**, which is a deterministic hard approval gate (gated_paths: true). Because review_decision is REVIEW_REQUIRED rather than APPROVED, decision-table row 2 forces escalation — a real human/CODEOWNERS approval is required before this can merge, regardless of how clean the diff is.
Escalation reasons
- Modifies gated protocol source under
static/schemas/source/**(e.g. attestation-, audience-evidence, product.json, signal-definition.json, governance/*) andreview_decisionis notAPPROVED— human/CODEOWNERS review required.
Non-blocking finding
- docs/governance/campaign/tasks/check_governance.mdx:388 — runtime_attestations row understates that
toolis required (low).
Why human review
- Touches gated protocol source under static/schemas/source/** (25 files, added + modified) while review_decision is REVIEW_REQUIRED — hard approval gate requires human/CODEOWNERS approval before merge.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/attestation-capabilities.json (added) matches
static/schemas/source/**; static/schemas/source/core/attestation-evaluation.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/attestation-issuer.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/attestation-reference.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/attestation-subject.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-characteristic.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence-pin.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence-requirements.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence-selection.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/package.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/product-filters.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/product.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/signal-definition.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/x-entity-types.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/audience-evidence-methodology.json (added) matchesstatic/schemas/source/**; static/schemas/source/enums/audience-resolution-method.json (added) matchesstatic/schemas/source/**; static/schemas/source/enums/audience-subject-type.json (added) matchesstatic/schemas/source/**; static/schemas/source/governance/check-governance-request.json (modified) matchesstatic/schemas/source/**; static/schemas/source/governance/check-governance-response.json (modified) matchesstatic/schemas/source/**; static/schemas/source/governance/get-plan-audit-logs-response.json (modified) matchesstatic/schemas/source/**; static/schemas/source/index.json (modified) matchesstatic/schemas/source/**; static/schemas/source/media-buy/get-products-request.json (modified) matches `static/s
…(truncated)…
There was a problem hiding this comment.
Ladon verdict: Escalate to human review
Escalate — gated protocol source touched while review is not APPROVED.
This PR adds and modifies 25 files under static/schemas/source/**, a hard, deterministic approval gate (gated_paths: true). The current GitHub review_decision is REVIEW_REQUIRED, not APPROVED, so the gate is NOT satisfied and Ladon cannot auto-approve regardless of diff cleanliness (decision table row 2).
The reviewer's delta finding this run is a single-line docs wording fix in docs/governance/campaign/tasks/check_governance.mdx that correctly aligns the docs with the schema's if/then constraint (runtime_attestations → required tool activate_signal). No critical/high/medium findings surfaced; schema↔docs coherence is intact for the delta.
Because this is a net-new protocol surface (attestation/audience-evidence schemas, enums, task definitions) with accompanying changesets, this is a Breaking/Normative-class protocol change whose ratification is a human act. Human/CODEOWNERS approval is required before merge.
Escalation reasons
- Touches gated protocol source under
static/schemas/source/**(25 files, added + modified) whilereview_decisionisREVIEW_REQUIRED— hard approval gate requires human/CODEOWNERS approval before merge. - New normative protocol surface (new schemas, enums, and task fields) — ratification of protocol changes is a human act per the constitution's breaking/normative-class gate.
Why human review
- Touches gated protocol source under static/schemas/source/** (25 files, added + modified) while review_decision is REVIEW_REQUIRED, not APPROVED — hard approval gate requires human/CODEOWNERS approval before merge.
- New normative protocol surface (new attestation/audience-evidence schemas, enums, and task fields) — ratification of protocol changes is a human act and is never auto-approved unless review_decision is APPROVED.
- This PR touches a path under a hard, non-overridable approval gate (static/schemas/source/core/attestation-capabilities.json (added) matches
static/schemas/source/**; static/schemas/source/core/attestation-evaluation.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/attestation-issuer.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/attestation-reference.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/attestation-subject.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-characteristic.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence-pin.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence-requirements.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence-selection.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/audience-evidence.json (added) matchesstatic/schemas/source/**; static/schemas/source/core/package.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/product-filters.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/product.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/signal-definition.json (modified) matchesstatic/schemas/source/**; static/schemas/source/core/x-entity-types.json (modified) matchesstatic/schemas/source/**; static/schemas/source/enums/audience-evidence-methodology.json (added) matchesstatic/schemas/source/**; static/schemas/source/enums/audience-resolution-method.json (added) matchesstatic/schemas/source/**; static/schemas/source/enums/audience-subject-type.json (added) matchesstatic/schemas/source/**; static/schemas/source/governance/check-governance-request.json (modified) matchesstatic/schemas/source/**; static/schemas/source/governance/check-governance-response.json (modified) matchesstatic/schemas/source/**; static/sch
…(truncated)…
|
Human landing decision recorded from the repository owner’s explicit instruction to ship #6218 at exact head |
Summary
Why
HTTP message signatures prove who sent a request, not whether an application claim is true. These schemas let independent credentials travel between agents while the receiving seller or governance agent remains verifier of record. Audience evidence also needs to survive product selection without becoming targeting semantics or drifting before commitment.
Security and audit
Review
Protocol, security, and documentation specialists reviewed the change. Their blocker findings were resolved, including typed-subject matching, issuer-key authority, exact evidence binding and pinning, independent issuer policy, capability dependencies, audit completeness, and the deactivation safety boundary.
Validation
npm run test:attestation-vectors— 21/21npm run test:governance-runtime-attestations— 17/17npm run test:audience-evidence— 20/20npm run test:schemas— 680 schemas and all 20 validation groupsnpm test— 5,151 passed and 30 skipped; the remaining 9 C2PA-only tests are blocked locally because the installed@contentauth/c2pa-nodebinary is not a valid Mach-O sliceCloses #4529
Closes #5418
Closes #6126