deep-research: Synthesize stage emits schema-valid but degenerate report (verified claims dropped)
Summary
The built-in deep-research skill's Synthesize stage (final stage of a run) can emit a
schema-valid but degenerate report: a placeholder summary that silently discards the verified
claims gathered earlier in the run. No error is raised, so the run looks successful while the
final report is a stub.
Symptom
At the end of a run, the final report is:
{
"summary": "test summary to isolate schema parsing",
"findings": ["test claim"]
}
This passes schema validation and is emitted as the result, but the content is a test/placeholder,
not the actual synthesis of the research.
Evidence
Observed on a real run:
- 26 sources retrieved and processed
- 23 claims verified and present in the intermediate logs/preview
- Final report: only the stub values above (
summary+ a single placeholderfinding) - Reproducibility: observed twice with the same pattern
The verified claims were visible in the output logs before the Synthesize stage. The substance of
the research existed; the final report did not reflect it.
Probable cause
The Synthesize stage generates a script at runtime that composes the report. That script includes a
fallback branch for report == null, but no branch for the "schema-valid yet stub-content" case
(e.g. findings being a single placeholder element). The synthesis agent, for some reason
(internal test path / parsing fallback), produces the test output at runtime; the script accepts it
as valid and emits it. This is not a hardcoded stub in the skill source — it emerges at runtime
from the script-generating agent.
Proposed fix
In the Synthesize stage, add a post-generation guard that detects degenerate-but-schema-valid
reports. Detection criteria (any of):
findingsis empty, orfindingscontains exactly one element matching a known placeholder (e.g."test claim",
"placeholder"), or
summarymatches known test values (e.g."test summary…").
If detected, apply the same behavior as the !report branch: save the raw verified claims from the
run logs instead of emitting the stub report.
Environment
- Claude Code, built-in
deep-researchskill. - Reported by: emmanuel-conflux (project:
ux-process).
---
*Mitigation in our project, pending an upstream fix: after each deep-research, verify the
synthesis; if findings is empty or contains a placeholder, recompose the report from the verified
claims in the run logs instead of discarding the research.*
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