Skip to content
UHPUHPDeveloper Guide
Independent developer guide. Not affiliated with HarnessRouter or the official UHP project.

A2A ACTS conformance and ITK

A2A is developing a portable conformance-test specification while its official Integration Testing Kit already executes a pinned corrected candidate corpus. The distinction matters: ACTS is still an open proposal, and the current ITK mirror comes from open A2A PR #2227 rather than the released A2A specification.

Page reviewed 4 Oct 2026 Source and review policy

ACTS status: open proposalITK checked main: b57c5332

A2A now has a concrete conformance architecture under active development, but it is not yet a finalized A2A conformance standard. A2A core PR #1882 remains open. Corrective PR #2227 is also open and targets the conformance-spec branch rather than A2A main; its 16 September reviewed head was 7bae1d8f46c1d7e94e94ffe46b1237460111a4ec. A focused GitHub API check on 4 October 2026 confirms both PRs remain open and unmerged; #2227 has advanced to 82c277f342a2fd7ea47548e2de94f97ea578a7ed. Current ITK provenance declares the same 111-test count for the new pin; the earlier PR #67 runtime evidence below remains tied to its original candidate.

At the 16 September source cutoff, the official a2aproject/a2a-itk repository had adopted that corrected candidate corpus through merged ITK PR #67. The reviewed ITK main was 589dae84aa0f2cc51381560ad1ce519a52ef3912. Its provenance file records a byte-identical mirror of A2A PR #2227 head 7bae1d8f...: 15 files, 111 tests, loaded strictly with zero errors and no rewriting.

Publish a report that identifies the corpus and runner

Section titled “Publish a report that identifies the corpus and runner”

The current ITK provenance, retrieved 4 October 2026, now pins 82c277f342a2fd7ea47548e2de94f97ea578a7ed from open A2A PR #2227. It declares 15 files / 111 tests, strictly loaded with no rewriting. The earlier 7bae1d8f pin remains historical; this is a source-declared current corpus count, not a new execution by this site. Both A2A proposal PRs remain open.

For a result you intend to publish, attach this minimum receipt:

CoordinateWhy it matters
Protocol revision and bindingJSON-RPC, HTTP+JSON and gRPC have different transport assertions
Runner commit and exact corpus commitA newer runner/corpus can change interpretation without a protocol release
Implementation build and endpoint modeAuthentication and streaming support affect preconditions
Passed/failed/skipped/errored and scopeSubsets or skipped preconditions cannot become an unrestricted claim
Deviations/configurationRunner-specific authentication reruns must remain visible

Run strict corpus checks before interpreting server failures. If a transport assertion is rewritten into a body assertion, a green result can be evidence about the runner’s mistake. Keep conformance and cross-SDK traversal as separate report families even when the same ITK supplies both. Compare UHP conformance by evidence discipline, not by 111-versus-85 test totals.

LayerCurrent roleMaturity at this cutoff
A2A ProtocolDefines the agent-to-agent wire/application contract and bindings.Tagged specification release v1.0.1.
ACTSProposed portable conformance-test definitions and report semantics for A2A v1.0.Open A2A core PR #1882, with open corrective PR #2227 targeting its branch.
A2A ITKOfficial integration/interoperability test harness that can also execute a pinned ACTS corpus.Active implementation; checked main b57c5332; corrected corpus mirror has no load-time rewrite layer.

This separation is important for implementers. A protocol release can remain stable while its conformance tooling evolves independently, and a runner can implement a draft test contract before that contract is accepted as normative project policy.

PR #1882 proposes a single YAML-based test representation that abstracts protocol operations away from concrete bindings such as JSON-RPC, HTTP+JSON and gRPC. Its proposal corpus contains 111 tests and defines assertion primitives, streaming checks, task-state validation and a standard JSON result/report shape so different runners can produce comparable evidence.

The corrective PR #2227 keeps the proposal in review but realigns the candidate corpus and grammar with normative A2A sources. Its corrections include A2A error names/codes and transport mappings, operation names and HTTP methods, flat Part and push-configuration shapes, task-state transition wording, header assertions, runner-provided variables, and a top-level authentication precondition instead of the impossible capabilities.authentication gate.

The current ITK mirror declares 15 files / 111 tests from #2227 head 82c277f3...; PR #67 originally mirrored 7bae1d8f.... Those counts describe a pinned candidate revision, not a ratified A2A certification programme. Until ACTS is merged and released or otherwise formally adopted, implementations should cite the exact corpus revision and runner they executed rather than saying only “A2A conformant.”

The ITK has a broader purpose than ACTS. Its README describes an SDK-agnostic interoperability system that starts implementations from several A2A SDKs and exercises cross-SDK paths across JSON-RPC, gRPC and HTTP+JSON, including streaming. Its traversal logic is designed to cover directed implementation/binding combinations rather than merely testing one server against isolated examples.

