Skip to content

fix: resolve ACP v1 conformance failures found by acp-tck - #536

Merged
EugeneTheDev merged 2 commits into
agentclientprotocol:mainfrom
EugeneTheDev:air/fix/acp-v1-conformance
Sep 23, 2026
Merged

EugeneTheDev merged 2 commits into
agentclientprotocol:mainfrom
EugeneTheDev:air/fix/acp-v1-conformance

Conversation

@EugeneTheDev

@EugeneTheDev EugeneTheDev commented Sep 22, 2026

Copy link
Copy Markdown
Collaborator

Runs the acp-tck ACP v1 conformance suite against the adapter and fixes every MANDATORY and CAPABILITY failure it reports; the verdict goes from NOT CONFORMANT to CONFORMANT.

  • session/resume, session/load and session/delete failed with "no rollout found for thread id" on a session that was created but never prompted, because Codex materializes a thread's rollout lazily on its first user message. Resume/load now fall back to thread/read, which answers for a live unmaterialized thread; delete treats "no persisted thread under this id" as success, which also makes deleting an unknown or unparseable session id a silent no-op as the spec asks.
  • session/load could be followed by a session_info_update from a title generation still running from an earlier turn. Load now waits for that generation to settle before answering.
  • A session/cancel that lands before Codex registers the turn as interruptible was dropped, and the turn answered end_turn instead of cancelled. turn/interrupt is now retried with a short backoff while the prompt is still in flight.

Left as-is, ADVISORY-only: the remaining ACP-SCHEMA-002 finding flags PromptResponse.usage and NewSessionResponse.models as non-_meta root fields. usage is an SDK-defined field, and models is an intentional backwards-compat shim for pre-configOptions clients whose removal would need a deliberate major-version deprecation rather than a conformance patch. Since the requirement is ADVISORY, this doesn't affect the CONFORMANT verdict.

Runs the acp-tck ACP v1 conformance suite against the adapter and fixes
every MANDATORY and CAPABILITY failure it reports; the verdict goes from
NOT CONFORMANT to CONFORMANT.

- session/resume, session/load and session/delete failed with "no rollout
  found for thread id" on a session that was created but never prompted,
  because Codex materializes a thread's rollout lazily on its first user
  message. Resume/load now fall back to thread/read, which answers for a
  live unmaterialized thread; delete treats "no persisted thread under
  this id" as success, which also makes deleting an unknown or
  unparseable session id a silent no-op as the spec asks.
- session/load could be followed by a session_info_update from a title
  generation still running from an earlier turn. Load now waits for that
  generation to settle before answering.
- A session/cancel that lands before Codex registers the turn as
  interruptible was dropped, and the turn answered end_turn instead of
  cancelled. turn/interrupt is now retried with a short backoff while the
  prompt is still in flight.

The one remaining failure, ADVISORY ACP-SCHEMA-002, is left as-is and
explained in docs/acp-v1-conformance.md along with how to run the suite.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@EugeneTheDev
EugeneTheDev marked this pull request as ready for review September 22, 2026 21:20
@EugeneTheDev
EugeneTheDev force-pushed the air/fix/acp-v1-conformance branch from bc28457 to 226ff0e Compare September 22, 2026 23:05
@EugeneTheDev
EugeneTheDev merged commit 1cc6223 into agentclientprotocol:main Sep 23, 2026
2 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.

1 participant