Skills › BMAD Method › bmad-agent-po › tickets-template.toml
tickets-template.toml
70 lines · skills/bmad-agent-po/assets/tickets-template.toml at bd70c64
1# A container's agreed children, in its tickets/ folder; tickets.py ignores unknown keys.
2# Table order is build order. `id` is permanent, never reused.
3# One kind of table per file: an initiative with no epics uses [[entry]] tables, a parent initiative [[initiative]] tables.
4# No status here: the plan carries `status`; `tickets.py mirror` writes `tracker_status` to the leaf.
5# next_id = 7 # written by `tickets.py move`; the folder's counter never goes below it
7# ---- In an epic's tickets/ folder: one table per planned story, spike, or bug ----
9[[entry]]
10id = 1 # leaf file's `id:`
11type = "story" # story | spike | bug
12title = "Cart service scaffold"
13description = "Stands up the cart service with one add-item path through UI, API, and store."
14verify = "A shopper adds one item on the deployed site and sees it in the cart."
15covers = ["R1"] # epic Requirements ids
16after = [] # prerequisites only, not sequence
17hitl = true # a person runs the starter
18risk = "low" # low | medium | high
19# estimate = 2 # only if the user gives one
20# unknown = "..." # one-sentence user question; `tickets.py next` blocks the entry until removed
21# references = ["architecture-checkout/architecture-checkout.md#ad-8"] # beyond the epic's References; pull copies to the ticket
22# notes = ["..."] # user's words only; pull copies to Notes
23# refine = true # refine to full acceptance criteria first
24# plan_checkpoint = true # a person reviews the ticket or plan first
25# done_checkpoint = true # pause after it until a person says continue
27[[entry]]
28id = 2
29type = "story"
30title = "Apply and refuse discount codes"
31description = "Adds code validation to the pricing call and shows the refusal reason."
32verify = "A valid code lowers the total; an expired one is refused with its reason."
33covers = ["R2", "R3"]
34after = [1, "1.3"] # sibling id; "<epic id>.<entry id>"; "epic-<slug>"
35hitl = false
36risk = "medium"
38# ---- In an initiative's tickets/ folder: one table per epic ----
40[[epic]]
41id = 1
42slug = "epic-pricing-rules" # the epic's folder, inside this tickets/ folder
43title = "Pricing rules"
44description = "Every price a shopper sees comes from one pricing function, deployed." # what is true when it is done; seeds the envelope's Outcome
45covers = ["R1", "R2"]
47[[epic]]
48id = 2
49slug = "epic-cart-rules"
50title = "Shoppers manage their cart"
51description = "A shopper adds, changes and removes items on the deployed site and the total follows."
52covers = ["R3", "R4", "R5"]
53after = [{ epic = 1, needs = "the one-function pricing contract" }] # entries carry their own `after`
55# ---- In a parent initiative's tickets/ folder: one table per child initiative ----
57[[initiative]]
58id = 1
59slug = "initiative-storefront" # the child's folder, beside the parent's
60title = "Shoppers buy online"
61description = "A shopper finds, prices and pays for an order on the live site."
62covers = ["R1", "R2"]
64[[initiative]]
65id = 2
66slug = "initiative-fulfillment"
67title = "Orders ship themselves"
68description = "A paid order is picked, packed and tracked without manual steps."
69covers = ["R3"]
70after = [{ initiative = 1, needs = "the order-paid event" }]