An agent runs your test command, it passes, the stop gate opens. Meanwhile the agent edited a file while that command was running. The gate approved code it never checked. That was the bug behind the week's most important fix, and it set the tone for the rest of the release train.
This week: 97 commits, 18 CLI releases (20.1.0 to 20.10.3), and 3 web releases (11.0.2 to 11.2.1).
What's new
-
Fresh stop gates: a successful stop gate is now rejected if code changed during the command. The gate records the checked commit and tree, and
oma goal status --check-freshexposes the result. - Diagnostic feedback after native edits: the hooks compare pre-edit and post-edit Serena diagnostics through existing project daemons, then report what the edit changed. Checks and output are bounded, provider defaults and opt-outs are preserved, and supported native edit hooks are registered.
- Native tool traces and spawn usage: Claude and Codex observations bind to fresh native sessions, bounded tool evidence is preserved, and spawn cost estimates are reconciled with native usage.
- Harness² external benchmark track: external runs stay out of the generated main scoreboard. The Linux-guarded runner has plan, dry-run, spend, and network guards, and records OMA and Harness² commits, models, k/mode/seed, and network policy.
-
Serena 2.0 support: the exact 1.7.0 allowlist is now
>=1.7.0 <3.0.0, after verifying the patched upstream APIs are unchanged in 2.0.0. -
Artifact layout migration: install and update now migrate legacy artifact paths, with
oma docs migratefor preview and manual runs. Reference updates are conflict-safe. - DSH first-run setup: the DSH integration installs the OMA CLI as a plugin dependency and prepares project-local skills and config before the first model turn.
-
Frontend stack manifests:
oma verify frontendruns the syntax and test commands from thestack.yamlwritten by/stack-set, and keeps the built-in checks otherwise.
What's fixed
- Slash-command workflows now persist.
/ultrawork,/orchestrate,/workand/ralphnever wrote the persistent-mode state file, so the Stop hook had nothing to enforce andoma goal setfailed. Namespaced forms such as/oma:ultraworkare covered too. - Read-only dispatch fails closed. Launch requires a built-in restriction or an explicit
read_only_flag, and empty or conflicting flags are rejected across native, external, spawn, and free-provider paths. -
oma uninstallin CI needs--yesorOMA_YES=1. CI is not consent for a destructive removal. Dry runs stay allowed. - Installs no longer ship maintainer defaults. The shared config template stops pinning timezone
Asia/Seouland an Aside browser selection, and the co-author guard no longer overridescore.hooksPathover existing git hooks. - CUE-only projects stay on one config file. Install,
oma memory keys,oma model proposeandoma updatenow write to the file that actually takes effect, instead of creating a second shared file whose values lose. - Abandoned empty Serena registry locks are reclaimed after the existing 60-second grace period.
-
recap --graphandstate trajectory --openwait for the server to listen instead of a fixed 500 ms, and a failed bind prints a short error with exit code 1. - Qwen Code 0.25 alignment: HUD ANSI colors survive, the duplicate context indicator is hidden, and git co-author attribution defaults off so Qwen's fixed trailer no longer trips the commit-msg allowlist.
What's better
- Four oversized modules were split into focused submodules with the public API unchanged: Serena binary and language helpers, the daemon registry, link vendor settings, and the Claude/Codex trajectory parsers (now shared under
cli/io/native-transcript/). - The artifact layout migration moved into
platform, which fixes a cross-slice boundary violation betweencommands/docsand migration 032. - Husky is gone.
hk.pklnow handles pre-commit, commit-msg, and pre-push checks, wired throughmiseworkspace tasks, and every CI workflow usesjdx/mise-action@v5. -
docs:checkfails on generated docs drift, and CI runs it on every push. - The bootstrap scripts install
omaglobally (falling back tobunxif that fails), because hooks, workflows, and self-update all call a globaloma. - Docs got a prose pass: 481 English and translated pages simplified, and the 13 READMEs now share a 6+1 architecture figure.
Installation
# macOS / Linux
curl -fsSL https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.sh | bash
# Windows (PowerShell)
irm https://raw.githubusercontent.com/first-fluke/oh-my-agent/main/cli/install.ps1 | iex
Links
oh-my-agent is built for teams who orchestrate more than they prompt. Next up: extending the freshness check beyond stop gates so every verification claim is bound to the exact tree it ran against.
Top comments (0)