From 21bc0eba683b7ae18673316cea02150e8647d2e0 Mon Sep 17 00:00:00 2001 From: Dotta Date: Wed, 2 Sep 2026 21:48:45 -0500 Subject: [PATCH] fix(runner): surface ACPX admission classifications --- .../runner-core/src/acpx_sidecar_transport.rs | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/packages/paperclip-runner/runner/crates/runner-core/src/acpx_sidecar_transport.rs b/packages/paperclip-runner/runner/crates/runner-core/src/acpx_sidecar_transport.rs index 34f000ecd9..d6744506bd 100644 --- a/packages/paperclip-runner/runner/crates/runner-core/src/acpx_sidecar_transport.rs +++ b/packages/paperclip-runner/runner/crates/runner-core/src/acpx_sidecar_transport.rs @@ -619,6 +619,15 @@ fn response_error_classification(error: &ResponseError) -> &'static str { "SESSION_CONFIG_OPTION_REPLAY_FAILED" => return "session_config_option_replay_failed", "CLAUDE_ACP_SESSION_CREATE_TIMEOUT" => return "claude_session_create_timeout", "ACPX_SESSION_HANDSHAKE_TIMEOUT" => return "session_handshake_timeout", + "ACPX_RUNTIME_ADMISSION_VERIFICATION_TIMEOUT" => { + return "runtime_admission_verification_timeout" + } + "ACPX_SIDECAR_STATUS_READ_TIMEOUT" => return "session_status_read_timeout", + "ACPX_PERSISTED_SESSION_MISSING" => return "persisted_session_missing", + "ACPX_PERSISTED_SESSION_IDENTITY_MISMATCH" => return "persisted_session_identity_mismatch", + "ACPX_MODEL_STATUS_UNAVAILABLE" => return "model_status_unavailable", + "ACPX_MODEL_SELECTION_UNAVAILABLE" => return "model_selection_unavailable", + "ACPX_EFFECTIVE_MODEL_MISMATCH" => return "effective_model_mismatch", _ => {} } match error.message.as_str() { @@ -714,6 +723,36 @@ mod tests { )), "session_handshake_timeout" ); + let admission_failures = [ + ( + "ACPX_RUNTIME_ADMISSION_VERIFICATION_TIMEOUT", + "runtime_admission_verification_timeout", + ), + ( + "ACPX_SIDECAR_STATUS_READ_TIMEOUT", + "session_status_read_timeout", + ), + ( + "ACPX_PERSISTED_SESSION_MISSING", + "persisted_session_missing", + ), + ( + "ACPX_PERSISTED_SESSION_IDENTITY_MISMATCH", + "persisted_session_identity_mismatch", + ), + ("ACPX_MODEL_STATUS_UNAVAILABLE", "model_status_unavailable"), + ( + "ACPX_MODEL_SELECTION_UNAVAILABLE", + "model_selection_unavailable", + ), + ("ACPX_EFFECTIVE_MODEL_MISMATCH", "effective_model_mismatch"), + ]; + for (code, classification) in admission_failures { + assert_eq!( + response_error_classification(&error(code, "violet-circuit-4821")), + classification, + ); + } assert_eq!( response_error_classification(&error("ACP_MODEL_UNSUPPORTED", "violet-circuit-4821",)), "requested_model_unsupported"