Sub-issue of #55 (DSP-1). Found in smoke test of PR #61.
Observation
Smoke test had this synthesizer tail:
[07:59:08] synthesizer ⏵ conv=ee9b169f
[07:59:23] synthesizer ▸ Search for '.' in '*.rs' files at sdk/typescript/src
[07:59:29] synthesizer ▸ ⇉ 2 parallel tool calls (2× read)
[07:59:29] synthesizer ▸ Read
[07:59:29] synthesizer ▸ Read
[07:59:41] synthesizer ✓
The synthesizer prompt explicitly says "Do not invent facts not present in worker outputs" — but the model interpreted that as "go re-verify the worker outputs by reading the files myself", running a Search and 2× Read.
Why this matters
The whole point of swarm parallelism is to amortize work across N agents. If the synthesizer re-reads the same files the workers just read, we pay 2× the cost for the same information and undermine the swarm pattern. It also masks worker quality issues — if a worker hallucinates a file, the synthesizer silently corrects it instead of surfacing the hallucination.
Fix direction
Two paths, pick one:
A. Trust mode (recommended for thin slice): Prompt the synthesizer to ONLY use the worker outputs. Forbid tool use explicitly: "You have read-only access to the worker outputs below. Do not call any tools. If worker outputs are insufficient, return the literal string INSUFFICIENT_DATA and explain what's missing."
B. Verification mode (future): Allow synthesizer to verify but track verification tool calls separately so we can measure swarm leverage.
For this issue, ship A. B can be a flag later.
Acceptance criteria
Related
- Future PR will scope the synthesizer's tool catalog (devswarm #374) — that's the proper enforcement. This issue is the prompt-only stand-in.
Sub-issue of #55 (DSP-1). Found in smoke test of PR #61.
Observation
Smoke test had this synthesizer tail:
The synthesizer prompt explicitly says "Do not invent facts not present in worker outputs" — but the model interpreted that as "go re-verify the worker outputs by reading the files myself", running a
Searchand 2×Read.Why this matters
The whole point of swarm parallelism is to amortize work across N agents. If the synthesizer re-reads the same files the workers just read, we pay 2× the cost for the same information and undermine the swarm pattern. It also masks worker quality issues — if a worker hallucinates a file, the synthesizer silently corrects it instead of surfacing the hallucination.
Fix direction
Two paths, pick one:
A. Trust mode (recommended for thin slice): Prompt the synthesizer to ONLY use the worker outputs. Forbid tool use explicitly: "You have read-only access to the worker outputs below. Do not call any tools. If worker outputs are insufficient, return the literal string
INSUFFICIENT_DATAand explain what's missing."B. Verification mode (future): Allow synthesizer to verify but track verification tool calls separately so we can measure swarm leverage.
For this issue, ship A. B can be a flag later.
Acceptance criteria
INSUFFICIENT_DATAwhen the workers genuinely didn't gather enough).Related