Merged PR #64 introduced the distinct ACTS execution path. Merged PR #67 materially tightens it:

  • the former test_suite/acts/compat.py load-time rewrite layer is deleted;
  • the mirrored corpus is pinned byte-for-byte to the corrected #2227 candidate and must load strictly;
  • preconditions.authentication is evaluated from the Agent Card’s securitySchemes and securityRequirements rather than a nonexistent AgentCapabilities member;
  • an ITK_ACTS_AUTH deviation pass reruns only the authentication-gated cases and keeps their original skips unless the card proves the alternate SUT mode actually took effect;
  • a refused streaming operation can preserve and evaluate its ordinary A2A error document instead of being discarded as a content-type failure;
  • runner variables are merged inside the shared ACTS runner path, so both CLI and POST /run-acts resolve variables such as {{insufficientAuthToken}} consistently;
  • expect.headers is evaluated rather than merely accepted by schema, allowing content-type, cache and authentication-challenge assertions to inspect actual HTTP response metadata.

The ITK therefore has two related but non-identical evidence modes: cross-SDK interoperability traversal and ACTS-style normative conformance execution.

The old compatibility-rewrite state is historical

Section titled “The old compatibility-rewrite state is historical”

Before PR #67, ITK provenance documented a pin where 85 of 111 tests loaded directly and 26 required mechanical compatibility rewrites. That state is no longer current.

Current scenarios/acts/PROVENANCE.md records a byte-identical mirror of A2A PR #2227 head 82c277f3..., 15 files, 111 tests, loaded strictly with no errors and no rewriting. The removal matters because the previous rewrite layer had begun matching new expect.headers blocks in a way that could relocate them into body assertions, potentially reporting a pass without checking the named header.

This correction does not upgrade ACTS maturity. The ITK is deliberately following an open corrective branch while review continues upstream. A green ITK ACTS result should therefore be read as “passed this ITK version against this exact pinned candidate ACTS revision”, not as an unqualified certification by the A2A Project.

ACTS is an important architectural signal because it moves A2A toward portable, version-addressable conformance evidence instead of leaving every SDK or vendor to invent unrelated test semantics. PR #67 also illustrates a second requirement for credible conformance tooling: the runner must not silently reinterpret a corpus or turn its own transport/configuration defects into failures attributed to the implementation under test.

The ITK adds the complementary question: do separately implemented SDKs actually interoperate across transport/binding combinations? Conformance asks whether an implementation satisfies a defined contract. Interoperability testing asks whether independently implemented peers work together in practice. A mature ecosystem benefits from both, but neither substitutes for the other.

UHP and A2A operate at different protocol boundaries, so their test counts must not be compared as though they measure the same thing.

DimensionA2A ACTS / ITKUHP conformance
Protocol boundaryRemote agent ↔ agent/application interaction.Client ↔ server ↔ selected complete harness execution.
Current protocol lineA2A v1.0, latest tagged spec release v1.0.1.UHP 2026-09-28 Draft.
Test authorityACTS remains an open proposal; ITK executes a pinned corrected candidate corpus from open PR #2227.Published UHP conformance package 2026.9.28.post3.
Reviewed corpus / current UHP countCandidate ACTS corpus mirrored by ITK: 111 tests.85 checks in the current UHP source.
Cross-implementation testingITK separately exercises SDK/binding interoperability.Conformance validates a UHP server against the UHP contract; independent implementation evidence is tracked separately.
Draft correction handlingCurrent ITK loads the pinned corrected corpus strictly with no compatibility rewriting; the prior 85-direct / 26-rewritten state is historical.No ACTS-style draft compatibility layer is part of the current published UHP suite.
Cross-protocol implicationNone.None.

HarnessRouter Community Edition’s historical checked-in reference evidence records 74/74 UHP Full, 0 failed, 0 skipped, 0 errored under suite 2026.9.12. The earlier 64/64 result remains valid only as historical evidence for the prior 2026.8.11.post1 suite revision. None of those UHP results are A2A evidence: an A2A SDK or agent passing ACTS does not become a UHP implementation, and a UHP server passing its suite does not become A2A-conformant.

  • A2A protocol release: latest tagged specification release observed here is v1.0.1; ACTS does not create a new wire-protocol version.
  • ACTS: PR #1882 remains open. Corrective PR #2227 also remains open and targets conformance-spec; its checked head is 82c277f342a2fd7ea47548e2de94f97ea578a7ed.
  • ITK: official A2A Project repository; current checked main is b57c5332aa883b27c1e5c915fe61cac76d2a1de9; the original PR #67 runtime review used 589dae84.
  • ACTS pin inside ITK: current provenance records source revision 82c277f342a2fd7ea47548e2de94f97ea578a7ed from open PR #2227; the earlier runtime review remains pinned to 7bae1d8f.
  • Compatibility policy: current provenance records 15 files / 111 tests loaded strictly with no errors and no rewriting. The older 85/26 compatibility-rewrite state is superseded historical evidence.
  • Runner-specific deviation: PR #67’s alternate authentication pass is ITK runner behavior and its optional configuration report field is not presented here as ratified ACTS semantics.
  • UHP: current published line is 2026-09-28 Draft with conformance package 2026.9.28.post3 and 85 checks; no UHP↔ACTS binding or shared conformance authority is established.
  • HarnessRouter: the cited Community Edition reference evidence is 74/74 Full under historical suite 2026.9.12; it does not establish a result for the current 85-check source. No A2A backend/adoption claim follows from this tooling work.

Read UHP vs A2A for the protocol-layer comparison, A2A CLI for the official command-line client surface, UHP conformance for UHP’s released test model, and Harness composition for delegation topology around agent runtimes.