Skip to content

feat(schema): add portable attestations and audience evidence - #6218

Merged
bokelley merged 2 commits into
mainfrom
5934-choose-option-a-or-b
Aug 6, 2026
Merged

feat(schema): add portable attestations and audience evidence#6218
bokelley merged 2 commits into
mainfrom
5934-choose-option-a-or-b

Conversation

@bokelley

@bokelley bokelley commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add a portable, reference-first attestation primitive with evaluator-owned issuer, resolver, verifier, and capability policy
  • consume attestations for signal-activation governance while ensuring runtime evidence can never block deactivation
  • add immutable audience evidence, buyer admissibility requirements, exact discovery-to-commit pins, and package readback
  • document how portable attestations complement the existing creative AI provenance and C2PA workflow

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

  • reject off-policy issuers, resolvers, verifiers, and proof formats before network access
  • resolve through evaluator-configured fixed POST endpoints with redirects disabled and bounded response parsing
  • tie signature verification to configured issuer key authority
  • digest-bind typed subjects, credential bytes, audience evidence content, and consuming actions
  • preserve ordered reference/evaluation pairs and complete findings in governance audit records
  • keep deactivation available without signal-quality attestations

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/21
  • npm run test:governance-runtime-attestations — 17/17
  • npm run test:audience-evidence — 20/20
  • npm run test:schemas — 680 schemas and all 20 validation groups
  • schema projection, JSON Schema, docs navigation/audit, discriminator, UTF-8, compliance packaging, OpenAPI, and typecheck suites pass
  • npm test — 5,151 passed and 30 skipped; the remaining 9 C2PA-only tests are blocked locally because the installed @contentauth/c2pa-node binary is not a valid Mach-O slice

Closes #4529
Closes #5418
Closes #6126

@bokelley
bokelley force-pushed the 5934-choose-option-a-or-b branch from 406bd98 to 2edd27d Compare August 6, 2026 06:36
@bokelley
bokelley marked this pull request as ready for review August 6, 2026 06:36

@aao-secretariat aao-secretariat Bot 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.

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/*) and review_decision is not APPROVED — human/CODEOWNERS review required.

Non-blocking finding

  • docs/governance/campaign/tasks/check_governance.mdx:388 — runtime_attestations row understates that tool is 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) matches static/schemas/source/**; static/schemas/source/core/attestation-issuer.json (added) matches static/schemas/source/**; static/schemas/source/core/attestation-reference.json (added) matches static/schemas/source/**; static/schemas/source/core/attestation-subject.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-characteristic.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence-pin.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence-requirements.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence-selection.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence.json (added) matches static/schemas/source/**; static/schemas/source/core/package.json (modified) matches static/schemas/source/**; static/schemas/source/core/product-filters.json (modified) matches static/schemas/source/**; static/schemas/source/core/product.json (modified) matches static/schemas/source/**; static/schemas/source/core/signal-definition.json (modified) matches static/schemas/source/**; static/schemas/source/core/x-entity-types.json (modified) matches static/schemas/source/**; static/schemas/source/enums/audience-evidence-methodology.json (added) matches static/schemas/source/**; static/schemas/source/enums/audience-resolution-method.json (added) matches static/schemas/source/**; static/schemas/source/enums/audience-subject-type.json (added) matches static/schemas/source/**; static/schemas/source/governance/check-governance-request.json (modified) matches static/schemas/source/**; static/schemas/source/governance/check-governance-response.json (modified) matches static/schemas/source/**; static/schemas/source/governance/get-plan-audit-logs-response.json (modified) matches static/schemas/source/**; static/schemas/source/index.json (modified) matches static/schemas/source/**; static/schemas/source/media-buy/get-products-request.json (modified) matches `static/s

…(truncated)…

@aao-secretariat aao-secretariat Bot added the ladon/needs-human-review Ladon has escalated this PR for human review. label Aug 6, 2026

@aao-secretariat aao-secretariat Bot 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.

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) while review_decision is REVIEW_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) matches static/schemas/source/**; static/schemas/source/core/attestation-issuer.json (added) matches static/schemas/source/**; static/schemas/source/core/attestation-reference.json (added) matches static/schemas/source/**; static/schemas/source/core/attestation-subject.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-characteristic.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence-pin.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence-requirements.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence-selection.json (added) matches static/schemas/source/**; static/schemas/source/core/audience-evidence.json (added) matches static/schemas/source/**; static/schemas/source/core/package.json (modified) matches static/schemas/source/**; static/schemas/source/core/product-filters.json (modified) matches static/schemas/source/**; static/schemas/source/core/product.json (modified) matches static/schemas/source/**; static/schemas/source/core/signal-definition.json (modified) matches static/schemas/source/**; static/schemas/source/core/x-entity-types.json (modified) matches static/schemas/source/**; static/schemas/source/enums/audience-evidence-methodology.json (added) matches static/schemas/source/**; static/schemas/source/enums/audience-resolution-method.json (added) matches static/schemas/source/**; static/schemas/source/enums/audience-subject-type.json (added) matches static/schemas/source/**; static/schemas/source/governance/check-governance-request.json (modified) matches static/schemas/source/**; static/schemas/source/governance/check-governance-response.json (modified) matches static/schemas/source/**; static/sch

…(truncated)…

@bokelley

bokelley commented Aug 6, 2026

Copy link
Copy Markdown
Contributor Author

Human landing decision recorded from the repository owner’s explicit instruction to ship #6218 at exact head 6a7f91922771821156ad1ceb9f38a148d640f76a.\n\nLanding disposition:\n- all 32 exact-head checks pass\n- Ladon reports no critical/high/medium findings and an empty findings set\n- the sole docs wording observation was corrected and re-reviewed\n- schema, vectors, docs, projection, typecheck, security, migration, and current/released storyboard gates pass\n\nProceeding with the additive normative attestation and audience-evidence contract.

@bokelley
bokelley merged commit 48ccce9 into main Aug 6, 2026
32 checks passed
@bokelley
bokelley deleted the 5934-choose-option-a-or-b branch August 6, 2026 06:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ladon/needs-human-review Ladon has escalated this PR for human review.

Projects

None yet

1 participant