cyberine
UsageRun recipes

Auto-routed implementer fleet on the foreground run

A bare cyberine run "<edit task>" (no --fleet, no --cheap, no CYBERINEBUILDFLEET) used to run only the read-only compare pool and exit 0 with state: done and no diff. The foreground path now...

A bare cyberine run "<edit task>" (no --fleet, no --cheap, no CYBERINE_BUILD_FLEET) used to run only the read-only compare pool and exit 0 with state: done and no diff. The foreground path now routes exactly like --bg does: a fleet.json routing map for the task kind wins, otherwise the heuristic router picks from the workers usable on this machine, and the pick is applied in-process before dispatch.

cyberine run "add a modulo(a, b) function to math.ts"
# stderr:
#   [route] tier=standard kind=code-small fleet=muse,claude recommendedMode=swarm
#   Auto-routed (code-small · fleet: muse,claude · CYBERINE_BUILD_FLEET=muse,claude CYBERINE_MODE=swarm)
#   Run with these settings? [Y/n]        <- only on an interactive TTY without -p / --mode
#   NOTE: CYBERINE_BUILD_FLEET enabled (muse, claude): ...
  • qa-shaped tasks are unchanged: they still use the read-only compare pool.
  • A code-* task that routes to NO implementer exits 2 and names the fix (--fleet <ids>, CYBERINE_BUILD_FLEET, cyberine setup --status) instead of exiting 0 having changed nothing.
  • --fleet, --cheap, an inherited CYBERINE_BUILD_FLEET, or CYBERINE_ROUTE=off all suppress routing — user intent always wins.
  • CYBERINE_MODE follows the routed recommendedMode only when neither --mode nor the env set it.
  • A fleet.json route that names a worker which is retired, cooling down, or missing its credential is dropped with a [route] fleet.json routing.<kind> names ... not usable right now line; when nothing usable remains the heuristic router takes over instead of dispatching a dead worker.
  • The process exits as soon as the verdict lines are printed: the LSP client a loop worker opens for diagnostics is shut down at the end of the run (shutdownLspRegistry), which is what used to keep a compare-pool-only run alive indefinitely after state: done.

Known limitations: the per-worker model variant overrides the router picks (DEEPSEEK_MODEL, OPENROUTER_MODEL, ...) are read by config at import time, so on the foreground path they are exported but not honoured — --bg honours them because the child starts fresh. CLI implementers on this single-step path still edit the LIVE working tree (see SINGLE-STEP-ISOLATION on the task board); the engine isolate: true path is the one that gives each worker a worktree.