Skip to content

fix(server): translate older releases when identity33 is enabled - #3680

Merged
bokelley merged 2 commits into
adcontextprotocol:mainfrom
aleksUIX:fix/identity33-release-translation
Nov 11, 2026
Merged

bokelley merged 2 commits into
adcontextprotocol:mainfrom
aleksUIX:fix/identity33-release-translation

Conversation

@aleksUIX

Copy link
Copy Markdown
Contributor

Enabling identity33 skips release translation for older callers. A 3.1 get_media_buy_delivery request can fail strict response validation because per-buy currency never moves to the required root field. Older task polls can also receive fields from a newer release.

Apply the existing converters regardless of identity33, while keeping capabilities on their separate projection path and preserving same-release behavior. Add regressions for 3.0/3.1 delivery responses, 3.2 and 3.3 controls, stored task results, translation callbacks, authorization denial, and dispatch-level 3.3 identity-field projection for a 3.2 buyer.

Validation: 22 focused tests pass. Seven fail with the upstream translation guards restored. Build, typecheck, lint, boundary lint and formatting pass. The fast lane has two CLI help failures reproduced on the unchanged baseline. The slow lane had one candidate-order failure; all 244 tests in that file subsequently passed on both baseline and patched code. Workspace tests pass, with one reporting-storage skip.

Fixes #3660.

@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 version-translation consistency fix.

This PR removes two over-broad config.identity33 guards in create-adcp-server.ts so version translation (request upgrade, response downgrade, and stored get_task_status results) runs for older buyers on identity33 servers — closing a wire-fidelity bug where 3.3-only fields leaked un-stripped to 3.1/3.2 callers, aligning with the already-correct get_adcp_capabilities path. Ordering is preserved (validate/authorize on original params, then upgradeRequest before handler) and pinned by new tests. The src/lib/** change is accompanied by a defensible patch changeset, satisfying the changeset-vs-wire-impact rule.

Decision-table walk:

  • Row 1: no critical/high findings → skip.
  • Row 2: gated_paths is false → skip (review_decision REVIEW_REQUIRED is irrelevant when gated_paths is false).
  • Row 3: high_risk false → skip.
  • Rows 4–6: no medium findings, no prior escalation → skip.
  • Row 7: no no-auto-approve team match → skip.
  • Row 8: fewer than three medium findings (zero) → skip.
  • Row 9: approve.

No blocking findings, no escalation triggers.

@bokelley
bokelley merged commit ccfc06c into adcontextprotocol:main Nov 11, 2026
43 checks passed
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.

Server: identity33 servers skip request/response conversion for older callers on every tool (DR-0024)

2 participants