{"repo":"NousResearch/hermes-agent","public_id":"12684","display_label":"File locking for concurrent trajectory JSONL writes","summary":"A bug report and multiple fix attempts addressing the lack of file locking in save_trajectory(), which can cause JSONL output corruption when multiple processes write concurrently. Members propose using fcntl.flock or similar mechanisms as a remedy.","subsystem":"agent","counts":{"members":5,"open_issues":0,"open_issues_distinct":0,"open_prs":0,"closed_issues":1,"merged_prs":1,"attempt_prs":3},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":109192},"resolution":{"state":"resolved","by":"pr-109192"},"freshness":{"state":"verified","last_verified_at":"2026-09-12T15:25:15+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.4},"fix_edges":[{"issue_number":12684,"pr_number":109192,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":12684,"title":"[Bug]: save_trajectory() has no file locking — concurrent processes corrupt JSONL output","url":null,"state":"closed"},{"kind":"pr","number":12685,"title":"fix(agent): add fcntl.flock to save_trajectory to prevent JSONL corru…","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"330004e597","number":0},{"kind":"pr","value":"#109192","number":109192}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":12713,"title":"fix(trajectory): add file locking to prevent JSONL corruption under concurrent writes","url":null,"state":"closed","close_reason":{"category":"stale_abandoned","implication":"active"},"merged":false},{"kind":"pr","number":13218,"title":"fix(trajectory): add file locking to save_trajectory() to prevent concurrent JSONL corruption","url":null,"state":"closed","close_reason":{"refs":[{"kind":"commit","value":"330004e597","number":0},{"kind":"pr","value":"#109192","number":109192}],"category":"implemented_elsewhere","implication":"superseded"},"merged":false},{"kind":"pr","number":109192,"title":"fix(agent): concurrent save_trajectory() appends no longer corrupt the JSONL (#12684, salvage #12685)","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["agent/trajectory.py","contributors/emails/[redacted:email]","tests/agent/test_trajectory_file_locking.py"]}],"trust":{"default_tier":"verified","includes_suggested":false}}