⢠Adds tests that launch each built-in ACP provider (claude-code, codex, gemini-cli) for real via npx with a bogus credential, and read the live server's behavior back ā agent name/version, auth handshake, session mode, and whether every
model id in our registry is actually still accepted (not just "listed"). Also bounds agent-client-protocol to <0.11.0 (0.11.0 broke the client).
⢠Why now: We're about to land several more ACP harnesses (Kimi, OpenCode, Pi, ā¦). Right now nothing verifies our registry's claims about a provider (auth methods, session mode, model ids) against what the real CLI actually does ā every past mismatch) was caught by a human noticing broken behavior in prod, not by CI. With more providers landing, that drift becomes unmanageable to catch by hand. Running this for real already caught live drift: 3 dead codex model ids the server now rejects, fixed in this PR.
⢠Why the special CI treatment: These tests depend on external services (the npm registry + real ACP CLI subprocesses) that shouldn't be able to block unrelated merges if they blip. So they're not part of the required sdk-tests gate ā they're deselected by default and run in a separate, non-required job that only triggers when ACP registry/catalog files actually change.