Skip to content
Fredrin
Documentation

Working the board

Working the board

The board is the product surface. Every ticket on it is one unit of work, and it moves left to right as real things happen rather than because someone remembered to drag it.

Projects

A project is one repository. Its board holds that repository's tickets, and nothing crosses between projects: separate boards, separate branches, separate Workers.

Add as many as you like. The project switcher is the fastest way between them, and running Workers keep running while you look at a different board.

The five columns

ColumnWhat it means
BacklogFiled, not started. New tickets land here.
RunningA Worker is working on it right now.
BlockedThe Worker stopped and needs you. See when a Worker stops.
ReviewWork is done and waiting on a human to look at the diff.
CompletedMerged, or explicitly closed.

Columns are yours to rename and reorder. The five above are what a new workspace starts with.

What moves a card

This is the part that matters, and it is the part most tools get wrong. A card moves for one of three reasons, and never because a model decided to say it was finished.

  1. Agent lifecycle signals. The coding CLI's own session hooks tell Fredrin when a run actually stopped. Running to Review is driven by that, not by the agent claiming success. The same signals move a stuck run to Blocked.
  2. Human board actions. You drag a card, or press a button. Starting a ticket is usually this.
  3. Deterministic GitHub signals. A merged pull request moves its ticket to Completed by webhook. No polling a model for its opinion.

The practical effect: the board is trustworthy. A ticket in Review is genuinely waiting for you, and a ticket in Completed genuinely shipped.

Goals

A goal is a named grouping across tickets, a milestone many tickets contribute to. It is a filter over the board rather than a container, so the board stays flat and the rule stays one Worker per ticket.

Views

The board can group and sort itself several ways, and each column can be collapsed or expanded independently. When you are running a dozen tickets, grouping by goal or by assignee turns a wall of cards back into something you can read.

Where the work actually happens

Nothing about the board is a metaphor:

  • A ticket has a real git branch.
  • A running ticket has a real git worktree, an isolated checkout on disk.
  • A finished ticket has a real pull request, with its CI status on the card.

You can always drop out of Fredrin and inspect any of it with plain git.

Next steps