v0.24.0
♻️ Changed
- CI splits the test suite into six parallel jobs: console, elements, kernel, cli, drivers, and core. One shard failing does not cancel the others.
- Feature pull requests squash into
dev. The release mergesdevintomainwith a merge commit, so that history and itsCloses #Nmessages land onmain. A merge intodevmoves the linked issues to Merged and leaves them open. They close, and the board moves them to Done, when the release reachesmain. - Published budgets:
./ai+644 B (decider, presets, and decider/otherwise checks),./compiler+1,660 B (decider extraction and checks, build time only),./testand./testing+1,651 B (t.ai.decideand thedrivers.decidemock, tests only). Kernel edge stays 14,835 B and client runtime stays 5,218 B.
🐛 Fixed
pr-metatreats an issue with sub-issues as an Epic, lets Dependabot skip the issue and milestone rules, and reads labels after it applies them. The GitHub Release waits until npm and JSR publish. Milestone 0.25 is the OKModel release.
✨ Added
- Contributor workflow lives in the repository: issue forms, labels, the okengine board, pull-request checks, and a GitHub Release cut from the changelog. Code checks and
pr-metaare one CI workflow. There is no manifest-diff job: this repository has no app manifest. Runners are pinned toubuntu-24.04. npm and JSR publish on thev*release workflow, not on a pull request. See CONTRIBUTING.md.
💥 Breaking Changes
Runtime
- A decision names a decider.
model,driverId,review, andonUncertainare gone.otherwiseis a Gate or"abstain".oke eval --certifyis removed. A version 1oke-decisions.lock.jsonfails until you recertify withoke decide certify. Before:ai.decision("triage", { review: ops, model: "typesafe/jev-1.13" }). After:ai.decider("jev", { provider: "openrouter", model: "typesafe/jev-1.13-20260917" })andai.decision("triage", { decider: jev, otherwise: ops }).