Skip to content
Fredrin
Documentation

Working the board

Goals

A goal is a named 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.

What a goal is

"Auth rework". "Q3 launch". A goal groups the tickets that contribute to an outcome, and it holds the plan for that outcome.

The relationship is many-to-many: a ticket can belong to several goals, and a goal groups many tickets. Nothing about the board's flat structure changes.

The goal plan

A goal carries a markdown description that doubles as its plan, structured as Outcome, Approach, Workstreams, Acceptance criteria, and Risks and open questions.

This is the load-bearing part. The ticket breakdown derives from the goal plan, and each generated ticket lands build-ready with its own five-section plan already written. A thin goal plan produces thin tickets.

You can edit the plan inline, and improve it with AI in place.

Running a goal

Press Run goal and the goal enters drain mode: Fredrin keeps starting a Worker for the goal's next queued ticket, one at a time, hands-off, until every substantive ticket is complete.

Then the goal closes itself.

This is the closest thing Fredrin has to "go build this feature". It is deliberately one ticket at a time rather than a fan-out, because a goal's tickets usually do depend on each other, and a queue that respects dependencies beats twelve Workers colliding in the same files.

Staging branches

A goal can optionally own a staging branch: an integration branch its tickets open pull requests into, merged to your default branch only once every ticket in the goal is complete.

Use it when the goal's tickets have blocking dependencies on each other, or when the intermediate states are not safe to ship. Without one, each ticket merges to the default branch as it finishes.

Staging is off unless you turn it on, so check the goal's own setting rather than assuming.

Goals versus dependencies

They solve different problems and compose well.

  • A goal says these tickets belong to one outcome.
  • A dependency says this ticket cannot start until that one finishes.

A goal with no dependencies drains in whatever order the queue offers. A goal with dependencies drains in an order that respects them.

Next steps