Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Briefs and fixers

headwater never acts on a release (36). A fixer does: a coding agent or a person who makes changes, and who decides whether and how to move a pin. headwater hands the fixer a brief, everything needed to move one dependency to one release, and the change the fixer makes is the fixer’s.

What a brief holds

headwater gives a brief for any release a report holds (25). The brief holds:

  • the release, with its version, its date and its link;
  • its notes, whole, or the part asked for with a way to read the whole again (12);
  • its advisories;
  • every declaration of the dependency in the repository state, with the pin each gives (26).

The declarations let a fixer move every one. A dependency declared in two projects at two pins needs both moved, and the brief names both, with the older pin the report measured from (4, 26).

What a brief reaches

Asking for a brief reaches no source but the notes and advisory sources, and writes nothing but notes it keeps whole (25). The release itself comes from what headwater already holds.

What a brief leaves out

A brief prescribes nothing (27). It names no tool that acts on it and no step a fixer must take. The fixer chooses: a lockfile update, a code change the notes call for, or no change at all. headwater judges none of these, and a brief reads the same whichever fixer will act on it (34).

The command and the diff

The capture design settles two more things a brief carries, and the statement takes them at plan step H1, where they amend (27) (design/capture/design.md). A brief names the ecosystem’s own command for the move: npm update or npm install <name>@<version>, uv lock --upgrade-package, cargo update -p, go get, mise use. Whoever makes the change runs it, and headwater never does. Beside the release’s notes, a brief can carry the published package’s own diff between the pin and the release (npm diff), so a change to a README or a CHANGELOG shows as upstream shipped it.

After the brief

The fixer makes the change in a place of its own, and the repository’s own gate decides whether it lands (section 8). In a repository that lands through sluice, the fixer submits and sluice lands what passes. Once the change lands, the next reading has the new pin, and the releases it reaches leave every report with no acknowledgement written (9, S4).

A surface hands a brief on. The Claude Code plugin hands it to a background agent in a worktree of its own (section 9). The herdr plugin’s key hands it to flume, which starts a new agent in a worktree with it (section 9, design/capture/design.md). In a repository crew runs, a bump comes only through crew’s plan, and the herdr key hands the release to millpond instead; Releases as captures follows that path.

Still to rule: questions 26 and 27; the command and the diff enter the statement at plan step H1. See Open questions.