This harness connects a live provider model to the production Maka model and tool path, the pinned cua-driver, and the owned Codex CUA Lab.app.
live provider -> getAIModel -> AiSdkBackend / streamText -> ToolRuntime -> maka_computer -> cua-driver -> AppKit Accessibility element action
The fixture launches in the background and never uses explicit activation. The launcher owns caffeinate, lock/frontmost monitoring, temporary files, fixture shutdown, and child termination.
The action policy allows only scenario-specific subsets of:
list_apps
observe
click_element
set_value
wait
Coordinate click, scroll, drag, type, key input, and compatibility pixel fallback are not available. A read-only HID age probe fences native semantic dispatch while the user is actively providing physical input.
gpt-5.6-sol completed:
reobserve_required, then the model observed and succeeded;target_missing, then the model rediscovered the new process and succeeded;click_element dispatch and the external AppKit button oracle changed exactly once.set_value followed by click_element, each using the fresh observation from the prior step; one dispatch per semantic action and zero pixel dispatch.claude-sonnet-4-6 completed:
AiSdkBackend product path;set_value then click_element task through the full product loop.No live Kimi or MiniMax credential is configured on this machine. Their product paths were therefore validated as hermetic-protocol, not real-runtime.
Both kimi-coding-plan and minimax-coding-plan completed:
getAIModel -> Anthropic-compatible streaming protocol -> AiSdkBackend -> ToolRuntime -> maka_computer -> list_apps -> observe -> set_value -> final response
The server fixtures verify each provider's exact URL prefix, API-key header, model ID, streaming tool_use, tool-result reinjection, and final semantic state. They also verify that a failed semantic action is reinjected as tool_result.is_error:true; Runtime records the failed result once, while the AI SDK adapter exposes it to the provider as a recoverable tool execution error.
The model observed one stale target. An independent AX setup action inserted a second target with the same semantic identity before the model action.
The real executor returned target_changed, with zero model dispatch and zero target mutation. The content fingerprint gate currently runs before strict element identity refetch. This is safe, but stricter than the recovered Codex behavior where semantic element actions may continue to a unique/missing/ ambiguous refetch decision after an AX structure change.
The finding is reported on executor hardening PR #910. The model-runner treats either strict refetch rejection or conservative target_changed as a fail-closed result and records the exact result code.
Real model runs exposed that returned Computer Use results with a top-level error were being recorded as successful tool invocations. A model could also retry the same ambiguity-rejected semantic target after a new observation because the generic loop signature included the changing observation ID.
The independent Runtime fix:
user_intervened or target_missing outcomes.The real evidence sanitizer also previously hard-coded an OpenAI producer. Reports now preserve an explicit producer and provider while retaining the same privacy projection.
The Desktop runner previously inferred fixture windows from action output, so an incorrect action window could add itself to the ownership allowlist. The launcher now discovers the exact fixture PID/window set independently before the model runs, binds actions by tool-call dispatch traces or observation lineage, and waits for trace flush before qualification.
Reports are launcher-owned temporary files with mode 0600. The sanitized projection retains provider/model, action types, result codes, aggregate state, and allowlisted trace fields. It drops coordinates, typed values, AX/UI text, credentials, URLs beyond origin, and raw provider payloads.