chore(a2a): migrate from adka2a to adka2a/v2 - #4041
Conversation
|
👋 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 |
# Conflicts: # go.mod
aheritier
left a comment
There was a problem hiding this comment.
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-20andpkg/a2a/executor_wrapper.go:9importgoogle.golang.org/adk/runner,google.golang.org/adk/server/adka2a/v2andgoogle.golang.org/adk/session— the v1 module. Onmainthese are allgoogle.golang.org/adk/v2/.... The correct post-rebase target isgoogle.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.modpinsgithub.com/a2aproject/a2a-go/v2 v2.3.1as a direct dependency, butmainis already onv2.4.0(indirect). Post-rebase this should becomev2.4.0direct — please re-verify the v2 executor contract againstv2.4.0rather thanv2.3.1..golangci.yml:e8cfe56added six lines to the sameexclude-rulesblock this PR edits. TheSA1019 adka2aexclusion is still present onmain(.golangci.yml:189), so removing it (AC #3) remains valid — just make sure the resolution drops only that rule and keeps the newly addedsamplingexclusion.
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.
|
👋 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 |
Summary
adka2acompatibility shim toadka2a/v2a2a-go/v2, then remove the obsoleteSA1019suppressionIssue expectations
google.golang.org/adk/server/adka2a/v2github.com/a2aproject/a2a-go/v2where requirediter.Seq2[a2a.Event, error]and normalizes nil artifact partsSA1019exceptionValidation
task linttask testtask buildgo test ./e2e -run '^TestA2AServer_' -count=1Closes #4035