Skip to content

Blog

Set the stale-work clock from your agents' cycle time

The Stale-Issue Reviewer at software-factory.dev calls work stale after three hours, not three days, because a watcher's clock has to run at the speed of the line it watches.

Written by

Software Factory

Published: 7 August 2026 Updated: 2 min read

Three hours. That is how long a piece of work can sit untouched in the factory at software-factory.dev before the Stale-Issue Reviewer steps in. Not three days: three hours. You can read the Stale-Issue Reviewer’s definition on GitHub (opens in a new tab).

What the reviewer checks every four hours

The automation runs every four hours, on the cron line 0 */4 * * *, and it can also be started by hand. On each run it lists every open issue carrying the status:in-progress label and asks one hard question: is this still moving, or did something die?

The failure it looks for is quiet. A builder automation claims an issue with that label, then fails without a sound. The label stays. The issue looks busy while nothing happens, and dependent work piles up behind it.

Three conditions before work counts as stale

The reviewer is careful about what counts as stale. An issue qualifies only when all three of these hold at once:

  • The in-progress label was added more than three hours ago.
  • No open pull request references it, or the one that exists has itself gone quiet for three hours.
  • No real human has commented recently.

Miss any one and the issue is left alone, because an automation might still be mid-build on it.

Reset the work, and escalate what blocks others

When an issue is stale, the action depends on blast radius. Work that blocks nothing gets reset to the backlog. Work that other issues depend on gets reset and also escalated with a needs-human label.

Why the number is three hours

The detail worth copying is the three-hour number itself. In this factory the builder automations run every two hours, so three hours is just past one full cycle. That is long enough that a healthy build would have produced something, and short enough that a dead one does not block the line for a day.

A human sprint board measures stuck in days, because humans work in days. This factory measures it in hours, because it works in hours. Copy the clock from a sprint board into an agentic line and every stall hides for a day before anyone notices.

The watcher’s clock has to run at the speed of the line it watches. Pick the number from your actual cycle time, not from habit.

If you ported your old definition of stalled into an agentic setup, would it still be measuring the right thing?

Further reading

  1. The PR Shepherd resolves only the conflicts it understands The PR Shepherd in the software-factory.dev factory rebases conflicted pull requests but hands semantic conflicts to a human. The hard part of automation is encoding where its competence ends. 2 min read
  2. Escalated work needs a return path back onto the line The smallest automation in the software-factory.dev factory puts escalated issues back on the line once a human has answered. The return path from human to machine needs its own owner. 2 min read

All 18 parts

ClientsClient work

Scaling needs named owners

Coding agents scale across teams when named people own the platform, the team practice, the guardrails, and the measurement. Rollout & scale is where that ownership is built and handed to internal owners, in your stack.

Training on this topic: Agentic Software Factory: Advanced Team Training
See Rollout & scale

Want to check one team first? The self-check: twelve yes or no questions, three minutes, instant result, no account. Take the self-check