KB / Memory / project-chmonitor-desk-jobs
chmonitor scheduled desk jobs
Four herdr-desk jobs (triage, babysit, prod watch, improve) with staggered minutes and one agent name each
chmonitor's unattended maintenance is the herdr-desk Herdr plugin, config
only in .herdr-desk.json plus repo-owned playbooks in docs/herdr-desk/.
| Job | Cron | Owns |
|---|---|---|
desk:github-issues |
0,30 * * * * |
triage, research, dispatch children |
local:babysit |
10,40 * * * * |
red required CI, review, auto-merge, worktrees |
local:prod |
20,50 * * * * |
live deploy verification, agent probe, usage, revert |
local:improve |
17 2 * * * |
desk health, doc/skill drift, dead code, slowdowns |
Why: one job doing all four duties made every duty compete for the same five child slots, so a busy issue queue silently starved PR maintenance. Separate jobs give each duty its own budget and its own manager.
How to apply:
- Stagger the minutes so two jobs never contend for one slot, and give each
job its own
agentName— the agent name is the session identity, so a shared name means two prompts racing for one pane. namein the desk config must equal the repo folder name. A stale"name": "chmonitor"in the herdr-desk repo registered a second chmonitor job on a different cron; the loser recorded a prompt failure.- Required CI is
unit-tests+dashboard.e2e-test,e2e-test-tsr,component-test,codecov/patch,promptfooandClaude Issuesare informational. Release-please PRs are human-only, never auto-merge. - Production deploys itself on push to
main;local:prodis the second pair of eyes and may only verify or restore service, never ship. - Proof a branch landed before deleting its worktree:
git diff <branch> origin/main -- <touched files>, notgit branch --merged— squash merges change the sha, so a fully merged branch still reads "ahead N".
Lessons: tech-silent-scheduler-failure, feedback-issue-research-pr.