Mostly cron-related fixes and bug report; one unrelated model metadata PR
Cluster 6797 · agent. Data as of
2 open items. Fix merged in #7453 on 10 Apr 2026. Check it covers your case.
The short answer
- Known?
- Yes. 4 related items grouped here, 0 issues already closed.
- Fix event
- A fix was merged to main in PR #7453. Check it covers your case. No release data is tracked.
- Tracker
- The maintainers' tracker marks this
unresolved. That is separate from the fix event. - Still open
- 1 issue and 1 PR.
Next step: read #7453, then check whether your report is the one still open.
Read #7453Pick up a Lab taskThree 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.
Open issues1
- Issue#6797[Bug]: At some point a session is unable to make any changes to Cron (Hermes in Docker)
Open PRs1
- PR#12595fix(model_metadata): divide llama.cpp n_ctx by total_slots (#6797)
Fixes on record
-
#7453 fix(cron): salvage cron fix PRs #6917 #6810
files:
cron/jobs.py,cron/scheduler.pyShow the diff
-
cron/jobs.py@@ -31,7 +31,7 @@ # Configuration # ============================================================================= -HERMES_DIR = get_hermes_home() +HERMES_DIR = get_hermes_home().resolve() CRON_DIR = HERMES_DIR / "cron" JOBS_FILE = CRON_DIR / "jobs.json" OUTPUT_DIR = CRON_DIR / "output" @@ -338,10 +338,12 @@ def load_jobs() -> List[Dict[str, Any]]: save_jobs(jobs) logger.warning("Auto-repaired jobs.json (had invalid control characters)") return jobs - except Exception: - return [] - except IOError: - return [] + except Exception as e: + logger.error("Failed to auto-repair jobs.json: %s", e) + raise RuntimeError(f"Cron database corrupted and unrepairable: {e}") from e + except IOError as e: + logger.error("IOError reading jobs.json: %s", e) + raise RuntimeError(f"Failed to read cron database: {e}") from e def save_jobs(jobs: List[Dict[str, Any]]): @@ -452,6 +454,7 @@ def create_job( "last_run_at": None, "last_status": None, "last_error": None, + "last_delivery_error": None, # Delivery configuration "deliver": deliver, "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, save_jobs(jobs) return - - save_jobs(jobs) + + logger.warning("mark_job_run: job_id %s not found, skipping save", job_id) def advance_next_run(job_id: str) -> bool: -
cron/scheduler.py@@ -769,7 +769,7 @@ def run_job(job: dict) -> tuple[bool, str, str, Optional[str]]: _cron_pool.shutdown(wait=False, cancel_futures=True) raise finally: - _cron_pool.shutdown(wait=False) + _cron_pool.shutdown(wait=False, cancel_futures=True) if _inactivity_timeout: # Build diagnostic summary from the agent's activity tracker.
-
1 PR closed without merging
From the close comments: merged via another change 1
-
#6810 fix(cron): prevent silent data loss by raising exceptions on unrecove… · merged via another change →
#7453
How this cluster was grouped
-
Link evidence (
structural links throughout): every member is connected by structural evidence: shared changed files, or a closing/superseded reference. -
Pairwise link density
0.50: the share of item pairs that carry a link, counting a structural link in full and a relevance-only link at 0.36.1.00means every pair is linked.
Pick up a Lab task
Check whether a fix covers the open issues here, with your own agent. Bring back evidence for maintainers.
Open the LabAt a glance
- Subsystem
- agent
- Merged PRs
- #7453
- Closed issues
- 0
- Attempts
- 1 PR closed without merging
- Fix link checked
- 10 Apr 2026. This confirmation is old and may be out of date (a revert or reopen would not have invalidated it here); re-verify.