Skip to content

A task "in progress" that nobody has touched for three weeks

A status that was authored rather than computed is true at the moment of writing and decays silently from then on.

→ found a task "in progress" that nobody had touched for three weeks

cost when it happens
medium
how often
common

The moment

The board says the migration is in progress. The branch is three weeks old, its head is forty commits behind main, and the worktree it lives in belongs to a session that ended in August. Nobody knows whether to finish it, restart it or delete it.

Why it happens

"In progress" was written once, by whoever started the work, and nothing was ever obliged to say it again. A status that is authored rather than computed is true at the moment of writing and decays from then on, silently, at the same rate as everything around it moves. The task registry this tool was distilled from carried a stale entry for four worktrees in five at one audit; the fix was a repair command that nobody ran, because nothing reported that it needed running.

Why a better model does not fix it

There is no worker involved in the failure. The record went stale between sessions, when nothing was running at all. The only fix is for the status to be derived from facts that move on their own — git, the filesystem, the clock — rather than stored as a word.

What it costs

Work is either duplicated or abandoned, and both are decided by guessing. The wider cost is that the board stops being read: once a few entries are known to be stale, every entry is treated as unreliable, and the team goes back to asking people.

What Majordomus does

A task record is not a status. Its identity — branch, head, worktree — is computed from git at start and never typed, and reading the record back compares those facts with git now, labelling the result exact, advanced, diverged or different_context. A record names the checkout it belongs to, and another checkout is never held to its scope.

The profile a task runs under sets a checkpoint interval. majordomus checkpoint records what was true a moment ago, capped in length so the next context can quote it whole; a body over the cap is refused rather than truncated. majordomus check reports checkpoint age beside state, scope and blockers. majordomus watch reports it as drift, with the interval it exceeded, together with every other drift it can see, and exits with its own code, so a script can tell "drifted" from "broken".

Before and after

before   board: "in progress"          (written once, in July)

after    majordomus watch
           DRIFT checkpoint  t-20260812… — last checkpoint 21d ago, interval 30m
           DRIFT state       t-20260812… — diverged (+40 commits on master)

How to verify it

Start a task, wait past its checkpoint interval, and run watch: the drift is reported with the interval it exceeded. Move the branch on and read the record back: the divergence label changes without anyone editing it.

What it does not do

It does not close, reassign or delete a stale task; that is a decision, and it is reported to whoever makes it. watch never blocks anything. It knows the worktrees of one repository on one machine, so a task in a clone it cannot see is invisible to it.

What this looks like

Concrete situations, one per audience. Each is declared in the moment's front matter, so the before and the after are data rather than prose a page could drift from.

  1. The migration on the board engineering-lead

    before
    The board says in progress; the branch is forty commits behind and the session that owned it ended in August.
    after
    `watch` reports the checkpoint age against the interval the profile sets, as drift, with its own exit code.
  2. A worker that stopped mid-task ai-native-team

    before
    An overnight worker stopped somewhere; the task record still claims the work is under way.
    after
    The record''s identity was computed from git and is compared with git now: `exact`, `advanced`, `diverged` or `different_context`.
  3. Handing over an engagement agency

    before
    Four of five worktrees carry a task record that no longer describes anything real, and nothing said so.
    after
    Each record names the checkout it belongs to, and a stale one is reported rather than trusted.

How you would know

The observable symptoms this moment declares. They are the questionnaire on the index and the input of majordomus why diagnose; nothing else defines them.

  • Something is marked in progress that nobody has touched for weeks. stale-in-progress
  • A branch for active work is far behind the trunk and nobody noticed. branch-behind
  • Nobody can say whether an old piece of work should be finished, restarted or deleted. finish-restart-delete

Where this lives in the tool

Everything below is read out of this moment's own front matter and resolved against the repository. A name here that did not exist would fail validation.

the commands that answer it

the capabilities of the executable that answer it

what it supervises — derived from the claims below

the claims that back this page, and the evidence behind each

the rules that govern it

  • majordomus.checkpoint-freshness
  • majordomus.state-consistency
  • majordomus.task-continuity
  • majordomus.one-worker-one-scope

the use cases that show the way out

If this one is familiar, so is the next

What this moment names, what names it, and what shares its area, audience or tags. The second and third are derived; only the first is written down.

All 38, and how they connect to the tool →