Specifications
Jira tickets are not a specification.
A closed ticket records what someone planned to build. It does not record what the product does today. The two drift apart the day the ticket is closed, and a team that treats its tickets as its specification slowly loses track of its own product.
What a ticket is for
A ticket is a tool for getting work done. It says what someone intends to build, who is building it and when, and it records progress until the work is finished. It is written before the code, often in a hurry, and it leans on context that lives elsewhere: a conversation, a design, a call with a customer. For planning, assigning and tracking, that is exactly what a team needs.
The trouble starts when the pile of tickets becomes the only description of the product. Nobody decided that. It happens because tickets are what exists.
Where a closed ticket stops being true
In March a ticket says “A workspace can invite up to 5 teammates”. It is built, tested and closed. In June a developer tidies the team settings under a ticket called “Refactor team settings”, and the limit moves to 10. Nothing in that ticket mentions limits. Now the March ticket says 5, the June ticket says nothing, and the product lets a workspace invite 8 people. Which ticket describes the product?
None of them does. This is not a failure of discipline. It is what tickets are: records of work, each true at the moment it was written.
Five ways tickets fall short as a specification
- They are a point in time. A ticket describes the plan on the day it was written. The product keeps changing after it closes.
- They are scattered. One behaviour is spread across many tickets, and one ticket mixes several behaviours. There is no single place to read how discounts work.
- They are written for the builder. They assume the context of the team that wrote them, which a new engineer, a tester or a salesperson does not have.
- They say “done”, not “this is what shipped”. A closed ticket records that work finished. The code may differ from what it describes.
- Some changes have no ticket. Quick fixes, cleanups and work done by agents often arrive without one, or with a ticket opened afterwards to leave a record.
A ticket and a specification answer different questions
A ticket
- Written before the work
- About one change
- Closed when the work is done
Answers: what did we plan?
A specification
- Describes the product as it is
- Organised by epic and feature
- Stays current as the code changes
Answers: what does the product do?
What a specification adds
A specification is one place, in plain language, where each feature is described by what it does: its requirements and acceptance criteria, including the edge cases. Beside each statement, small marks show the code behind it and the tests that cover it, so the document can be checked and not only read. When a change alters what the product does, the requirement’s history records the pull request, who decided and when.
SpecTrail writes this document from the code, which is the one thing that is always true, and compares each merged change with it. Nobody has to maintain it by hand.
Keep your tickets
Nothing here asks a team to stop using Jira. Tickets keep planning, assigning and tracking the work. The two meet at the point of decision: when SpecTrail flags a change that should not have happened, a person denies it and opens a ticket to fix the code, and when a change is intended, they accept it and the specification is updated. The ticket tracks the work, and the specification stays true to the product.
Related: SpecTrail and Jira: two different jobs · requirements for medical software · how a small startup keeps track of its product