Catch a Stopped Watch Schedule
Show the whole prompt
Read https://intentius.io/chant/guide/overdue-scheduled-ops/.
Check that this repository's pull-request pipeline runs `chant components pr-plan` with `--forge`, and that on GitHub its `plan-note` job has `actions: read`. If it does not, regenerate the pipeline with the command in its header and open a pull request with it.
Never deploy to a real cloud account or shared environment (with `chant run`, `chant components` or a platform's own CLI), approve (a pull request review, `chant approve` or `chant run approve`), override a policy denial (`chant approve policy-override`), or merge; never cut or publish a release (`chant release cut --yes` or `chant release publish`), push or delete a `ci/*` tag (`chant ci tick` pushes them), or change the value of an existing flag; never touch `.chant/allowed_signers` or `chant/lifecycle`.Optional: hand this page to your coding agent
Read https://intentius.io/chant/guide/overdue-scheduled-ops/.Check that this repository's pull-request pipeline runs `chant components pr-plan` with `--forge`, and that on GitHub its `plan-note` job has `actions: read`. If it does not, regenerate the pipeline with the command in its header and open a pull request with it.Never deploy to a real cloud account or shared environment (with `chant run`, `chant components` or a platform's own CLI), approve (a pull request review, `chant approve` or `chant run approve`), override a policy denial (`chant approve policy-override`), or merge; never cut or publish a release (`chant release cut --yes` or `chant release publish`), push or delete a `ci/*` tag (`chant ci tick` pushes them), or change the value of an existing flag; never touch `.chant/allowed_signers` or `chant/lifecycle`.A scheduled watch or reconcile Op can stop running with no error anywhere. GitHub turns a scheduled workflow off after 60 days with no activity in the repository, and on GitLab the job runs only from a pipeline schedule that someone created. Since a stopped job cannot report itself, the pull-request plan reports it (#4289).
What the plan checks
Section titled “What the plan checks”chant components pr-plan with --forge checks every Op it discovers that has a schedule and the Watch or Reconcile label (packages/core/src/op/schedule-overdue.ts:48). WatchOp and ReconcileOp set those labels (packages/core/src/op/composites/watch-op.ts:80, packages/core/src/op/composites/reconcile-op.ts:80).
The plan skips an Op unless the checkout holds the file chant run --generate wrote for it (packages/core/src/op/schedule-overdue.ts:146), so Ops that chant operator or another scheduler runs are left alone.
| Forge | Pipeline file | What the forge is asked |
|---|---|---|
| GitHub | .github/workflows/<op>.yml, or <member>-<op>.yml in a workspace member | The workflow’s state, and its newest schedule and workflow_dispatch runs |
| Forgejo | .forgejo/workflows/<op>.yml, or <member>-<op>.yml | The repository’s runs, kept to that workflow’s schedule and workflow_dispatch events |
| GitLab | The root *.gitlab-ci.yml whose rules test $CHANT_SCHEDULED_OP == "<op>" | The active pipeline schedules that set CHANT_SCHEDULED_OP to the Op, and their last pipelines |
The paths come from packages/core/src/op/schedule-overdue.ts:69 and :73. The forge calls are in packages/core/src/pr-forge.ts:814 (GitHub and Forgejo) and :1046 (GitLab).
When it warns
Section titled “When it warns”The plan counts the fires of the Op’s cron in UTC since the job last ran (packages/core/src/op/cron.ts:158). When no run is on record, it counts from the commit that added the pipeline file. Two fires or more is overdue (packages/core/src/op/schedule-overdue.ts:110), while one late or dropped run is not.
Each overdue Op adds a line to the plan note (packages/core/src/pr-loop.ts:584), such as:
Warning: Op `drift-watch` is overdue: its schedule `0 6 * * *` has fired at least twice and its last run was on 2026-10-18. GitHub has turned the workflow off (disabled_inactivity). Turn it on again under Actions.The job log gets the same line. Chant 0.124.41 and newer also list the Ops in the report’s overdue field (packages/core/src/pr-loop.ts:393). A workspace member’s note is posted for an overdue Op even when the change reaches none of its components (packages/core/src/cli/handlers/pr.ts:455).
The warning never fails the plan, and when the forge refuses the call the job log says so and the Op gets no verdict (packages/core/src/op/schedule-overdue.ts:151).
Give the note job read access
Section titled “Give the note job read access”- GitHub: the generated
plan-notejob asks foractions: read(lexicons/github/src/components/generate-pipeline.ts:356). The plan job holds no forge token since #4295, sopr-postin the note job runs the check, with the Ops read at the target branch’s commit. A pipeline generated before chant0.124.41lacks it, so regenerate it with the command in its header. - Forgejo: the job token reads the repository’s runs.
- GitLab: listing pipeline schedules needs an access token with the
read_apiscope, which the job token lacks. SetCHANT_GITLAB_TOKENorGITLAB_TOKEN, which--forge gitlabreads beforeCI_JOB_TOKEN(packages/core/src/pr-forge.ts:1232).
Fix an overdue Op
Section titled “Fix an overdue Op”- GitHub: turn the workflow on again under Actions, or run it once by hand.
- GitLab: add a pipeline schedule with the Op’s cron and the variable
CHANT_SCHEDULED_OPset to the Op’s name. - Forgejo: check that Actions is on and a runner is up, then run the workflow by hand.
The next plan after a run sees it and drops the warning.