Skip to content

feat(media-buy): resolve acceptance policy catalogs - #1097

Merged
bokelley merged 1 commit into
mainfrom
feat/acceptance-policy-catalogs
Aug 28, 2026
Merged

feat(media-buy): resolve acceptance policy catalogs#1097
bokelley merged 1 commit into
mainfrom
feat/acceptance-policy-catalogs

Conversation

@bokelley

Copy link
Copy Markdown
Contributor

Closes #1069

Summary

  • expose the beta.9 acceptance-policy catalog, profile, rule, requirement, context, and discovery types
  • add a conservative buyer resolver with exact-byte catalog and JCS policy/profile digest verification
  • compose seller-default and product profiles restrictively with typed advisory outcomes and fail-closed diagnostics
  • harden catalog fetches with canonical HTTPS URLs, IP pinning, no redirects or credentials, bounded incremental decompression, caching, and capability invalidation
  • document adopter usage and add strict public API/type-check coverage

Verification

  • make test (7,436 selected tests)
  • make lint typecheck
  • make test-type-checks
  • make check-type-ignore-contract validate-generated
  • uv build and uv build --wheel
  • live smoke against the training-agent beta.9 catalog and shared registry (catalog, policy, and embedded profile digests verified)

aao-secretariat[bot]
aao-secretariat Bot previously approved these changes Aug 28, 2026

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — additive seller acceptance-policy discovery, no blocking or medium findings.

Checked:

  • Full digest trust chain in acceptance.py (exact-byte catalog pin, JCS profile/policy pins, fail-closed to unknown).
  • Bounded/timeout-guarded fetches with IP pinning, no redirects, no credential leakage.
  • Compression-bomb defense in _bounded_http.py.
  • Local-bundle $ref containment in schema_loader.py.
  • Correct additive feat: semver signal on the public surface (new exports only, no breaking shape/type changes).

Decision-table walk:

  • Rows 1: no critical/high findings.
  • Row 2: gated_paths false — N/A.
  • Rows 3–5: high_risk true but all reasons are (modified) with zero medium-or-higher findings; no (deleted) entries; no medium findings of any category. None fire.
  • Row 6: no prior decision.
  • Row 7: no no-auto-approve team match.
  • Row 8: fewer than three medium findings (zero).
  • Row 9: approve.

review_decision: REVIEW_REQUIRED does not gate here because gated_paths is false. High-risk modifications to __init__.py, _eager.py, and signing/** were reviewed and preserve their contracts with no findings.

@aao-secretariat aao-secretariat Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ladon verdict: Approve

Approve — clean pass on PR #1097.

This is an additive-only feature landing the adcp.acceptance advisory resolver plus its supporting surface: public-surface wiring in __init__.py, a bounded gzip/deflate reader (signing/_bounded_http.py), a named-schema validator (validation/schema_loader.py), and two optional core.Policy fields. The reviewer completed largest-file coverage on acceptance.py (1011 lines) and operational-readiness review: fetch is fail-closed on URL/redirect/credentials, digests verify exact bytes before parse, every external call is timeout-bounded, and missing information resolves to unknown (never allow).

No Critical/High/Medium findings. The change is additive, so there is no semver-signal concern (no removed/renamed public exports, no required→optional flips, no discriminated-union narrowing) and no import-layering issue.

high_risk is true, but all matching entries are (modified) files with no medium-or-higher finding against them — per the arbiter guidance, a modification with no reviewer concern is presumed safe and does not warrant escalation. No (deleted) reasons. gated_paths is false. No no-auto-approve team match. Prior decision was also approve.

Rows 1–8 do not fire → row 9: approve.

@bokelley
bokelley enabled auto-merge (squash) August 28, 2026 21:33
@bokelley
bokelley merged commit dcda500 into main Aug 28, 2026
27 checks passed
@bokelley
bokelley deleted the feat/acceptance-policy-catalogs branch August 28, 2026 21:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(media-buy): resolve seller acceptance-policy catalogs

1 participant