Skip to content

chore(a2a): migrate from adka2a to adka2a/v2 - #4041

Open
Sayt-0 wants to merge 3 commits into
mainfrom
chore/a2a-adka2a-v2
Open

chore(a2a): migrate from adka2a to adka2a/v2#4041
Sayt-0 wants to merge 3 commits into
mainfrom
chore/a2a-adka2a-v2

Conversation

@Sayt-0

@Sayt-0 Sayt-0 commented Aug 24, 2026

Copy link
Copy Markdown
Member

Summary

  • migrate the A2A server from the deprecated adka2a compatibility shim to adka2a/v2
  • adapt artifact event normalization to the v2 iterator-based executor contract while preserving cancellation and cleanup behavior
  • update server, invocation, and end-to-end tests for a2a-go/v2, then remove the obsolete SA1019 suppression

Issue expectations

Expectation Implementation
Use google.golang.org/adk/server/adka2a/v2 Server executor and wrapper now use the v2 package
Use github.com/a2aproject/a2a-go/v2 where required Server-side A2A code and tests use v2; the separate legacy client remains on v0
Replace queue-based execution Wrapper decorates iter.Seq2[a2a.Event, error] and normalizes nil artifact parts
Remove the adka2a SA1019 exception The narrow lint exclusion was removed
Validate the migration Lint, full tests, build, and focused A2A e2e tests pass

Validation

  • task lint
  • task test
  • task build
  • go test ./e2e -run '^TestA2AServer_' -count=1

Closes #4035

@Sayt-0
Sayt-0 requested a review from a team as a code owner August 24, 2026 07:38
@aheritier aheritier added area/a2a Agent-to-Agent protocol, A2A server, inter-agent communication area/deps Dependency updates and version bumps area/testing Test infrastructure, CI/CD, test runners, evaluation status/needs-rebase PR has merge conflicts or is out of date with main labels Aug 24, 2026
@aheritier

Copy link
Copy Markdown
Collaborator

👋 This PR has merge conflicts with the base branch. Please rebase or merge the latest base branch and resolve them. I've moved it to draft and added status/needs-rebase; it'll be picked back up automatically once the conflicts are cleared.

@Sayt-0
Sayt-0 enabled auto-merge August 24, 2026 08:13
@aheritier aheritier added kind/chore Maintenance, deps, CI, tooling (maps to chore: commit prefix) and removed status/needs-rebase PR has merge conflicts or is out of date with main labels Aug 24, 2026

@aheritier aheritier left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review: merge-blocked — rebase and re-validation required

Head: 57b2bab · Base: main @ e1c8f65 · CI on head: green (10 success, 3 skipped, 0 failing)

1. [blocking] Merge conflicts confirmed

GitHub reports mergeable: false, mergeable_state: dirty, rebaseable: false. Reproduced locally against current main (e1c8f65):

$ git merge-tree --write-tree --name-only origin/main <pr-head>
CONFLICT (content): Merge conflict in .golangci.yml
CONFLICT (content): Merge conflict in go.mod
CONFLICT (content): Merge conflict in pkg/a2a/executor_wrapper.go
CONFLICT (content): Merge conflict in pkg/a2a/server.go

Note rebaseable: false — a plain git rebase won't go through unattended; those four files need manual resolution.

2. [blocking] The conflict is semantic, not textual: main moved to the adk/v2 module

Root cause: e8cfe56 ("chore: migrate to OpenTelemetry SDK 1.45"), which landed on main after this branch's merge-base c995693, changed the ADK module path:

- google.golang.org/adk v1.6.0
+ google.golang.org/adk/v2 v2.2.1-0.20260818092052-16e33673bc9e
- github.com/a2aproject/a2a-go/v2 v2.3.1 // indirect
+ github.com/a2aproject/a2a-go/v2 v2.4.0 // indirect

