0.24

Every published okengine release, newest first.

all series · 0.23

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 merges dev into main with a merge commit, so that history and its Closes #N messages land on main. A merge into dev moves the linked issues to Merged and leaves them open. They close, and the board moves them to Done, when the release reaches main.
  • Published budgets: ./ai +644 B (decider, presets, and decider/otherwise checks), ./compiler +1,660 B (decider extraction and checks, build time only), ./test and ./testing +1,651 B (t.ai.decide and the drivers.decide mock, tests only). Kernel edge stays 14,835 B and client runtime stays 5,218 B.

🐛 Fixed

  • pr-meta treats 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-meta are one CI workflow. There is no manifest-diff job: this repository has no app manifest. Runners are pinned to ubuntu-24.04. npm and JSR publish on the v* release workflow, not on a pull request. See CONTRIBUTING.md.

💥 Breaking Changes

Runtime

  • A decision names a decider. model, driverId, review, and onUncertain are gone. otherwise is a Gate or "abstain". oke eval --certify is removed. A version 1 oke-decisions.lock.json fails until you recertify with oke 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" }) and ai.decision("triage", { decider: jev, otherwise: ops }).