Summary
A single research topic that decomposes into N gaps has no fan-out path at either level of the discovery plugin. /discovery:research absorbs it as one run under one researcher's fixed 40-turn ceiling; /discovery:research-deep splits only on separable topics and would keep gaps that share claims together; and the researcher body's parallel-worker clause is a principle with no step in the phase procedure that fires it. The lever exists twice and neither copy engages. The cost is depth, not correctness: the run passes its gates while leaving on-point primaries unfetched.
Observed
Claude Code 2.1.270, Windows, this repo's orchestration-audit worktree, 2026-09-13.
One discovery:researcher was dispatched through /discovery:research with a brief carrying five numbered gaps (G1 to G5) across five vendor pools (Anthropic, OpenAI, Google, Microsoft, LangChain) plus a 28-row do-not-re-research corpus. The envelope carried Capability flags: nested spawning available.
|
|
| Dispatched |
01:32:43Z |
| Finished |
01:50:35Z (17.8 min) |
| Tool uses (harness trailer) |
67 |
| Subagent tokens (harness trailer) |
307,384 |
Nested Agent tool uses |
0 (grep of the run's task output at the time) |
The run passed the artifact gate and the coverage ledger, and its falsification lane found real counter-evidence, so the artifact is usable. What it gave up:
- Two on-point measurements were surfaced and recorded as Tier 3 but never fetched, for want of turns: an Osmani/ETH-Zurich context-file study and the IFScale instruction-density preprint (arXiv 2507.11538). Both bear directly on the decision the research was commissioned for.
- Three sub-questions were left "not stated" that a worker holding one gap would have chased.
What the bodies say
plugins/discovery/skills/research/SKILL.md:29 routes "a multi-topic or workflow-driven pass" to research-deep. Line 98 auto-detects a broad topic (2+ vendors, 3+ products, comparison, migration) but the only consequence is doubled query minimums. It neither splits the run nor refuses it.
plugins/discovery/skills/research-deep/SKILL.md:41 runs the multi-topic check on "separable subjects that share no claims" and spawns one researcher per topic. Gaps that share a source (here, one sub-agents page fed three of the five) fail that test, so the check keeps them in one dispatch by design.
plugins/discovery/agents/researcher.md:9 fixes maxTurns: 40. Lines 313 to 315 allow parallel workers "only for genuine throughput, meaning several independent queries of equal standing," which reads as a restriction and biases toward inline.
plugins/discovery/skills/research/SKILL.md:196 states the permission as a principle: "Use parallel workers for breadth within a phase." skills/research/context/discipline.md:180 already assumes phases "launch queries in parallel." Nothing in the numbered phase procedure turns either into a step, so in practice a worker with N gaps runs them serially against one turn budget.
discipline.md:244 forbids running phases in parallel with each other, which is right, and says nothing about parallelism within a phase.
So the ask lands in a gap: too coupled for research-deep's split, too big for one researcher's ceiling, and the broad-topic detector only raises the floor the single worker has to clear.
Candidate fixes (competing, pick one)
/discovery:research runs the multi-topic check itself and refuses a brief carrying N numbered gaps, pointing at research-deep instead of absorbing it. Cheapest; moves the problem rather than solving it if research-deep's check still keeps shared-claim gaps together.
- research-deep's multi-topic check counts numbered gaps as well as separable topics, grouping gaps that share a primary into one worker rather than keeping the whole ask whole. Keeps the split at the orchestrator, where the post-dispatch boundary and per-sub-slice gating already live.
- The researcher body gains a Phase 2 rule: when the dispatch says nesting is available, one worker per numbered gap, parent-side merge of the fetch logs; Phase 1 breadth queries run in parallel across source categories. Turns the line-196 principle into a procedure step and relaxes the line-313 restriction. Fan-out inside a topic is the shape the miss actually had, and this is the only option that addresses it directly.
Option 3 alone would have covered this case. Options 1 and 2 leave a single-topic multi-gap ask under one ceiling unless paired with 3.
Related
Summary
A single research topic that decomposes into N gaps has no fan-out path at either level of the discovery plugin.
/discovery:researchabsorbs it as one run under one researcher's fixed 40-turn ceiling;/discovery:research-deepsplits only on separable topics and would keep gaps that share claims together; and the researcher body's parallel-worker clause is a principle with no step in the phase procedure that fires it. The lever exists twice and neither copy engages. The cost is depth, not correctness: the run passes its gates while leaving on-point primaries unfetched.Observed
Claude Code 2.1.270, Windows, this repo's orchestration-audit worktree, 2026-09-13.
One
discovery:researcherwas dispatched through/discovery:researchwith a brief carrying five numbered gaps (G1 to G5) across five vendor pools (Anthropic, OpenAI, Google, Microsoft, LangChain) plus a 28-row do-not-re-research corpus. The envelope carriedCapability flags: nested spawning available.Agenttool usesThe run passed the artifact gate and the coverage ledger, and its falsification lane found real counter-evidence, so the artifact is usable. What it gave up:
What the bodies say
plugins/discovery/skills/research/SKILL.md:29routes "a multi-topic or workflow-driven pass" to research-deep. Line 98 auto-detects a broad topic (2+ vendors, 3+ products, comparison, migration) but the only consequence is doubled query minimums. It neither splits the run nor refuses it.plugins/discovery/skills/research-deep/SKILL.md:41runs the multi-topic check on "separable subjects that share no claims" and spawns one researcher per topic. Gaps that share a source (here, one sub-agents page fed three of the five) fail that test, so the check keeps them in one dispatch by design.plugins/discovery/agents/researcher.md:9fixesmaxTurns: 40. Lines 313 to 315 allow parallel workers "only for genuine throughput, meaning several independent queries of equal standing," which reads as a restriction and biases toward inline.plugins/discovery/skills/research/SKILL.md:196states the permission as a principle: "Use parallel workers for breadth within a phase."skills/research/context/discipline.md:180already assumes phases "launch queries in parallel." Nothing in the numbered phase procedure turns either into a step, so in practice a worker with N gaps runs them serially against one turn budget.discipline.md:244forbids running phases in parallel with each other, which is right, and says nothing about parallelism within a phase.So the ask lands in a gap: too coupled for research-deep's split, too big for one researcher's ceiling, and the broad-topic detector only raises the floor the single worker has to clear.
Candidate fixes (competing, pick one)
/discovery:researchruns the multi-topic check itself and refuses a brief carrying N numbered gaps, pointing at research-deep instead of absorbing it. Cheapest; moves the problem rather than solving it if research-deep's check still keeps shared-claim gaps together.Option 3 alone would have covered this case. Options 1 and 2 leave a single-topic multi-gap ask under one ceiling unless paired with 3.
Related