NousResearch/hermes-agent

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

1open issue
1open PR
4items grouped
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.

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.

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

Merged to main. A stamp counts the issues a fix is linked to.

  • #7453 fix(cron): salvage cron fix PRs #6917 #6810

    merged to main

    files: cron/jobs.py, cron/scheduler.py

    Show 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.00 means 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 Lab

At 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.

For your agent

The same facts, typed.