Fan out N parallel workers, each in its own Paseo worktree. They may cover separate slices, race the same brief, or mix both. The parent waits, aggregates, and returns one report.
Start
Open a todolist with one entry per phase before launching anything.
- Frame
- Fan out
- Aggregate
- Report
Phase A: Frame
- State the done predicate and the artifact or report the swarm must return.
- Choose the shape. Partition into slices, race N workers on identical briefs, or mix both. For a race or mixed shape, declare
first pass,rank all, orbest-ofbefore spawning. - Set N from the user or derive it from the shape. N is total workers, not a concurrency limit.
- Pick the worker model from the pstack Agent profiles (read them with
list_profiles):pstack-worker, defaultcodex/gpt-6.1-solxhigh. Copy the profile'sprovider/model,thinkingOptionId,modeId, andfeatureValuesintocreate_agent. Ifcreate_agentrejects a model, use the default and say so. If it rejects the default, use the closest valid model of the same provider fromlist_models. For a model race, name each arm's model up front. - Give each worker its own writable output when it writes. When workers verify or measure commits, each brief names the exact SHAs. A measurement brief also names the method (sample count, what one sample is, order). The worker records both in its result.
Phase B: Fan out
Spawn all N workers in one message with create_agent, each in its own Paseo worktree (create_workspace with isolation worktree, then pass its workspaceId), notifyOnFinish: true, and the step 4 model. Run a worker in the current workspace only when it needs access to something outside a fresh worktree.
When a worker must start from a non-default pushed branch, pass it as baseBranch to create_workspace.
Every brief stands alone. Include the goal, scope, exact slice or race arm, how to verify, and what to report. Reports use PASS, ISSUES, or BLOCKED with evidence. A worker that can prove a defect reports ISSUES and lists every issue it can prove, not only the first.
If a worker drops out, proceed with N-1 and note it.
Phase C: Aggregate
Read the terminal results. Drop a result that does not record the SHAs and method its brief names, and rerun that worker once. After a second miss, record a gap. A gap does not count as a pass. For coverage, every required slice needs a result. For a race, apply the selection rule declared up front. Use first pass, rank all, or best-of. Do not paste raw worker dumps.
Keep a compact result table, one-line evidenced issues, and explicit gaps or dropouts.
Phase D: Report
Return one consolidated in-chat report with the table, issue one-liners, gaps or dropouts, and the race rule when used.