Troubleshooting
Tickets the linter refuses
The filename rule, the missing frontmatter fields, and the section budgets.
lint-ticket.py checks tickets against the same torta.json the board and
the engine read.
The filename is wrong
filename must be <type>.<three-word-name>.<STATUS>.md, all
lowercase except the status — the assignee belongs in frontmatter, not
here
So feature.add-empty-state.REVIEW.md passes. The type is one of feature,
fix, chore, refactor, adhoc, epic or hotfix.
frontmatter missing <field>:
Eight fields are required on every ticket: status, project, type,
title, assignee, author, date and repo. There is also
frontmatter missing redo_count: (starts at 0).
Two more have their own messages:
frontmatter missingticket:— every ticket is numbered at creationfrontmatter missingepic:— every ticket names the open sprint
a feature ticket must have ## Acceptance criteria
A feature needs, in order, User story, Acceptance criteria,
Motivation, Proposed change, Impact and risks and
Verification. The full table is in
the workflow schema.
## Proposed change uses 41 non-blank lines, budget is 25
Each section has a line budget. Trim it, or raise the budget in torta.json
under workflow.budgets. A whole ticket is also capped at 300 non-blank
lines, with ## History excluded.
Status and hierarchy findings
an epic isOPENorCLOSED, neverWIPOPENbelongs to an epic — a feature cannot take itan epic does not carryepic:— it is the epicparent:names this ticket — a ticket cannot be its own parentchildren:names this ticket — a parent cannot be its own child
unknownStatuses on the board
GET /api/state reports unknownStatuses for any status present on disk that
the workflow legend does not name, usually a ticket renamed by hand.
Where the rules live
Every rule on this page is read from workflow in torta.json. After
changing it, regenerate:
torta sync