Repository navigation
v0.4.0 — The orchestrator seat opens up
The orchestrator seat opens up, and codex lanes commit their own work.
- 🎯 The orchestrator seat is no longer Claude Code's alone. Any agent that can run the scripts and judge their output may hold it; the host conveniences — dashboard pane, chat widget, chips, ACP steering — are optional surfaces, not requirements. Verified with opencode 1.18 and pi 0.83 each driving
plan draft → lintend to end, unmodified (ADR-033). - 🛡️ Codex lanes self-commit, reversing ADR-006's "never". The sandbox gets four scoped git grants — the lane's worktree metadata, the object store, and the lane branch's ref and reflog.
.git/config(core.hooksPathis code execution),hooks/, andrefs/heads/mainstay outside the cage, proven with an adversarial config-write probe (ADR-034). - 🔌 Gemini and OpenRouter lanes, verified end to end: the Pi wildcard seat now has tested routes to
google(Gemini 3.6 and 3.8 Flash) andopenrouter(any listed model), each running a full lane — self-commit, collect gate, main clean. Pi accepts a model id newer than its own catalogue, so a launch-day model needs no fleetflow change. - 🧭
ff doctor --for MODEL[,MODEL…]: preflight scoped to the models a run actually spawns. A missing harness for a requested model escalates advisory→fail, andclaudeis required only for claude-family, glm, and chip lanes — so a claude-less fleet can be blessed. - 🔍 The preflight stopped lying: rounds of cross-model review closed false greens in
ff-doctor— a logged-out codex that matched "Logged in", a glm child whose nonzero exit was masked by a pipeline, requested seats blessed with no verifiable key. What cannot be verified now fails closed. - 🐛 Codex lanes run again on codex-cli 0.153, which rejects the
--approve-for-meplus-s workspace-writepair fleetflow had passed since 0.144 — every codex lane died at spawn with rc=2. The launch line now passes--approve-for-mealone, which implies the same sandbox.
Upgrading
No breaking changes. If your codex lanes have been dying at spawn with rc=2, this release is the fix — re-spawn them with --force, since the journal caches the failed result under the same key.
525 hermetic assertions, ADR lint inside the gate.
Full changelog: v0.3.0...v0.4.0