Skip to content

Revert covers_content_digest default to spec-mandated 'either' #298

@bokelley

Description

@bokelley

Summary

Pre-existing spec divergence in src/adcp/signing/verifier.py:95: VerifierCapability.covers_content_digest defaults to \"required\" but the AdCP 3.0 schema explicitly sets \"default\": \"either\" (schemas/cache/protocol/get-adcp-capabilities-response.json:912-921) with the rationale: "'required' is recommended for spend-committing operations in production; 4.0 recommends 'required' for those operations."

The 3.0 spec position: default is \"either\", \"required\" is opt-in for spend-committing ops, and 4.0 will recommend it broadly.

Background

Surfaced during the v6.0 DecisioningPlatform foundation audit (PR #297 expert review). PR #297's first commit included a regression test pinning the divergent default — that test was dropped in the scope-down per protocol-expert finding.

Proposed change

  • Flip VerifierCapability.covers_content_digest default from \"required\" to \"either\".
  • Promote spend-committing operations (create_media_buy, update_media_buy) to \"required\" via required_for=frozenset({...}).
  • Webhook profile (adcp.signing.webhook_verifier) keeps its hard-coded \"required\" (correct, distinct from the request-signing default).

Risk

Any existing adopter relying on \"required\" by default will need to set it explicitly when constructing VerifierCapability(covers_content_digest=\"required\"). Document in CHANGELOG.

References

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions