Repository navigation
epic: make proposal negotiation easy to implement, teach, and verify #6556
Description
Activity
- addedepicMajor deliverable — auto-adds to roadmap boardMajor deliverable — auto-adds to roadmap boardmedia-buyIssue concerns the media-buy protocol domainIssue concerns the media-buy protocol domain
on Aug 15, 2026 - addedclaude-triagingTriage routine is actively working on this issue (1-3 min)Triage routine is actively working on this issue (1-3 min)
on Aug 15, 2026 Triage
Classification: Epic
Bucket(s): spec-adjacent enablement, media-buy
Status: deferredBlocked-on: #6547 — resurfaces on merge.
Triaged by Claude Code. Session: https://claude.ai/code/cse_01HzR7nggUxCVDQMwGm7XJri
Generated by Claude Code
- addedclaude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.Issue has been triaged by the Claude Code triage routine. Remove to re-triage.and removedclaude-triagingTriage routine is actively working on this issue (1-3 min)Triage routine is actively working on this issue (1-3 min)
on Aug 15, 2026 garvitkaushik-123 commented
on Aug 27, 2026 CollaboratorMore actionsEpic status update — triage label says blocked on #6547, but that merged 2026-08-15.
Current workstream status:
Workstream Status Protocol design (#6450) Closed Protocol implementation (#6547) Merged TypeScript SDK (adcp-client#2542) Closed Python SDK (adcp-client-python#1023) Closed Training agent (#6558) Closed Compliance storyboards (#6559) Closed Docs guide (#6557) Content complete, SDK status table and version pin updated — ready to close Go SDK (adcp-go#459) Open Java SDK (adcp-sdk-java#36) Open 5 of 7 original workstreams closed. Docs guide is completable now. Remaining: Go and Java SDK ports in external repos.
The docs guide now includes an SDK status table linking the open Go and Java tickets so implementors can track availability.
- addedclaude-triagingTriage routine is actively working on this issue (1-3 min)Triage routine is actively working on this issue (1-3 min)and removedclaude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.Issue has been triaged by the Claude Code triage routine. Remove to re-triage.
on Aug 27, 2026 Triage (updated)
Classification: Epic
Bucket(s): spec-adjacent enablement, media-buy
Status: deferredMy take: #6547 merged 2026-08-15 — prior blocker is resolved. 5 of 7 workstreams closed; #6557 (docs guide) is content-complete and can be closed independently. Epic stays open pending Go and Java SDK ports in external repos.
Blocked-on: adcp-go#459 and adcp-sdk-java#36 — resurfaces when either closes.
Triaged by Claude Code. Session: https://claude.ai/code/session_01FKDwVw2YcFKa35AGcmWwac
Generated by Claude Code
- addedclaude-triagedIssue has been triaged by the Claude Code triage routine. Remove to re-triage.Issue has been triaged by the Claude Code triage routine. Remove to re-triage.and removedclaude-triagingTriage routine is actively working on this issue (1-3 min)Triage routine is actively working on this issue (1-3 min)
on Aug 27, 2026 garvitkaushik-123 commented
on Aug 27, 2026 CollaboratorMore actionsHey @bokelley — both blockers now have PRs up:
-
Go SDK (
adcp-go#459): adcp-go#467 — adds fullrefine_proposalstypes,ComputeTermsDigest/VerifyTermsDigest,StampSuccessor, andConfig.RefineProposalshandler wired intoRegister(). 9 tests, all green. -
Java SDK (
adcp-sdk-java#36): adcp-sdk-java#38 — closes the remaining gaps:TotalBudgetConstraint,RefinementConstraintscomposite, missingconstraints/productChanges/alternativesfields onProposalRefinement, alternatives count validation (2-10 + seller ceiling),verifyConstraintSatisfactioninResponseVerifier(budget bounds + CPM ceiling), and server-sideProposalSuccessorutility. 15 new tests, builds clean.
Once those land, all 7 workstreams should be closeable and the epic can wrap up. The docs guide (#6557) update from our earlier pass is also in — SDK status table added to
proposal-negotiation.mdx.-
Completed. All seven workstreams are closed: TypeScript adcp-client#2542, Python adcp-client-python#1023, Go adcp-go#459 via merged PR #467, Java adcp-sdk-java#36 via merged PR #38, training #6558, implementor documentation #6557, and compliance storyboards #6559. Protocol design #6450, protocol implementation #6547, and lifecycle storyboard dependency #6432 are also complete. The final Go head received clean CodeQL analyses for Go, Actions, JavaScript/TypeScript, and Python before merge.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsShipped
Goal
Make structured proposal negotiation straightforward to implement, teach, and verify across the official AdCP SDKs and reference tooling after #6450 / #6547.
The protocol now distinguishes mechanically verifiable dimensions (
total_budget,product_changes,alternatives, andcriteria) from the free-textask, with deterministic partial/unable outcomes, immutable proposal lineage, and atomic finalization. Implementors still need reusable SDK workflows, a reference seller that exercises the complete surface, implementation guidance, and conformance scenarios.Workstreams
Shared design requirements
revised,partial,unable, andfinalizedoutcomes.Definition of done
Dependencies
Contract additions from the pre-merge red team (#6547,
efe48f522e)The wire contract grew before merge; every child ticket should target this surface, not the original four-dimension draft:
cpm(fixed-rate ceiling),impressions(volume floor), andflight(window bounds) alongsidetotal_budget— all verified againstcommercial_terms.product_selectionwas renamedproduct_changes; dimensions now match request fields exactly.unsatisfied_constraintscarries open string keys (no closed enum) so future dimensions are additive.reason_codeprecedence:constraint_unsatisfiablewins over every other code; typed failures never usecommercially_declined(ask-level refusals only). New codeshold_unavailableandbatch_abortedcover finalize failures in the atomic batch; double-finalize of a held draft is task-levelINVALID_STATE.error-details/unsupported-refinement-dimension.jsondetails shape.parent_proposal_idequal to its source proposal — negotiation lineage is reconstructible from proposals alone.terms_digestis buyer-recomputable (RFC 8785 JCS + sha256/base64url); alternative distinctness is defined oncommercial_terms, not digest strings.unsatisfied_constraints; onlycommercial_termsis contractual;askis untrusted input to fence from pricing authority; deterministic constraint responses form a price oracle sellers should rate-limit; legacybudget_range(soft) vs compacttotal_budget(hard) share a shape with inverted semantics.