{"repo":"NousResearch/hermes-agent","public_id":"110631","display_label":"Retry logic for rejected structured output response_format","summary":"These issues and PRs address cases where providers reject the object-form response_format.json_schema (via 400 or 422 errors) and the detection or retry logic fails to handle those rejections correctly. The work focuses on improving fallback behavior so requests are retried without structured output when a provider rejects it by shape or status code.","subsystem":null,"counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":2,"attempt_prs":1},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":113966,"merged_at":"2026-09-17T16:11:39+00:00"},"resolution":{"state":"resolved","by":"pr-111439"},"freshness":{"state":"verified","last_verified_at":"2026-09-17T16:11:39+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":82816,"pr_number":113966,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-17T16:11:39+00:00"},{"issue_number":83390,"pr_number":113966,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-17T16:11:39+00:00"},{"issue_number":84976,"pr_number":113966,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-17T16:11:39+00:00"},{"issue_number":88830,"pr_number":113966,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-17T16:11:39+00:00"},{"issue_number":102849,"pr_number":113966,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-17T16:11:39+00:00"},{"issue_number":105191,"pr_number":113966,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-17T16:11:39+00:00"},{"issue_number":110631,"pr_number":111439,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-15T11:46:38+00:00"},{"issue_number":110631,"pr_number":113966,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-09-17T16:11:39+00:00"},{"issue_number":113064,"pr_number":113966,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-09-17T16:11:39+00:00"}],"members":[{"kind":"issue","number":110631,"title":"_is_structured_output_rejection misses gateways that reject the object-form response_format.json_schema by shape (422)","url":null,"state":"closed"},{"kind":"pr","number":110633,"title":"fix(auxiliary): retry without response_format when a provider rejects the object-form json_schema by shape","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"5cc81773b2b","number":0},{"kind":"pr","value":"#113966","number":113966}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":111439,"title":"fix(auxiliary): 422 shape rejections of response_format.json_schema now retry without structured output (#110631, salvage #110633)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/auxiliary_client.py","contributors/emails/[redacted:email]","tests/agent/test_structured_output_rejection_retry.py"]},{"kind":"pr","number":113966,"title":"fix(aux): structured-output 400s no longer kill fallback candidates or cost a doomed first request on DeepSeek (#83390, #105191, salvage #92908)","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/auxiliary_client.py","agent/auxiliary_structured_output.py","plugins/model-providers/deepseek/__init__.py","providers/base.py","tests/agent/conftest.py","tests/agent/test_auxiliary_structured_output.py","website/docs/developer-guide/model-provider-plugin.md"]}],"trust":{"default_tier":"verified","includes_suggested":false}}