{"repo":"NousResearch/hermes-agent","public_id":"61768","display_label":"Cron job locking and cross-profile store isolation fixes","summary":"These issues and PRs address race conditions in cron job handling, specifically missing lock acquisition during profile retargeting and cross-profile contamination of jobs.json stores. The work involves both locking fixes and isolating cron store paths by profile context.","subsystem":null,"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":61813},"resolution":{"state":"resolved","by":"pr-61813"},"freshness":{"state":"verified","last_verified_at":"2026-07-10T06:13:11+00:00","is_stale":false},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":25295,"pr_number":61813,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false},{"issue_number":61768,"pr_number":61813,"tier":"verified","basis":"closing_ref","confidence":0.95,"recoverable_from_timeline":true}],"members":[{"kind":"issue","number":61768,"title":"Desktop serve backend: cron ticker thread races _call_cron_for_profile global retarget → destructive cross-profile jobs.json overwrite (full-store clone)","url":null,"state":"closed"},{"kind":"pr","number":61813,"title":"fix(cron): isolate profile store paths by context","url":null,"state":"merged","close_reason":{"category":"merged","implication":"superseded"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cron/jobs.py","cron/scheduler.py","hermes_cli/web_server.py","tests/hermes_cli/test_web_server_cron_profiles.py"]},{"kind":"pr","number":61818,"title":"fix(cron): isolate profile cron stores to stop cross-profile jobs.json overwrite","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#61813","number":61813},{"kind":"pr","value":"#61768","number":61768}],"category":"duplicate_of","implication":"duplicate"},"merged":false},{"kind":"pr","number":61906,"title":"fix(web_server): acquire cron.jobs _jobs_lock during _call_cron_for_profile retarget (#61768)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#61909","number":61909},{"kind":"pr","value":"#61906","number":61906},{"kind":"pr","value":"#61909","number":61909},{"kind":"pr","value":"#61909","number":61909}],"category":"superseded_by_pr","implication":"superseded"},"merged":false,"is_fix_pr":true,"fix_tier":"suggested","fix_detail_withheld":true},{"kind":"pr","number":61909,"title":"fix(web_server): acquire cron.jobs _jobs_lock during _call_cron_for_profile retarget (engine-on pilot, mirrors #61906) (#61768)","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#61813","number":61813},{"kind":"pr","value":"#61768","number":61768},{"kind":"pr","value":"#61473","number":61473},{"kind":"pr","value":"#61493","number":61493},{"kind":"pr","value":"#61813","number":61813}],"category":"superseded_by_pr","implication":"superseded"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}