{"repo":"NousResearch/hermes-agent","public_id":"6797","display_label":"Mostly cron-related fixes and bug report; one unrelated model metadata PR","summary":"Three members concern cron behavior: a PR about raising exceptions to avoid silent data loss, a bug report about a session being unable to change Cron in Docker, and a PR salvaging earlier cron fix PRs. The fourth, about dividing llama.cpp n_ctx by total_slots in model_metadata, appears to be a separate topic.","subsystem":"agent","counts":{"members":4,"open_issues":1,"open_issues_distinct":1,"open_prs":1,"closed_issues":0,"merged_prs":1,"attempt_prs":2},"landed_fix":{"status":"merged_to_main","basis":"structural","pr":7453,"merged_at":"2026-04-10T23:51:35+00:00"},"resolution":{"state":"unresolved","by":null},"freshness":{"state":"stale","last_verified_at":"2026-04-10T23:51:35+00:00","is_stale":true},"grouping":{"backbone":"STRUCTURAL_SPANNING","link_density":0.5},"fix_edges":[{"issue_number":6797,"pr_number":7453,"tier":"verified","basis":"superseded_ref","confidence":0.9,"recoverable_from_timeline":false,"pr_merged_at":"2026-04-10T23:51:35+00:00"}],"members":[{"kind":"issue","number":6797,"title":"[Bug]: At some point a session is unable to make any changes to Cron (Hermes in Docker)","url":null,"state":"open"},{"kind":"pr","number":6810,"title":"fix(cron): prevent silent data loss by raising exceptions on unrecove…","url":null,"state":"closed","close_reason":{"refs":[{"kind":"pr","value":"#7453","number":7453}],"category":"merged_via","implication":"superseded"},"merged":false},{"kind":"pr","number":7453,"title":"fix(cron): salvage cron fix PRs #6917 #6810","url":null,"state":"merged","close_reason":{"category":"merged"},"merged":true,"is_fix_pr":true,"fix_tier":"verified","files_changed":["cron/jobs.py","cron/scheduler.py"],"fix_hunks":[{"file":"cron/jobs.py","hunks":["@@ -31,7 +31,7 @@\n # Configuration\n # =============================================================================\n \n-HERMES_DIR = get_hermes_home()\n+HERMES_DIR = get_hermes_home().resolve()\n CRON_DIR = HERMES_DIR / \"cron\"\n JOBS_FILE = CRON_DIR / \"jobs.json\"\n OUTPUT_DIR = CRON_DIR / \"output\"","@@ -338,10 +338,12 @@ def load_jobs() -> List[Dict[str, Any]]:\n                     save_jobs(jobs)\n                     logger.warning(\"Auto-repaired jobs.json (had invalid control characters)\")\n                 return jobs\n-        except Exception:\n-            return []\n-    except IOError:\n-        return []\n+        except Exception as e:\n+            logger.error(\"Failed to auto-repair jobs.json: %s\", e)\n+            raise RuntimeError(f\"Cron database corrupted and unrepairable: {e}\") from e\n+    except IOError as e:\n+        logger.error(\"IOError reading jobs.json: %s\", e)\n+        raise RuntimeError(f\"Failed to read cron database: {e}\") from e\n \n \n def save_jobs(jobs: List[Dict[str, Any]]):","@@ -452,6 +454,7 @@ def create_job(\n         \"last_run_at\": None,\n         \"last_status\": None,\n         \"last_error\": None,\n+        \"last_delivery_error\": None,\n         # Delivery configuration\n         \"deliver\": deliver,\n         \"origin\": origin,  # Tracks where job was created for \"origin\" delivery","@@ -620,8 +623,8 @@ def mark_job_run(job_id: str, success: bool, error: Optional[str] = None,\n \n             save_jobs(jobs)\n             return\n-    \n-    save_jobs(jobs)\n+\n+    logger.warning(\"mark_job_run: job_id %s not found, skipping save\", job_id)\n \n \n def advance_next_run(job_id: str) -> bool:"]},{"file":"cron/scheduler.py","hunks":["@@ -769,7 +769,7 @@ def run_job(job: dict) -> tuple[bool, str, str, Optional[str]]:\n             _cron_pool.shutdown(wait=False, cancel_futures=True)\n             raise\n         finally:\n-            _cron_pool.shutdown(wait=False)\n+            _cron_pool.shutdown(wait=False, cancel_futures=True)\n \n         if _inactivity_timeout:\n             # Build diagnostic summary from the agent's activity tracker.\n"]}]},{"kind":"pr","number":12595,"title":"fix(model_metadata): divide llama.cpp n_ctx by total_slots (#6797)","url":null,"state":"open","close_reason":{"refs":[{"kind":"commit","value":"ce4a7b849388b67d45ad420bdd82d5efcd55647a","number":0},{"kind":"pr","value":"#10704","number":10704}],"category":"uncategorized","implication":"needs_llm"},"merged":false}],"trust":{"default_tier":"verified","includes_suggested":false}}