feat(cua-driver)!: standardize action results - #2713
Conversation
📦 Publishable packages changedThis comment is status-only. Editing it or adding task-list checkboxes cannot authorize a release.
Ask the release owner to apply |
Codecov Report❌ Patch coverage is
📢 Thoughts on this report? Let us know! |
📦 Publishable packages changedThis comment is status-only. Editing it or adding task-list checkboxes cannot authorize a release.
Ask the release owner to apply |
|
Exact-SHA macOS certification completed for
GitHub CI is also fully green at this SHA across Linux, Windows, portable contract parity, generated SDK bindings, packaging, documentation, and Nix jobs. The PR remains draft until the prerequisite stack lands and is rebased for final release-SHA recertification. |
3e81d57 to
68b6e7b
Compare
0a79ee2 to
f381c29
Compare
|
Stack-rebase checkpoint: the two ActionResult commits were replayed cleanly onto #2711 head Fresh local validation on the rewritten head:
The PR remains draft. Its prior 152/152 Lume result is retained as historical evidence for the same patch before the stack rebase; exact-head recertification remains required after #2705 and #2711 land. |
📦 Publishable packages changedThis comment is status-only. Editing it or adding task-list checkboxes cannot authorize a release.
Ask the release owner to apply |
|
Fresh stacked-head CI completed for |
f381c29 to
aae5cde
Compare
📦 Publishable packages changedThis comment is status-only. Editing it or adding task-list checkboxes cannot authorize a release.
Ask the release owner to apply |
1 similar comment
📦 Publishable packages changedThis comment is status-only. Editing it or adding task-list checkboxes cannot authorize a release.
Ask the release owner to apply |
📦 Publishable packages changedThis comment is status-only. Editing it or adding task-list checkboxes cannot authorize a release.
Ask the release owner to apply |
|
Recertification update for exact current head
The broader standalone audit was intentionally not reported as fully green: it exposed a pre-existing macOS browser-chrome coverage contradiction in current |
Summary
ActionResultacross all 18 pointer, keyboard, value, and browser-input toolsverify_state, while preserving diagnostic MCP text/images and an internal rich execution recordactionandverificationviews in Rust, Python, and TypeScript; intentionally reject legacy or missing action payloadsverifiedadapter only incomputer-servercompatibility outputWhy
The old
verifiedboolean and platform-specific request echoes mixed dispatch acknowledgement with evidence of effect. That made no-op or under-verified actions easy for harnesses to mistake for success. This cutover narrows the public contract to stable outcome facts (effect,route, optional delivery/evidence/escalation) and leaves visual interpretation and task completion to the multimodal agent harness.Breaking impact
The outer MCP
ToolResultenvelope is unchanged. For the 18 action tools,structuredContentis intentionally breaking: legacy fields and action-specific output types are removed. SDK callers migrate fromresult.verifiedtoresult.action.effect; postcondition callers useresult.verification.status. Daemon and SDK must be upgraded together because 0.15 clients fail closed on 0.14 action payloads.This PR now targets
maindirectly and includes the internal action-truth layer that previously lived in #2711. Its prerequisite verification work landed through #2705 before this branch was rebased.Review
Claude Code Fable reviewed the complete design and implementation and returned safe after fixes. Its two release blockers are covered here:
PostMessagetext is confirmed only when read-back changed and contains the complete requested text.ActionResult.effect == refusedand recovers only the closed refusal code from preserved diagnostic text, without retaining prose or widening the result schema.Validation
Current head:
0d164592bdd003190a94e6d55c5d9c228eedfa80.cargo test -p cua-driver-core --lib(462 passed)cargo test -p cua-driver-contract(26 library tests plus generator test)cargo test --locked -p cua-driver-sdk(44 unit tests plus runtime coverage)cargo test --locked -p cua-driver-testkit(47 library tests plus report tests)cargo test --locked -p cua-driver-core --test contract_paritycargo test --locked -p cua-driver --all-targets --no-runcomputer-server, and generated documentation checkscargo fmt --all -- --checkandgit diff --checkmacOS Lume certification
aae5cde0dfd1a6694a1991bcb78c842a10144339: 152/152 passed — 144 delivered outcomes, 8 expected fail-closed refusals, 0 failures, 0 skips.macos-chrome-standalone-browser_ref_stalepassed with fixture-state, focus, z-order, cursor, leaked-input, video, and trajectory evidence.The optional standalone-Chrome audit also exposed an inherited
mainissue unrelated to this contract change: current macOS Chrome includes the complete notification permission prompt in window capture while the capability still declares browser chrome unobservable. That pre-existing coverage contradiction is tracked in reopened #2589; it is not hidden or counted as a #2713 pass.The Lume evidence used macOS 26.5.2 under Quartz/WindowServer. Requested source SHA, environment source SHA, browser provenance, and the focused exact-head result all match the revisions stated above.