The main controller defines the problem, splits it, verifies, and synthesizes; subtasks handle non-overlapping collection or local analysis. The completion criterion is the report and evidence coverage the user needs, not subprocess exit or successful material aggregation.
Core constraints
- Keep the user's current model and reasoning configuration, do not pass
--model, and do not override unrelated configuration. - Subprocesses use
workspace-writeonly when shell network access is genuinely needed.--network。 - First check the Skills, connectors, and MCP available in the current session, then adapt capabilities to the sources; do not assume fixed services or tool names exist.
- Do not use
--dangerously-bypass-approvals-and-sandbox。 - Write all run artifacts to an independent
.research/<name>/directory. - Only start subtasks when delegation has been authorized. Briefly describe the split and cost before execution; seek consent again when exceeding the existing budget, access scope, or permissions, and do not repeatedly pause for normal use of already-authorized research sources.
Load on demand
When preparing to run subtasks, read references/runner.md, which contains directories, manifest, commands, and recovery constraints. Both scripts depend only on the Python standard library;--help provides the source of truth for parameters.
Workflow
- Extract the goal, time range, source boundaries, and delivery format from the user request, and only ask about gaps that would change the research conclusions or execution scope. Calibrate the split with representative real samples and reuse existing materials.
- For each subtask, specify the question, inputs, allowed access scope, outputs, and evidence requirements. Require sources alongside conclusions, and state gaps for anything that cannot be confirmed. Save collected materials in the run directory to avoid repeated fetching.
- Choose concurrency and timeouts commensurate with the task cost, and validate unfamiliar or high-cost batches at small scale first. The main controller should advance non-overlapping work in parallel and not duplicate collection that subtasks are doing.
- Check
results.json, sub-reports, and key primary sources. Failures, empty outputs, missing citations, or uncovered questions remain incomplete; retry a limited number of times per the recovery constraints in the runner reference, and do not rerun tasks that have already been verified as successful. When permissions are missing or scope needs to be expanded, stop the corresponding operation and explain the blocker. - Use
aggregate.pyto organize internal materials, then synthesize intopolished_report.md(user-specified location takes priority). Eliminate duplication, verify key data, and distinguish source conflicts and evidence strength;aggregated_raw.mdis not the finished product.
Deliver the absolute path of the report, key conclusions, and remaining gaps, and explain any permission exceptions actually used. If necessary evidence is still missing, report the completed scope, specific blockers, and conditions for resumption, and do not call partial materials a complete report; do not send internal prompts or scheduling logs as the finished product.