Schema and Fields
How schema.yaml defines ticket types, per-type fields, statuses and priorities, and how the app rebuilds from it.
Everything a project’s tickets can be is declared in .lovelace/schema.yaml: the
ticket types, the fields each type carries, the statuses and the priorities. The
validator, the indexer, the MCP server and the app’s forms all read those
definitions at runtime. There is no migration step: change the file and every
surface follows.
Types and fields
Each type owns its field list:
types:
- name: task
id_prefix: T
fields:
- name: title
type: string
required: true
- name: priority
type: enum
values_from: priorities
- name: parent
type: reference
refers_to: [epic]
- name: estimate
type: number
Field types are string, number, boolean, date, enum, list and
reference. Enums take values or values_from: priorities; lists take an
item_type; references take refers_to. Any field can carry a label,
required and a default.
Five core fields are locked and managed by the tooling: id, type, status,
created, updated. title is required on every type.
Statuses
statuses:
- name: backlog
- name: todo
agent: ready
- name: in_progress
agent: in_progress
- name: in_review
- name: done
agent: complete
- name: cancelled
Status order is column order on the Board, and a ticket can move to any defined
status. The optional agent role tells your agent where to pick up work
(ready), which status marks work in flight (in_progress) and where finished
work lands (complete); at most one status per role.
Priorities
priorities: [urgent, high, medium, low]
Ordered, highest first. Fields opt into the list with values_from: priorities.
Editing
Settings edits all of this through generated forms and writes back through core
validation; hand-editing the YAML is an equally supported path, and malformed
input gets an error with file and line, never a crash. Actors (you, plus named
agent identities) live beside the schema in actors.yaml. For the reasoning
behind fields-as-data, see Local First.