Skip to content
Fredrin
Documentation

Working the board

Tickets

A ticket is one unit of work. It runs through a single agent session in its own branch and worktree, and it carries everything about that work in one place.

Anatomy of a card

Title. What you would call the pull request.

Description. The brief. This is the prompt the Worker reads, so it is worth writing properly. See writing a good ticket.

Plan. A structured plan in five sections: Outcome, Acceptance checks, Touchpoints, Constraints, and Open questions. It renders as checkboxes you can tick, and the ticks persist. A Plan-mode run writes it for you; you can also write or refine it by hand.

Labels. Your own taxonomy, per project.

Assignee. A person or a team. Assignment can be what triggers a run.

Dependencies. Other tickets this one waits for. A ticket with unmet dependencies will not start, which is how you sequence work that genuinely cannot be parallel.

Attachments. Mockups, screenshots, logs. A Worker can read them.

Activity. The full history of what happened: runs, moves, comments, approvals, CI results.

The side panel

Opening a ticket gives you the plan on one side and the live session on the other. While a Worker is running you can watch its chat, drop into its terminal, or leave and come back later. The session keeps going either way.

Acceptance checks

The Acceptance checks section of the plan is not decoration. It is the list the Worker is told to satisfy, and the list you scan when the diff arrives.

Vague checks produce vague work. "Handles errors" is not a check. "Returns a 409 with the existing record when the slug already exists" is.

Dependencies

Add a dependency when ticket B genuinely cannot begin until ticket A is done, usually because A creates something B imports.

Do not use dependencies to express preference. Fredrin's throughput comes from tickets running at the same time, and a dependency chain is a queue you built by hand. If three tickets touch the same file but do not depend on each other's output, run them in parallel and resolve any conflict at merge.

Filing tickets from elsewhere

Tickets do not have to be created in the app:

  • Slack - tag the bot in any conversation. See the Slack guide.
  • The REST API - POST /tickets. See the API.
  • The CLI - fredrin tickets create. See the CLI.
  • MCP - point another agent at your board. See MCP.

Next steps