Skip to main content

orion v0.8.11

September 2, 2026

Added​

  • QA writes its tests in parallel. A ticket with fifty cases had one agent writing fifty files one after another, in a single session, because the whole case list went to a single run. The derived cases are now split across several authors that write at the same time — orion config limits qa.author_agents, five by default. Cases are independent by construction, so the split is by case group rather than by file. limits.max_concurrent_children is still the hard ceiling, and a fan that cannot run falls back to the single-agent path with the same coverage: the tests are the point, and the fan is only ever an optimisation.
  • Orion runs the test suite itself, as a process. Until now it never invoked a test runner at all — it described one in the prompt and left the agent to run it, which handed the agent three decisions it should not have had: what to run, whether to run it, and how to report the result. A stage could go green because an agent ran a narrower subset than it claimed. Orion now detects the repository's own suite, runs it under a wall clock in its own process group, and reports pass or fail from the exit code. Concurrency goes to the runner's own flag (go test -p), settable with orion config limits qa.exec_procs, because the toolchain already parallelises better than a fan of agents could.
  • The live region shows the fan while it happens. A row that said only qa while five subagents wrote was the display lying by omission. It now carries authoring x5, then running the suite, so a long stage says which part of itself is slow.

Changed​

  • Test authoring fans by case group, not by Go package. Fan-out has been package-scoped since ADR 0016, for two reasons that hold for implementation and not for tests: builds are not isolated, and signatures are still moving. Test files define no APIs each other imports, and QA writes against an implementation that is already committed. Nothing compiles until every author has stopped, which is what keeps the first hazard out of reach. Implementation fan-out is unchanged.

Fixed​

  • A hung test suite is killed on Orion's own deadline. cmd.Wait returns when the output pipes close, not when the child exits, and a grandchild inherits those pipes — so a suite whose runner was killed could hold the timeout open for as long as its descendants kept running. The whole process group is now signalled the moment the deadline fires. Found by a test that expected a 300ms timeout and measured 60 seconds. Windows reaps only the direct child, which is a real gap stated in the code rather than papered over.

Download v0.8.11 · Staying current