Skip to content

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

Merged
Sayt-0 merged 3 commits into
mainfrom
chore/a2a-adka2a-v2
Aug 31, 2026
Merged

Sayt-0 merged 3 commits into
mainfrom
chore/a2a-adka2a-v2

Conversation

@Sayt-0

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

Copy link
Copy Markdown
Contributor

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
@Sayt-0
Sayt-0 disabled auto-merge August 31, 2026 07:58
@Sayt-0
Sayt-0 merged commit 262a111 into main Aug 31, 2026
13 checks passed
@Sayt-0
Sayt-0 deleted the chore/a2a-adka2a-v2 branch August 31, 2026 08:07
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

3 participants