fix(proxy): carry reasoning content through the response-repair path #700
No reviewers
Labels
No labels
move-to-repo
coilyco-bridge-deploy
move-to-repo
coilyco-flight-deck-agent-compose
move-to-repo
coilyco-gaming-eco-app
move-to-repo
coilysiren-inbox
move-to-repo
unknown
🔒⚠️📦⚠️🔒 SANDBOXED 🔒⚠️📦⚠️🔒
autonomy
async-consult
autonomy
epic
autonomy
headless
autonomy
live-collab
c#
priority
P0
priority
P1
priority
P2
priority
P3
priority
P4
role/ai
role/creator
role/design
role/director
role/engineer
role/exec
role/human
role/ops
role/qa
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
coilyco-gaming/sirens-echo!700
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/repair-path-reasoning-content"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The tool-call path copies
ReasoningContentonto the assistant message it builds. The repair path builds its own and had no field for it at all, so a repair round against a thinking-mode model could only ever send the zero value, and DeepSeek refuses the next request as malformed.Quail located this on #678 as a mechanism independent of the trace that issue was filed from, and landed a characterization test asserting the drop as it shipped. That test is inverted here rather than deleted, which is what it asked for.
Verification
ward exec gatePASS on all six steps.Mutation: forcing the field to the empty string fails
TestTheRepairPathKeepsReasoningContentin a run where every other package still reportsok, so the failure is the assertion rather than a build error. That distinction has bitten this repo before (#653).Scope
This does not close #678. The other half is whether DeepSeek accepts
"reasoning_content": ""— underomitemptyan empty string and an absent key are the same bytes, so a model that genuinely returns no reasoning still produces a request the API refuses. Settling it needs one live request toevaluation/deepseek-v4-flash, which is an Ops action. #678 stays open on it and #699 carries the half that lands here.closes #699
reasoning_contentis preserved on one assistant message and dropped on the next, so DeepSeek rejects the eval turn outright #678