A2.03 · Decomposition
I N V E S T
Six yes/no tests a user story passes before it is handed to the Author. One No is not a defect — it names the repair.
Independent, Negotiable, Valuable, Estimable, Small, Testable. INVEST is a readiness gate read before a rung is built: a story that fails Small cannot fit one turn, and one that fails Testable cannot be accepted. Switch the story on the right to score it against the six. Three dives follow: the six tests, the four story smells, and the tension between Small and Independent.
Score a Portal story against the six · switch the story
Six tests, read one at a time
A story is the unit of work the Operator hands the Author. INVEST — Independent, Negotiable, Valuable, Estimable, Small, Testable — is the checklist that says when a story is ready to hand over. Each letter is a separate yes/no question; a story is ready only when all six answer Yes.
The order of reading matters less than the discipline of reading each one. A story that fails S cannot fit one rung, so it cannot be specified or built in a single turn. A story that fails T has no concrete confirmation of done, so it cannot be accepted. An agent handed an unestimable, untestable instruction produces work no one can demonstrate. INVEST is read before any code is generated, because it is cheaper to repair a sentence than to unwind a rung.
A story is ready only when six independent tests all answer Yes. A single No is not a defect — it names the repair, before the rung is built.
“Enrol in a course” passes all six and ships in one rung. “Manage the whole catalogue” fails Small and Estimable, so it is split into the ladder before it is handed over.
INVEST is a readiness gate, not a grade: six yes/no tests, read before the rung, and the first No names the repair.
The three dives
Each dive takes one move, in the arc score → diagnose → resolve the tension: score a story against the six, diagnose the four recurring smells when a story fails, and resolve the one tension inside INVEST itself — Small pulling against Independent. Read them in order — A2.03.1 starts.
The six tests
Each letter as a yes/no question, and an interactive scorecard that scores a Portal story against the six and reports the pass count and the first failing letter.
Story smells
The four recurring smells — too big, untestable, coupled, purely technical. Diagnose one, read off the INVEST letters it fails, and rewrite it.
Small and independent
The tension between Small and Independent; estimability follows from smallness; splitting along value resolves a story that fails S without breaking I.
After A2.03, the next module — A2.04 · Acceptance criteria with Given/When/Then — pins a story down with concrete examples of the behaviour that proves it done. Return to the A2 module navigation to continue.
References
The checklist's origin and the story-writing tradition it sits in, and where it connects in the course.
Sources
- Wake, B. — INVEST in Good Stories, and SMART Tasks — the original six-letter checklist.
- Cohn, M. — User Stories Applied — what makes a story good, and how to keep it small.
- Beck, K. — Extreme Programming Explained — stories and the customer's definition of done.
Related in this course
- A2.03.1 · The six tests
- A2.03.2 · Story smells
- A2.03.3 · Small and independent
- A1.04 · Two layers: roadmap and specs — the spec layer a story feeds.
- A2 · Decomposition — the chapter.
- Companion · Functional Programming in Elixir — the Portal's internals.