jonnifyagile agents
jonnify / Agile Agent Workflow / A2 · Decomposition / A2.03 / A2.03.1 · The six tests

A2.03 · INVEST · dive 1

The six tests

INVEST reads as one word, but it is six independent yes/no questions. Asking them one at a time turns “not ready” into a precise verdict.

A story that answers Yes to all six is ready to hand to the Author; one No is a repair order, not a rejection. Switch the story on the right to score it against the six and read the pass count and the first failing letter.

Score a Portal story against the six · switch the story

I N V E S T Indep. Negot. Valuable Estim. Small Test. lit = passes the test · dim = fails it
enrol in a course — passes 6 / 6. Ready to hand to the Author.

Six questions, one at a time

INVEST is one word, but reading it as one judgement loses its value. It is six separate questions, and a story is ready only when all six answer Yes:

Independent
Can this be built and shipped without first finishing another story?
Negotiable
Is the detail still open to a conversation, not frozen into a contract?
Valuable
Does it change what a user can do, demonstrably?
Estimable
Can the cost be guessed with any confidence?
Small
Does it fit one rung — one build-and-demo turn?
Testable
Is there a concrete way to confirm it is done?

The first No is the most useful output. A story that fails Small cannot be specified for one turn; one that fails Testable cannot be accepted. Reading the six in order finds the repair before the rung is built.

Each letter is a separate gate

The scorecard frames the whole verdict at once. This view proves the consequence underneath it: each letter is an independent gate, so a story can pass five and still be blocked by the sixth. Pick a letter to read its yes/no question, the Portal story that cleanly passes it, and the one that cleanly fails it.

Reading letter by letter is what keeps the repair precise. “Not ready” is a feeling; “fails Small” is an instruction. The inspector shows that the same Portal story can be a clean pass on one letter and the textbook failure on another — the letters do not move together.

Inspect one letter · its question, a pass, a fail

I Independent Can it be built and shipped without finishing another story? PASS open a lesson needs only an existing lesson id — waits on nothing FAIL manage the whole catalogue spans many features that depend on one another
I — Independent: can it be built and shipped without finishing another story? PASS: open a lesson (waits on nothing). FAIL: manage the whole catalogue (its parts depend on one another).

Six gates, read one at a time: a story can pass five and still be stopped by the sixth, and the one it fails is the repair.

The six tests on the Portal

On the Portal — the learning platform this course builds — take the story “enrol in a course”. Read the six in order. Independent: it needs only a course id and a learner id, both already minted by Portal.ID.generate/1. Negotiable: the confirmation copy and the duplicate-enrol rule are still open. Valuable: the learner gains access they did not have. Estimable: one stored event plus a read check, a guessable cost. Small: one rung, one turn. Testable: after enrol, the learner's enrolment list contains the course. Six of six.

Now read “manage the whole catalogue”. Independent fails — its parts depend on one another. Estimable fails — no one can put a number on months of work. Small fails — it is not one rung. Three letters fail at once, because size drags the others down. The story is not wrong; it is not yet a story, and the first failing letter says to split it.

# Score "enrol in a course" — read the six in order.
#   I  independent  — needs a course id + a learner id, both already minted
#   N  negotiable   — confirmation copy and duplicate rule still open
#   V  valuable     — the learner gains access they did not have
#   E  estimable    — one stored event + a read check
#   S  small        — one rung, one turn
#   T  testable     — after enrol, the enrolment list contains the course
course_id = Portal.ID.generate(:course)   # => "CRS0Nb...", the ids the story rests on
# 6 / 6 — ready to hand to the Author.

# "manage the whole catalogue" — I, E, S all fail. Not yet a story; split it (A2.05).

The principle

Read the six tests one at a time; the first No is the most useful output, because it names the repair before the rung is built.

On the Portal

“Enrol in a course” scores 6/6 and is built; “manage the whole catalogue” fails I, E, and S, so the first No sends it back to be split.

A story ready to hand over passes all six; one that fails any letter is told, by that letter, what to repair.

Recap — six questions, one verdict

INVEST is six independent yes/no questions, read before a rung is built. A story that answers Yes to all six is ready to hand to the Author; one No is a repair order that names what to fix. Each letter is a separate gate, so a story can pass five and be stopped by the sixth. The next dive turns this scorecard into a diagnostic: when a story fails, it fails in one of a few recurring ways — a smell — and the smell names the letters and the rewrite.

Next in A2.03: A2.03.2 · Story smells — the four recurring ways a story fails, and how to diagnose and rewrite each.

References

The checklist's source and the story tradition behind it, and where it connects in the course.

Sources

Related in this course