Skip to content

feat(cua): make reasoning effort declarable, and record what actually ran (#497) - #498

Merged
danielgwilson merged 1 commit into
mainfrom
feat/cu-effort
Aug 20, 2026
Merged

feat(cua): make reasoning effort declarable, and record what actually ran (#497)#498
danielgwilson merged 1 commit into
mainfrom
feat/cu-effort

Conversation

@danielgwilson

Copy link
Copy Markdown
Owner

feat(cua): make reasoning effort declarable, and record what actually ran (#497)

Effort was reachable in the provider and unreachable from a lab. Nothing in
cua-actor-lab ever passed it and the schema had no field for it, so every
computer-use run humanish has ever done was the provider default — not by
decision but by omission. That is the kind of silent constant that turns a
finding about a product into a finding about a default nobody chose: a
participant who abandons a flow at medium and finishes it at high did not find
a usability problem, the harness did.

  • actors[].reasoningEffort with a per-lane override, the same shape persona
    and stopWhen already have. Two lanes at different efforts is a control that
    runs in ONE study, under one set of conditions.
  • The vocabulary is the documented union (none..max) and it validates, because
    OpenAI states support is model-dependent. An unsupported level fails on the
    first turn with the provider's own message rather than being downgraded —
    a silent downgrade would make the trace claim an effort the run did not use.
  • ActorTrace.modelSettings (humanish.model-settings.v1): the effort the
    request ACTUALLY carried, including the default when a lab declared none.
    A trace that cannot say what effort produced it cannot be compared with one
    that can. Absent when a provider declares no settings; verify tolerates it.
  • The lab screen and the fan-out plan line both show it, and the plan line is
    what you read before spending money. "per-lane" when a roster disagrees,
    rather than picking one lane's answer for all of them.
  • labs/effort-contrast-demo.yaml: the sibling of persona-contrast-demo. One
    persona, one mission, two efforts. Both lanes dry-run with identical prompt
    digests, so effort is the only declared difference.

Keeping gpt-5.6-sol as the default is unchanged and deliberate: Artificial
Analysis, who ran OpenAI's pre-release eval, reports Luna and Sol always on the
Pareto frontier ahead of Terra, and OpenAI reports Sol at 62.6% on OSWorld 2.0.

Closes #497.

… ran (#497)

Effort was reachable in the provider and unreachable from a lab. Nothing in
cua-actor-lab ever passed it and the schema had no field for it, so every
computer-use run humanish has ever done was the provider default — not by
decision but by omission. That is the kind of silent constant that turns a
finding about a product into a finding about a default nobody chose: a
participant who abandons a flow at medium and finishes it at high did not find
a usability problem, the harness did.

  - `actors[].reasoningEffort` with a per-lane override, the same shape persona
    and stopWhen already have. Two lanes at different efforts is a control that
    runs in ONE study, under one set of conditions.
  - The vocabulary is the documented union (none..max) and it validates, because
    OpenAI states support is model-dependent. An unsupported level fails on the
    first turn with the provider's own message rather than being downgraded —
    a silent downgrade would make the trace claim an effort the run did not use.
  - `ActorTrace.modelSettings` (humanish.model-settings.v1): the effort the
    request ACTUALLY carried, including the default when a lab declared none.
    A trace that cannot say what effort produced it cannot be compared with one
    that can. Absent when a provider declares no settings; verify tolerates it.
  - The lab screen and the fan-out plan line both show it, and the plan line is
    what you read before spending money. "per-lane" when a roster disagrees,
    rather than picking one lane's answer for all of them.
  - labs/effort-contrast-demo.yaml: the sibling of persona-contrast-demo. One
    persona, one mission, two efforts. Both lanes dry-run with identical prompt
    digests, so effort is the only declared difference.

Keeping gpt-5.6-sol as the default is unchanged and deliberate: Artificial
Analysis, who ran OpenAI's pre-release eval, reports Luna and Sol always on the
Pareto frontier ahead of Terra, and OpenAI reports Sol at 62.6% on OSWorld 2.0.
@vercel

vercel Bot commented Aug 20, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
humanish Ignored Ignored Aug 20, 2026 8:34pm

Request Review

@danielgwilson
danielgwilson merged commit d58deb4 into main Aug 20, 2026
8 checks passed
@danielgwilson
danielgwilson deleted the feat/cu-effort branch August 20, 2026 20:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Computer-use: keep Sol (Terra loses on the frontier), but reasoningEffort is pinned at medium and unreachable

1 participant