Skip to content
ttorta docs

Knowledge Base

How the ticket queue works

Three queues per agent, a filename that carries the status, and a state machine in torta.json.


A ticket is a markdown file. Its queue is the folder it sits in; its status is part of its filename.

Three queues per agent

Every agent home has .workflow/ with three folders:

Queue What is in it
todo work waiting to be picked up
wip the one ticket the agent is working now
done finished work

Torta refuses to fill an occupied wip: one ticket at a time.

Tickets are built in a .staging folder and renamed into a queue.

The filename is the record

Every ticket file is named:

<type>.<three-word-name>.<STATUS>.md

Everything is lowercase except the status. The assignee lives in the frontmatter, not the name. The types are feature, fix, chore, refactor, adhoc, epic and hotfix.

A status change is a rename, and the board is watching directories.

The frontmatter

Eight fields are required on every ticket: status, project, type, title, assignee, author, date and repo.

The body is section-based, each section with a line budget. A feature carries User story, Acceptance criteria, Motivation, Proposed change, Impact and risks and Verification. A ticket is capped at 300 non-blank lines, excluding the append-only ## History block.

The full list is in the workflow schema.

The state machine

torta.json carries a statuses list: what each status means, who holds it, and what it may become next. The default workflow has 22, and a feature normally takes this path:

REVIEW to APPROVED to WIP to CODE_REVIEW to FOR_QA to STG to FOR_DEPLOY to DEPLOYED to DONE.

The ones that stop and ask you are marked userFacing; see approvals.

The history block

Every transition appends a row to the ticket’s ## History section: when it happened, what it moved from and to, and whose home it ran from. The block is append-only and has a 40 line budget of its own.

The event log

.torta/events.jsonl records what happened: transition, session_start, session_stop, approval, interrupt, lease_reclaim, budget_breach, watch_start, watch_stop, dispatch and pane_deliver.

The log is derived: delete it mid-run and nothing changes. The board draws from directory listings and torta.json.