{"repo":"NousResearch/hermes-agent","public_id":"52160","display_label":"Fixes for conversation history starting with assistant turn","summary":"Multiple fixes addressing cases where context compression or compaction leaves conversation histories beginning with an assistant or model message, causing API 400 errors across Anthropic and Gemini adapters. Patches include guarding, stripping, or prepending user turns to restore valid message ordering.","subsystem":"agent","counts":{"members":4,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":69340,"merged_at":"2026-07-22T13:59:34+00:00"},"resolution":{"state":"resolved","by":"pr-69340"},"freshness":{"state":"verified","last_verified_at":"2026-07-22T13:59:34+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":52160,"pr_number":69340,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true,"pr_merged_at":"2026-07-22T13:59:34+00:00"}],"members":[{"kind":"issue","number":52160,"title":"bug(adapter): HTTP 400 after double context compression — first message is assistant, not user","url":null,"state":"closed"},{"kind":"pr","number":52167,"title":"fix(compressor): pin summary role to user when only system prompt is protected (#52160)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"8f4d195d5","number":0},{"kind":"pr","value":"#56197","number":56197}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":52276,"title":"fix(anthropic): prepend user turn when compaction leaves a leading assistant message","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"b6a2b701c","number":0},{"kind":"pr","value":"#69340","number":69340}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":69340,"title":"fix(anthropic): guard leading-assistant transcripts after double compaction","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/anthropic_adapter.py","tests/agent/test_anthropic_adapter.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}