Skip to content

v0.25.0 — measured defaults, and the element the model read

Choose a tag to compare

@hamc hamc released this 10 Oct 11:59
· 23 commits to main since this release
752419f

This release changes which model a config with no model uses, makes an action land on the element the model actually read, and bounds every model call. Defaults and execution change, which is why this is a minor.

Default models, chosen by measurement

With no llm.model set, openai now uses gpt-6-luna (it was gpt-4o-mini) and ollama uses gpt-oss:20b (it was qwen2.5). On the reliability benchmark, the old defaults failed almost every test on the correct demo app: 35 of 40 for gpt-4o-mini, 40 of 40 for qwen2.5. gpt-6-luna failed none and gpt-oss-20b failed 2. The table for nine models is in Choosing a model (#154).

Upgrade note: on Ollama, run ollama pull gpt-oss:20b (about 14 GB) before running a config with no model. To keep the old default, set model: qwen2.5.

An action lands on the element the model read

The runner used to search the page for the model's description of an element and take the first match. A target with a role and no name clicked the first button on the page (#132). Two controls sharing a name resolved to the first one (#60). When such a click succeeded, the log could not show it.

Every snapshot now gives each element a ref, and an action names that ref. A ref resolves to that element or to nothing. The role and name the model gives are checked against it, and the log names the element actually clicked. On the two reference models, 5 samples each, verdicts did not change and runs used about 10% more tokens.

Every model call is bounded

  • Output: every call asks for at most 4096 output tokens. Without a limit, open-weight models ran whitespace up to 131k tokens, and an account with credit left was refused for the reservation (#126).
  • Time: each call has a timeout, llm.timeout_s (300 s, or 900 s for Ollama), and the run's deadline aborts a call in flight (#133).
  • Spend: the tokens of an unusable answer are counted (#136).

Also

  • llm.extra_body sends a gateway its own options. The docs include the OpenRouter recipe for routing open-weight models around providers that ignore the JSON schema (#150).
  • New Action name. The Action is now named blastproof e2e AI testing, so it can be listed on the GitHub Marketplace. uses: hamc/blastproof@v0.25.0 and its inputs are unchanged.
  • docs/ci.md installs the right CLI. The example now installs the CLI it documents; since 0.12.0 it had installed 0.11.0.

Full entry in the CHANGELOG.