Skip to content
Castellan
Reeve's icon

Reference · Reeve

Read as

Reeve's rounds: the jobs, the digest and alerts

What each of Reeve's scheduled jobs does every 30 minutes, which ones change repositories and how to turn them on safely, approving job scripts, and how alerts reach you.

Article
1204
Applies to
Reeve 0.17.2
Last reviewed
For
For developers
Written for Reeve 0.17.2. Reeve is at 0.17.3 now (1 small release since: what changed).

How the rounds run#

Every 30 minutes, Windows' Task Scheduler runs \Reeve\Rounds, which runs the jobs that are due. Each job is a small script, listed with its interval; its result (ok, warn or alert) is decided by code, and written to the digest (%USERPROFILE%\.reeve\digest.md). Your AI assistant reads the digest with Reeve's digest tool, and Reeve's page shows it under Jobs.

Off duty (Stop on Reeve's card in Castellan), no round runs. Reeve's MCP tools, Run now and the page still work.

The jobs#

JobEveryWhat it doesChanges repositories
fast-forwardhourFetches every repository Reeve finds, and fast-forwards each checkout of main, master, release/* or origin's default branch that's safe to move, and brings a clone left on a finished branch back to the default branch (below). Warns naming each one it left alone, and why.yes
repo-synchourKeeps Reeve's own checkout of each project current (on the newest release/* branch, else origin's default), and reinstalls its packages when the lockfile changed. Warns when one of your checked-out branches is behind GitHub.its own checkouts only
worktree-tidy6 hoursRemoves worktrees whose work is safe elsewhere, and deletes merged local branches (below).yes
project-branches6 hoursDeletes the branches merged into each of your own repositories' branch, here, and on GitHub where you allow it (below).yes
git-hygiene6 hoursEvery repository and worktree: uncommitted changes (warns after 3 days), branches ahead of upstream, gone upstreams, worktrees already merged.no
ai-usehourWhether the AI sessions that worked in a repository today used Reeve; alerts under 65%, and says why. See Connect your AI coding assistant to Reeve.no
docs-refreshdayFetches version-pinned docs when a project's lockfile changed.no
dependency-healthdayPer project: security alerts, deprecated APIs in use, and upgrades whose breaking changes touch the code. Alerts on a new high or critical security alert.no
npu-healthhourThe NPU driver's and model servers' versions. Alerts when the NPU driver changes.no
review-queuehourNew user reports and feedback from a project's export, with the model's notes. Only for projects set up with one.no
screenshourLayout checks on new UI-test screenshots. Off by default.no

A project is a repository with a lockfile Reeve reads (npm, pnpm, yarn, Cargo, Go, pinned requirements.txt). Projects get Reeve's own checkout, docs and dependency health; every repository gets the git jobs. See Your repositories in Reeve.

Jobs that change repositories#

Four jobs change repositories: fast-forward, repo-sync, worktree-tidy and project-branches.

  • On a new install each is off. The rounds skip it, and it isn't offered for approval.
  • Turn one on with Turn on beside it under Jobs on Reeve's page. Turn off turns it off again.
  • Its first run is a dry run. It changes nothing; its report says exactly what it would have done. It acts from the run after. Turned off and on again, it starts with a dry run again.
  • Off, it still shows what it would do: Dry run on the page runs it once, changing nothing.

What fast-forward moves

A checkout of main, master, a release branch or origin's default branch is moved to what GitHub has (git merge --ff-only) only when all of these hold:

  • no local commits;
  • no uncommitted changes to tracked files, staged or not;
  • no merge, rebase, cherry-pick, revert or bisect under way, and no other git command running there;
  • no file marked assume-unchanged or skip-worktree, whose local edit git would hide.

A detached HEAD and every other branch are never moved: they're fetched for, nothing more.

One exception: a clone left on a finished branch. When a repository's own clone (never a linked worktree) is on a work branch whose every commit is already in origin's default branch, hasn't been touched for a day, and passes the checks above, it's switched back to the default branch (git switch), which is then fast-forwarded with the rest. The work branch is kept. A clone on a branch with commits of its own is never moved; once it has sat a week, the result names it, so you can finish or drop that work.

It never commits, resets, stashes, cleans, pushes, deletes or prunes. When a lockfile changed in the commits it brought, it says to reinstall packages there; it never installs anything in your checkouts.

What worktree-tidy removes

A linked worktree (never a repository's main one) goes when its work is safe elsewhere (merged into origin's default or newest release branch, rebased into it, or pushed to one of origin's branches), and:

  • git status shows nothing changed, staged or untracked;
  • it holds no git-ignored file but build output (node_modules, dist, .next, bin, obj, target and the like): a .env or a local database keeps it;
  • nothing is under way in it, and it isn't locked;
  • it hasn't been touched for 2 days, or 7 when it's only pushed.

It removes with git worktree remove, never --force, so git refuses if anything could be lost. A merged local branch goes with git branch -d once its tip is on origin's default branch and 2 days old. It never touches a desktop AI app's own worktrees folder, nor any agent's working folders, and never deletes a remote branch.

What project-branches deletes

For each of your own repositories listed in Castellan (whose Clean up merged branches is ticked): it fetches origin, then deletes the local branches fully merged into the repository's branch. It keeps the repository's branch, main, master, develop, gh-pages, release/*, hotfix/*, any branch checked out, and any with an open pull request.

On GitHub it deletes only for repositories you list under Delete merged branches on GitHub too in Reeve's settings, and only a branch whose pull request was merged at its very tip, at most 20 a round. Squash-merged branches it didn't delete, and branches with no commit for 30 days, are only reported.

Every deletion is logged with its tip, and Reeve's page shows the last ones with the command that puts each back:

git -C "C:\Projects\Example" branch feature/x 1a2b3c4d...
git -C "C:\Projects\Example" push origin 1a2b3c4d...:refs/heads/feature/x

Approving job scripts#

A job's script runs only while its SHA-256 matches the one you approved, so an edited script never runs unseen. A script that's new, or changed by an update, waits under Needs you on Reeve's page, with what it does, View the script, and the fingerprint approving pins.

  • Approve all read-only jobs approves the read-only ones together.
  • A job that changes repositories has its own card and its own Approve.
  • A script changed since the page showed it is refused, and nothing is approved.

Alerts, and how they reach you#

A job whose last result is an alert is open until a round's result for it isn't one. Warnings stay on Reeve's page and in the digest.

  • On Reeve's page: At a glance counts the new ones; Mark seen marks them seen.
  • In Castellan: each open alert is in Needs you at once, while Reeve is on duty. See Needs you, notifications and quiet hours.
  • One Windows notification for each new alert, never two for the same one. Never while Castellan's Notify me is off, or during quiet hours.
  • For your assistant: the digest tool lists the alerts not yet acknowledged. At the start of a session, a line in its instructions has it mention any for the repository it's in.

Acknowledging (jobs ack, or Mark seen) clears the digest's list, not the alert itself: it stays open until it's put right.

Running a job yourself#

On Reeve's page, under Jobs: Run now (or Dry run now, for a job whose next run is a dry run), Pause and Resume, and each job's log. From a terminal, see Reeve's command line.

Is this page right?

If something on it is wrong or out of date, tell us and we'll fix the page.

Still stuck? Write to support@castellan-software.com and mention article 1204. Every version of Reeve, and what changed in it, is in its release notes.