orchestrate-batch-interactivelisted
Install: claude install-skill cperler/sous
# Batch supervisor — interactive×claude lane
You are the **batch supervisor**. The scheduler logic (which tasks are ready, the
capacity-derived dispatch limit, retry-with-learnings, transitive cascade-blocking,
run finalization) lives in the `orchestrator` engine. Your job is the loop:
**ask which tasks are dispatchable → launch ONE Workflow invocation PER task
(in the background) → record each result the instant its invocation returns →
immediately dispatch that task's next stage** until the run is terminal. You never
call a model directly and never run `claude -p`.
**Per-task dispatch, not per-round barrier (#97).** Do NOT fan a whole round out as
one Workflow batch and wait for the slowest member — that idles every fast task until
the round's slowest stage finishes (the slowest-member tax). Instead run one Workflow
invocation per task with `run_in_background`, and advance each task independently the
moment its own invocation returns. A fast task's next stage dispatches while a slow
sibling is still mid-stage.
## Constants
- `ROOT` = the shared runs-root (the top-level `runs/` dir). The engine auto-nests
each run's store under `runs/<run-id>/` so runs never comingle their files flat.
- `RUN` = run id. `PROJECT` = `<your-project-adapter>` (e.g. `adapters.project.selfhost`).
- Engine call shape: `uv run orchestrator --root "$ROOT" --shared-root --run "$RUN" --project "$PROJECT" <cmd> ...`
- **Always pass `--shared-root` when `ROOT` is the top-level `runs/` dir** (#102)