Skip to content

fix(canonical-formats): forward projection and narrowing repairs to next - #1759

Merged
bokelley merged 2 commits into
nextfrom
fix/next-canonical-format-validation
Oct 31, 2026
Merged

bokelley merged 2 commits into
nextfrom
fix/next-canonical-format-validation

Conversation

@bokelley

@bokelley bokelley commented Oct 31, 2026 •

Copy link
Copy Markdown
Contributor

Forward the canonical-format repairs from #1757 and #1758 to the SDK 10 line for AdCP 3.3.

  • Typed legacy VAST/DAAST formats retain their version constraints during projection.
  • Narrowing covers the eleven published conflict/acceptance vectors, exact numeric values, range boundaries, nullable duration endpoints and exact-duration precedence.
  • Declaration/product projection accepts an optional provisioned requirements lookup and emits existing divergence advisories for each full seller reference. Missing lookups remain explicitly unchecked, and lookup failures propagate.

Refs #1750 and #1749. The three source files match the reviewed main fixes. Preserve next’s existing serialization tests; no schema pins, generated models, package versions or dependencies change.

Give the context-ID integration test fixture the unique private name _ContextIdEchoHandler. This prevents another test module’s _EchoHandler registration from hiding create_media_buy during full-suite collection. The test assertions and library behavior are unchanged.

Validation

  • Full local gates in Docker: make lint, make typecheck-all, and make test passed. 20603 passed, 2810 skipped, 10 deselected, 1 xfailed, 1484 warnings in 4076.94s (1:07:56); coverage 92.19%.
  • Docker with the declared SDK 10 development dependencies: 188 focused tests passed across v1/v2 projection, narrowing, registry, round trips and public API.
  • Normal commit hooks passed: formatting, Ruff, source/adopter type checks, Bandit and file/commit-message checks.
  • Independent code and security reviews passed on this forward port.
  • The vendored vector file matches the published AdCP v3.2.7 source byte-for-byte (SHA-256 3e9ecb82e8103c29cc14cf8ca6175ed71bf68d170ff1020a3065bd2f376e6510).

@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 forward-port of the #1757/#1758 canonical-format repairs to the SDK 10 / next line.

Checked:

  • No findings at any severity (Critical/High/Medium/Low all clear).
  • high_risk: false; gated_paths: false; no no-auto-approve team match; no prior decision.
  • Reviewer traced the new interval/dedup path in check_narrows against all shipped vectors (None-bound handling, exact-vs-range double-count suppression, numeric guards), the v2→v1 operator-lookup threading (exceptions propagate, missing entries leave refs unchecked, refs preserved on advisory), and the typed-model path in _v1_version_constraints — all correct and test-pinned.
  • New params are additive/backward-compatible; new test fixtures and test files accompany the change.

No decision-table trigger fires (rows 1–8 all pass), so this falls through to row 9 → approve.

@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 — test-only rename, no blocking or medium findings.

This PR's delta since the prior approve is a single test-only change: the helper class _EchoHandler was renamed to _ContextIdEchoHandler in tests/integration/test_a2a_context_id.py, across its definition and all four _running_server(...) call sites. All five references in the base were renamed with no dangling identifier left behind. No source, public surface, or wire shape was touched.

Checks:

  • No critical/high findings (decision table row 1 not triggered).
  • gated_paths: false, and review_decision is APPROVED regardless (row 2 not triggered).
  • high_risk: false — no (deleted)/(modified) sensitive-path triggers (rows 3-5 not triggered).
  • Prior decision was approve, not escalate (row 6 not triggered).
  • No no-auto-approve team match (row 7 not triggered).
  • Zero medium findings (row 8 not triggered).

Falls through to row 9 → approve.

@bokelley
bokelley merged commit d005f95 into next Oct 31, 2026
41 checks passed
@bokelley
bokelley deleted the fix/next-canonical-format-validation branch October 31, 2026 17:55
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.

1 participant