and it touched the same files this PR rewrites (pkg/a2a/executor_wrapper.go, pkg/a2a/server.go, .golangci.yml). So resolving the conflicts means more than picking a side:

  • pkg/a2a/server.go:18-20 and pkg/a2a/executor_wrapper.go:9 import google.golang.org/adk/runner, google.golang.org/adk/server/adka2a/v2 and google.golang.org/adk/session — the v1 module. On main these are all google.golang.org/adk/v2/.... The correct post-rebase target is google.golang.org/adk/v2/server/adka2a/v2, which does exist in the pinned pseudo-version (verified in the module cache: adk/v2@v2.2.1-0.20260818092052-16e33673bc9e/server/adka2a/v2).
  • go.mod pins github.com/a2aproject/a2a-go/v2 v2.3.1 as a direct dependency, but main is already on v2.4.0 (indirect). Post-rebase this should become v2.4.0 direct — please re-verify the v2 executor contract against v2.4.0 rather than v2.3.1.
  • .golangci.yml: e8cfe56 added six lines to the same exclude-rules block this PR edits. The SA1019 adka2a exclusion is still present on main (.golangci.yml:189), so removing it (AC #3) remains valid — just make sure the resolution drops only that rule and keeps the newly added sampling exclusion.

The migration itself is still needed: main's pkg/a2a/executor_wrapper.go still uses the queue-based adk/v2/server/adka2a shim.

3. [blocking] Green CI on this head does not validate the merged result

All 13 check-runs on 57b2bab completed between 08:01:45Z and 08:09:44Z (10 success, 3 skipped image-push jobs, no failures, nothing pending — the combined-status endpoint's state: pending is an artifact of total_count: 0, i.e. no legacy commit statuses, not a real pending check).

But e8cfe56 (the ADK v2 upgrade) landed at 08:56Z and main's current head e1c8f65 (#4040) at 10:04Z — both after CI finished. The green run therefore validated this branch against a base that predates the ADK module-path change, and carries no signal for the post-merge state. task lint, task test, task build and the focused A2A e2e run listed in the PR description all need re-running after the rebase.

4. [should-fix] Triage state is out of sync

The triage comment says the PR was moved to draft and labelled status/needs-rebase, but the PR is not a draft (no convert_to_draft event in the timeline) and status/needs-rebase was removed at 08:32:25Z. That removal was correct at the time — the conflicts described above only appeared at 08:56Z when e8cfe56 landed. The label should be re-applied so triage reflects reality.

Issue-to-implementation check (#4035)

Acceptance criterion Status
adka2a/v2 replaces the deprecated shim Done in spirit, but via the v1 module path — must be re-pointed at adk/v2/server/adka2a/v2
a2a-go/v2 replaces v0 where required Done for server-side code; version needs bumping to v2.4.0 to match main
SA1019 exclude-rule removed Done, but conflicts with main's reworked block
lint / test / A2A e2e pass Passed pre-conflict; must be re-validated post-rebase

The shape of the migration looks right — iter.Seq2 decoration in fixArtifactEvents, the AgentExecutor / AgentExecutionCleaner interface assertions, and delegating Cleanup to preserve cleanup semantics are all sensible, and the nil-Parts artifact normalization is preserved. No correctness objections to the code as written; the blockers are base drift and re-validation.

Not approving: unresolved conflicts plus CI that predates the base change. Happy to re-review once this is rebased onto adk/v2 and CI is green on the new head.

@aheritier aheritier added the status/needs-rebase PR has merge conflicts or is out of date with main label Aug 24, 2026
@aheritier

Copy link
Copy Markdown
Collaborator

👋 This PR has merge conflicts with the base branch. Please rebase or merge the latest base branch and resolve them. I've moved it to draft and added status/needs-rebase; it'll be picked back up automatically once the conflicts are cleared.

@aheritier aheritier removed the status/needs-rebase PR has merge conflicts or is out of date with main label Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/a2a Agent-to-Agent protocol, A2A server, inter-agent communication area/deps Dependency updates and version bumps area/testing Test infrastructure, CI/CD, test runners, evaluation kind/chore Maintenance, deps, CI, tooling (maps to chore: commit prefix)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(a2a): migrate from adka2a to adka2a/v2

2 participants