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_childrenis 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 withorion 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
qawhile five subagents wrote was the display lying by omission. It now carriesauthoring x5, thenrunning 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.Waitreturns 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.