diff options
Diffstat (limited to 'docs/superpowers')
| -rw-r--r-- | docs/superpowers/specs/2026-07-31-web-search-design.md | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/docs/superpowers/specs/2026-07-31-web-search-design.md b/docs/superpowers/specs/2026-07-31-web-search-design.md index 7e14b2d..46ebc91 100644 --- a/docs/superpowers/specs/2026-07-31-web-search-design.md +++ b/docs/superpowers/specs/2026-07-31-web-search-design.md @@ -235,6 +235,22 @@ at the end, outside the suite. - **Citation formatting in replies** — depends on 9B instruction-following; the search block already shows sources +## Implementation note: the cap shipped as 1, not 2 + +The table above chose a cap of two searches per turn. It shipped as one. + +The first tool call of a turn arrives as a well-formed `tool_calls` delta, +exactly as designed. A *second* call, issued after the model has seen the +first set of results, comes back as literal +`<tool_call><function=web_search>` text inside `reasoning_content`, with +`finish_reason: stop`, no `tool_calls`, and empty `content`. There is no +structured call for the loop to act on, so the turn ends with a blank reply. + +Reproduced 3/3 with Qwen3.5-9B through the router. A retry with the tool +withdrawn was tried and rejected: it recovered an answer only some of the +time and could surface the raw XML to the user, which is worse than the +blank it replaces. The cap is 1 until the template parses follow-up calls. + ## Notes `reasoning-budget = 1024` in the active `Qwen3.5-9B` preset is tight for tool |
