fix(cron): let briefing jobs require delivery - #53252
Conversation
944b00f to
5f01a50
Compare
Competing with #53248 for the same fix (both implement a per-job |
5f01a50 to
a04bdca
Compare
|
Heads up on the overlap with #53248 — both add the per-job |
|
Thanks for the end-to-end cron delivery fix. The premise remains present on current main: The PR adds a persisted per-job opt-out, changes both scheduler decisions, and covers the relevant creation/update paths (tool, CLI, dashboard, API server, blueprints, and catalog entries). Its internal-silence exception preserves existing no-output/wake-gate behavior. GitHub currently reports the branch Automated hermes-sweeper review. |
a04bdca to
5f281f9
Compare
|
Thanks for the review. Rebased onto current main: |
|
We hit exactly the prompt-conflict described in #53230 with briefing-style jobs, and have been carrying a small local patch since early June that does the prompt-hint half of this — a per-job boolean choosing between the One design note from having lived with the prompt-only variant: it is not enough on its own. The generic hint is only an instruction — if the model emits +1 to landing this (or #53248 first with this cut down to the extra wiring + tests on top, per the earlier comment) — the need is real for recurring briefings/reports. |
5f281f9 to
ce40a2e
Compare
ce40a2e to
9a80125
Compare
9a80125 to
68fa302
Compare
What does this PR do?
Fixes cron jobs that are supposed to always deliver a report, such as daily briefings, inheriting the generic
[SILENT]suppression instruction.This adds an explicit per-job
allow_silentflag. Existing jobs keep the current behavior by default. Jobs withallow_silent=Falseget an always-deliver prompt hint instead of the silent-suppression rule, and the delivery gate will not drop a final[SILENT]response for that job.Related Issue
Fixes #53230
Type of Change
Changes Made
allow_silentstorage/update support for cron jobs.allow_silent=False.How to Test
scripts/run_tests.sh tests/cron/test_scheduler.py tests/cron/test_jobs.py tests/tools/test_cronjob_tools.py tests/cron/test_blueprint_catalog.py tests/cron/test_suggestions.py tests/tools/test_blueprints.py tests/gateway/test_api_server_jobs.py tests/hermes_cli/test_cron_parser_builder.py tests/hermes_cli/test_web_server_skill_editor.pyChecklist
Code
Documentation & Housekeeping
cli-config.yaml.exampleif I added/changed config keys — N/ACONTRIBUTING.mdorAGENTS.mdif I changed architecture or workflows — N/AScreenshots / Logs
Duplicate-work checks performed before implementation:
gh pr list --repo NousResearch/hermes-agent --state all --search "53230"returned no PRs.Proof:
Private pre-push review note: the normal push hook launched the configured background review. The Claude/Grogu side failed local auth (
401 Invalid authentication credentials), but the Codex/Mario report completed and flagged strict boolean/API/CLI/catalog/internal-silence gaps; the latest commit addresses those findings.2026-07-13 shepherding refresh
The issue premise still holds on current
main:cron/scheduler.py::_build_job_prompt()still injects the generic[SILENT]instruction for every agent-driven cron job, and the delivery path still suppresses a recognized silence response without a per-job opt-out.The open implementation cluster is now:
allow_silentlane covering job storage, scheduler prompt/delivery behavior, and the model-facing cron tool. It is cleanly mergeable with current CI green.allow_silentimplementation of the same core surface. Its historical checks are green, but the branch is now conflicting.delivery_policy="always"API with scheduler tests. Its branch also contains unrelated CLI/gateway/tool/ComfyUI/TUI changes, is conflicting, and has no check rollup.allow_silentlane covering the same core/tool contract plus a dedicated 12-test regression file. Its description reports 79 adjacent cron-tool tests passing, but the branch is currently conflicting and has no GitHub check rollup.allow_silentlane: it covers the same core contract plus strict boolean validation and creation/edit round trips across blueprints, built-in briefing catalogs, CLI, dashboard, and API-server surfaces. Its focused proof remains 504 passing tests; it is cleanly mergeable and its current GitHub check rollup is fully green.This comparison is review context rather than a claim that later-opening alternatives should be closed automatically. A maintainer still needs to choose the intended API shape and whether to land the minimal core surface or the end-to-end wiring.