Skip to content

test: run acp-tck against v1 and v2 SDK agents - #147

Merged
EugeneTheDev merged 6 commits into
masterfrom
eugenethedev/integration-tests
Oct 20, 2026
Merged

EugeneTheDev merged 6 commits into
masterfrom
eugenethedev/integration-tests

Conversation

@EugeneTheDev

@EugeneTheDev EugeneTheDev commented Oct 17, 2026 •

Copy link
Copy Markdown
Collaborator

Adds conformance testing with acp-tck, set up like Koog's A2A TCK tests.

  • :test-tck:acp-tck-agent-v1 and :test-tck:acp-tck-agent-v2: STDIO agents on the stable and v2 Agent runtimes that advertise every capability the suites check.
  • test-tck/setup_tck.sh clones acp-tck at a pinned commit; test-tck/run_tck.sh <v1|v2> builds the agent and runs the suite.
  • acpTck.yml runs both suites and uploads the JSON reports. It is manual-only for now, because the SDK doesn't pass yet.

Current results against acp-tck 3d46e21, not fixed in this PR:

  • v1 (3 failures): session/load replays history after the response (LOAD-002, capability); session/new without cwd is answered with -32700 instead of -32602 (ERROR-002, advisory); the agent never connects to the stdio MCP server it is given (SESSION-004, advisory).
  • v2 (3 mandatory, 4 capability failures): initialize with versions other than 2 returns -32602 instead of selecting a version or -32022 with requested/supported data (INIT-003/202/205); session/resume sends no state_update snapshot before responding (RESUME-206), accepts an unsupported replayFrom cursor (RESUME-207), and answers a malformed replayFrom with -32603/-32700 instead of -32602 (RESUME-208); session/close responds before the cancelled idle state_update (CLOSE-203).

Add STDIO agents built on the stable and v2 Agent runtimes as systems under
test for https://github.com/agentclientprotocol/acp-tck (pinned at fa00ccd),
with setup/run scripts modelled on Koog's A2A TCK setup. The CI workflow is
manual-only until the reported failures are fixed.
@EugeneTheDev EugeneTheDev changed the title test: run acp-tck against stable and v2 SDK agents test: run acp-tck against v1 and v2 SDK agents Oct 17, 2026
@slapoguzov
slapoguzov self-requested a review October 19, 2026 12:49
Comment thread test-tck/setup_tck.sh Outdated
@@ -0,0 +1,25 @@
#!/usr/bin/env bash

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.

It would be better to manage acp-tck through pyproject.toml and uv.lock, and run it with uv run --locked. Currently, changing COMMIT_HASH leaves existing local checkouts untouched, so local runs and CI can use different TCK revisions. This would also remove the custom clone/setup logic and lock transitive dependencies.

@EugeneTheDev EugeneTheDev Oct 20, 2026 •

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Good point, I haven't though about using uv like this here. Will do

* A stdin read blocked on another path cannot be interrupted, so exit explicitly once the
* transport is closed instead of waiting for every coroutine to unwind.
*/
exitProcess(0)

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.

Looks like this exitProcess(0) is unreachable when the transport closes while stdin is still open

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.

Also, I think nothing can actually close the transport that way today: System.out is a PrintStream, so it swallows the IOException, which means a dead stdout looks like a successful write and the agent keeps answering nobody

…d of blocking, move exitProcess inside runBlocking
@EugeneTheDev
EugeneTheDev merged commit 449b5d6 into master Oct 20, 2026
3 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.

2 participants