Skip to content

fix(runtime): preserve client capability tool outcomes - #5458

Open
testikun wants to merge 1 commit into
apache:mainfrom
testikun:codex/fix-5449-capability-outcome
Open

testikun wants to merge 1 commit into
apache:mainfrom
testikun:codex/fix-5449-capability-outcome

Conversation

@testikun

@testikun testikun commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Summary

Computer Use refusals and explicit stops could return model-visible text without a call-failure fact. Desktop's Client Capability projection then dropped even existing result status, so Host settlement, T2, telemetry, and activity views could record a failure as success. This PR carries an explicit success | error | aborted outcome from CU/native projection through the Client Capability wire and Host tool settlement, then through durable events, continuity, UI, CLI, and ACP replay. Ordinary MCP and business JSON results retain their existing semantics; failed process observations remain successful tool calls.

Client Capability results now require the outcome and the Host compatibility epoch moves from 161 to 162. Old stored records without the field remain readable; this does not promise that an older binary can read newly written records. No old records are rewritten. The change stays within the bounded outcome contract, without a general ToolResult/plugin migration.

Fixes #5449
Refs #4909

Verification

  • npm run build, npm run typecheck, npm run lint, npm run format:check, npm run check:stale, and npm run check:asf-headers passed.
  • Runtime Host full dist suite on Node 24 with --test-concurrency=1: 1,952 passed, 12 skipped, 0 failed. Targeted CU, direct/chunked UDS, T2/SQLite reopen, continuity, UI, CLI/ACP, and Desktop native projection regressions passed. The other workspaces passed in the serial workspace run.
  • The default workspace runner twice failed only the unchanged session-catalog-two-client-uds CAS race (committed, committed versus committed, revision_conflict); that file passes alone and the complete Runtime Host suite passes with one test file at a time. No CAS code or assertions were changed.
  • No real OS permissions, external network provider, or model execution were exercised. Existing controlled-transport evidence is not presented as a new real-machine screenshot.

AI use

  • No generative tool made a substantive contribution
  • Generative tooling made a substantive contribution

Tool(s) and scope: OpenAI Codex implemented the bounded result contract, cross-layer propagation, regression tests, and verification. The commit carries a Generated-by trailer.

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

Carry explicit CU and Client Capability success, error, and aborted outcomes through transport, durable events, continuity, and UI projections. Keep legacy tool result semantics and old records readable.

Generated-by: OpenAI Codex
@github-actions github-actions Bot added the effort/L Under 1000 readable lines label Sep 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

effort/L Under 1000 readable lines

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[A06] Computer Use failures appear successful across result boundaries

1 participant