{"repo":"NousResearch/hermes-agent","public_id":"24651","display_label":"Fix non-atomic OpenRouter prewarm concurrency guard","summary":"These items identify and address a race condition where the non-atomic check-then-set on a prewarm Event flag could allow duplicate prewarm threads to spawn. The fix replaces the Event with a Lock to make the guard atomic.","subsystem":"agent","counts":{"members":5,"open_issues":1,"open_issues_distinct":1,"open_prs":1,"closed_issues":0,"merged_prs":0,"attempt_prs":4},"landed_fix":null,"resolution":{"state":"unresolved","by":null},"freshness":{"state":"never_verified","last_verified_at":null,"is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[],"members":[{"kind":"issue","number":24651,"title":"concurrency: _openrouter_prewarm_done.is_set()+.set() non-atomic — can spawn duplicate prewarm threads","url":null,"state":"open"},{"kind":"pr","number":24666,"title":"fix(agent): make OpenRouter prewarm guard atomic (#24651)","url":null,"state":"closed","close_reason":{"category":"silent_close","implication":"active"},"merged":false},{"kind":"pr","number":24668,"title":"fix(run_agent): replace non-atomic Event prewarm guard with Lock gate","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#24666","number":24666}],"category":"uncategorized","implication":"needs_llm"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":61189,"title":"Serialize OpenRouter metadata prewarm claim","url":null,"state":"closed","close_reason":{"category":"uncategorized","implication":"needs_llm"},"merged":false},{"kind":"pr","number":109924,"title":"fix(agent): make the OpenRouter prewarm claim atomic so concurrent inits spawn one thread","url":null,"state":"open","close_reason":{"category":"silent_close","implication":"active"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}