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.