Skip to content

fix: harden legacy purchase async settlement - #2649

Merged
bokelley merged 19 commits into
mainfrom
fix-legacy-purchase-blockers
Aug 22, 2026
Merged

fix: harden legacy purchase async settlement#2649
bokelley merged 19 commits into
mainfrom
fix-legacy-purchase-blockers

Conversation

@bokelley

@bokelley bokelley commented Aug 21, 2026

Copy link
Copy Markdown
Contributor

Summary

  • harden legacy purchase settlement across direct responses, polling, A2A continuations, and webhooks
  • preserve distinct client, seller-work, A2A, continuation, and delivery identities
  • make deferred pause handoffs, callback publication, and mutation idempotency restart-safe and generation-fenced
  • adopt the signed AdCP 3.2.0-beta.5 schema and compliance bundle
  • enforce immutable, tenant-scoped webhook delivery bindings with durable retry state, advertised horizons, and permanent retired-ID tombstones
  • keep synchronous terminal results silent on the task-webhook channel
  • include the prerelease schema-sync parser fix already merged on main

Why

The compatibility surface had race windows where a mutation could commit while its callback, continuation, or terminal publication became stranded or ambiguous. AdCP 3.2 beta.5 now defines the cross-channel invariants; this PR implements them and fails closed when durable ownership or identity cannot be proven.

Validation

  • npm run build:lib
  • npm run format:check
  • npm run typecheck
  • npm run ci:codegen-strict
  • npm run ci:schema-check
  • npm run ci:docs-check
  • npm run check:adopter-types
  • npm run test:node:fast — 16,097 tests, 0 failures, 7 skipped on the pre-beta.5 review pass
  • 89 focused webhook, security, and sync-silence tests
  • 525 adjacent decisioning, TaskExecutor, and media-buy lifecycle tests
  • repeated protocol, code-quality, security, and test expert review; all reported blockers addressed

Comment thread src/lib/core/TaskExecutor.ts Fixed
Comment thread test/lib/task-executor-async-patterns.test.js Fixed
Comment thread test/lib/task-executor-async-patterns.test.js Fixed
@bokelley
bokelley force-pushed the fix-legacy-purchase-blockers branch from ee46c3d to 3982690 Compare August 22, 2026 07:15
@bokelley
bokelley force-pushed the fix-legacy-purchase-blockers branch from 3982690 to 0d25c81 Compare August 22, 2026 10:45
@bokelley
bokelley marked this pull request as ready for review August 22, 2026 16:09
@bokelley

Copy link
Copy Markdown
Contributor Author

Merge-gate note: all product, schema, security, type, test, interop, and packaging checks are green, and all review threads are resolved. Ladon was rerun once and failed identically both times before review because GitHub refuses its full-diff request for PRs over 20,000 lines; it produced no findings file and posted no code finding. This PR has separately completed protocol, code, security, and test expert review. Using the maintainer override only for that documented review-infrastructure limitation.

@bokelley
bokelley merged commit ae6bdc1 into main Aug 22, 2026
31 of 33 checks passed
@bokelley
bokelley deleted the fix-legacy-purchase-blockers branch August 22, 2026 16:43
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