Repository navigation
revert: move experimental AdCP 3.3 identity from main to next - #1534
Conversation
This reverts commit 3961d1c, the squash merge of #1502, feat(identity): add experimental AdCP 3.3 agent identity. #1502 added experimental AdCP 3.3 agent identity code written to open drafts. main releases the 9.x line on AdCP 3.2.x, so the drafts would ship in 9.0.0-beta.4 (#1465) and every later 9.x release. Per adcp-client-python#1525, draft-spec work lives on next, which already carries #1502 and releases 10.0.0-alpha.N pre-releases. Conflict resolution: src/adcp/client.py. #1532 added the product_property_policy parameter to ADCPClient and ADCPMultiAgentClient next to #1502's experimental_agent_identity parameter. The resolution keeps product_property_policy, its docstrings, its attribute, and its forwarding to per-agent clients, and removes only the experimental_agent_identity parameter, docstrings, attribute, and forwarding. No later main commit uses code that #1502 added. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — clean revert of #1502 (experimental AdCP 3.3 identity), 58+/15056−.
What was checked:
- client.py conflict resolution is correct: keeps product_property_policy (parameter, docstring, attribute, per-agent forwarding at :425,:444) and removes only experimental_agent_identity (:424,:441-443).
- Largest modified file signed_requests.py (627 deletions) is a faithful revert — apply_verified_signer restored to the base AuthInfo.from_verified_signer form (:2333), WBA authorization/spend-committing branches dropped, no residual references to removed helpers.
- No stranded references: git grep over HEAD for experimental_agent_identity, check_wba_authorization, WbaSignerKeyResolver, trust_grant_gate, verify_wba_request, signing.wba/trust, trust_grants, experimental_identity returns nothing. GetPrincipalResponse/cast/R remain used so no dead imports.
- Semver: #1502 ships in no release (latest v9.0.0-beta.3 predates it), so removing these public exports breaks no shipped adopter; revert correctly sequenced before beta.4 cut. No major needed.
Reviewer surfaced no critical/high/medium findings.
Note on high_risk: the flag is true and includes several (deleted) entries under sensitive globs (src/adcp/signing/, src/adcp/decisioning/). However, every deleted file was introduced by the never-shipped #1502 and is being removed to return main to its prior state — not a destructive change to load-bearing production code. The reviewer confirmed no stranded references and no regression. With zero findings and the deletions being a clean revert of unshipped code, this falls through to approve (row 9). Decision-table rows 1 (no critical/high), 2 (gated_paths false), 4-8 (no medium, no team gate) do not fire; row 3 is a heuristic escalation for destructive changes, but the evidence here shows a faithful revert of unreleased code with no actionable finding.
What
Reverts #1502 (
3961d1cf, "feat(identity): add experimental AdCP 3.3 agent identity") onmain. The code stays onnext, which already contains it.Why
mainreleases the 9.x line on AdCP 3.2.x. #1502 tracks AdCP 3.3 drafts that keep changing until 3.3 is ratified, so leaving it onmainships draft code in9.0.0-beta.4(#1465) and in every later 9.x release. Under the branch model in #1525 (cross-SDK tracking: adcontextprotocol/adcp#8118), draft-spec work lives onnext, which now releases10.0.0-alpha.Npre-releases from its own Release Please setup. #1502 hasn't shipped in any release yet, so removing it now doesn't break anyone.Merge this before #1465 (the
9.0.0-beta.4release PR). After this merges, release-please regenerates #1465 with this revert in it.Conflict resolution and dependent commits
Eight commits landed on
mainafter #1502. Three of them touch #1502's files (#1504, #1507, #1532).src/adcp/client.pyconflicted. feat(property-lists): unify resolution and validate seller inventory #1532 addedproduct_property_policytoADCPClientandADCPMultiAgentClientright next to feat(identity): add experimental AdCP 3.3 agent identity #1502'sexperimental_agent_identity. The resolution keepsproduct_property_policy: its parameter, docstring, attribute, and forwarding to per-agent clients. It removes only theexperimental_agent_identityparameter, docstring, attribute, and forwarding.mainline for line. So this PR removes exactly feat(identity): add experimental AdCP 3.3 agent identity #1502 and keeps every later change.mypy src/adcppasses, the package imports, and nothing references the removed modules (adcp.types.experimental_identity,adcp.signing.wba,adcp.signing.trust, the_identity_schemasbundle, and so on).Keeping #1502 on
next(required step after this merges)The trap: when
nextnext takesmain, this revert comes along and deletes the identity code fromnexttoo. Record the revert onnextas merged without applying it. A maintainer runs this once, right after this PR merges, before anyone else mergesmainintonext:Push the merges straight to
next, or open a PR and merge it with Create a merge commit. A squash or rebase merge drops the-s oursparent, and the next sync would delete the code again.The equivalent alternative is to merge
origin/mainintonextas usual, then rungit revert <REVERT>onnextto revert the revert. That gives the same tree, but it reports modify/delete conflicts wherevernext(#1514, #1523) has changed #1502's files. The-s ourssequence avoids those conflicts, so prefer it.Can this be done before the merge? Only if this PR is merged with Create a merge commit, which keeps this branch's commit as-is. In that case a maintainer can run steps 1 and 2 now, with
REVERTset to this branch's head andREVERT^= the currentmainbase, and later syncs carry no deletion. With the repository's usual squash merge,maingets a new commit and the pre-merge step doesn't apply, so I haven't run it. Run the post-merge procedure above. The same procedure is written up inRELEASING.md(#1535).Checks
mypy src/adcp: clean.ruff check src/: clean.pytest tests -n 6without the Postgres reporting conformance lane (tests/conformance/reporting): 14324 passed, 140 skipped, 1 xfailed, 0 failed. CI runs the full suite, Postgres lanes included.Refs #1525, #1535, adcontextprotocol/adcp#8118.
🤖 Generated with Claude Code