fix(cron): preserve actionable drift recovery alerts - #72056
Closed
sashmatash wants to merge 1 commit into
Closed
Conversation
Contributor
|
Thanks for preserving the actionable drift alert; the underlying lifecycle issue is present on current main. Problems
Suggested changes
Automated hermes-sweeper review. |
teknium1
added a commit
that referenced
this pull request
Aug 13, 2026
…cific comments - Widen the scheduler-internal timeout classification to the sibling TERMINAL_CWD lock-wait TimeoutError (#79768), which also matched the generic 'timed out' branch and was delivered as a provider timeout. - Reconcile the drift-guard alert with #72056's lifecycle-aware remediation: finite one-shots are told to recreate the job, not to update a consumed one. - Scrub environment-specific references from comments/docstrings.
teknium1
added a commit
that referenced
this pull request
Aug 13, 2026
Contributor
|
Merged via PR #85508 (rebase-merge) — your commit was cherry-picked onto current main with your authorship preserved in git log. You were the earliest submitter of the drift-alert delivery fix (untruncated, lifecycle-aware remediation), 18 days ahead of the overlapping work — your one-shot-vs-recurring remediation logic and the docs correction landed as you wrote them, reconciled with the newer alert-once dedup machinery. Thanks! |
19 tasks
jackulau
added a commit
to jackulau/hermes-agent
that referenced
this pull request
Aug 19, 2026
The NousResearch#44585 drift guard fails an unpinned cron job closed when the global provider/model moves under it, and every message it emits offers exactly one remedy: pin this job. That is correct for one job and wrong for a fleet. NousResearch#59031 was 34 jobs breaking on a single global switch, i.e. 34 per-job edits for one config change, and NousResearch#89242 is the same complaint arriving again with a proposed fix that would disarm the guard entirely. The fleet-wide remedy already exists. NousResearch#73532 added `cron.model` / `cron.model_provider`, and `_cron_fleet_default_covers_axis` makes the guard skip any axis they cover, so one command decouples the whole unpinned fleet from the chat model without giving up spend protection on the axes it does not cover. The cron guide has documented this since NousResearch#73532; none of the runtime messages did, so the only operators who find it are the ones who read docs after being told to make N edits. Teach all three surfaces to name it alongside the pin: - the scheduler's skip log and alert blob, on both the recurring and the NousResearch#72056 finite-one-shot path, naming `cron.model_provider` for the provider axis rather than interpolating the axis name into a key that does not exist - the chat delivery line, which is the surface an operator reads unprompted rather than after something sent them to a log; kept to one terse sentence so the notification stays one line - the `hermes config set model.default` warning, which fires before any job has failed and is therefore the cheapest place to have omitted it No behaviour change: the guard engages in exactly the cases it engaged in before, and the per-job and one-shot remedies are unchanged. The warning is still suppressed for an axis the fleet default already covers, so an operator who has taken the advice is never given it. Tests parse the config key back out of each emitted message and feed it to `_cron_fleet_default_covers_axis`, so the advice cannot go stale against the mechanism the way it just did. Fixes NousResearch#89242
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
cronjob action=updateis not presented as a remedy for a consumed finite one-shot.Why
A finite one-shot is consumed when its dispatch is claimed, even if the later drift guard blocks inference. The existing update-oriented recovery advice therefore pointed to a job that could no longer be updated. The generic chat failure summarizer also truncated both recreation and update guidance before users could see it.
This is a focused follow-up to #44585.
How to test
Result: 396 passed, 0 failed.
Additional verification:
AIAgentconstruction and delivered the correct lifecycle-specific action.git diff --checkpassed.APPROVEDwith no blockers, suggestions, or nits.Platform tested
Notes
The repository-wide suite and Docusaurus build were not run. The documentation change is a single Markdown line; CI remains the authority for full-repository compatibility.