jonnifyagile agents
jonnify / Agile Agent Workflow / A2 · Decomposition / A2.05 / A2.05.1 · When to split

A2.05 · Splitting · dive 1

The signal to split

A split is a repair, and like every repair it has a trigger. The trigger is a story that fails Small or Estimable.

INVEST is read before a rung is built. A No on Small or Estimable means the story is too big for one turn, so it cannot be specified or accepted as one — that No is the signal to split. Switch the story on the right to score it against the two letters that name a too-big story. A too-big story usually hides a third symptom, which the next view counts.

Score the story against Small and Estimable · switch the story

S Small fits one rung? PASS E Estimable cost a fair guess? PASS both pass → hand over · either fails → the signal to split
enrol in a course — Small: pass, Estimable: pass. Fits one rung; hand over.

The failing letter is the trigger

A story is the unit of work the Operator hands the Author, and INVEST (A2.03) is the gate read before it is handed over. Of the six letters, two name a story that is too big. Small asks whether the story fits one rung — one turn of the loop, small enough to specify, build, and demo in a single pass. Estimable asks whether its cost is a guess anyone can make. A No on either is not a defect in the wording; it is a statement about size, and the repair for size is a split.

Reading the signal early is the whole point. A story over the one-rung budget cannot be specified once, so it cannot be accepted once: handed to the Author as written, it produces a sprawl no one can demonstrate against a single criterion. Splitting it first is cheaper than unwinding a rung later. The trigger is read off the gate, not guessed: when Small or Estimable answers No, the story is split before any code is generated.

the signal
A No on Small or Estimable. The story is too big for one rung; split it before handing over.
Small
Fits one turn of the loop — specifiable, buildable, and demoable in a single pass.
Estimable
Its cost is a fair guess. A story too big to size is too big to plan; size is what makes the estimate a shot in the dark.
repair
Not a shorter sentence — a split into several stories that each pass Small and Estimable and each still ship value.

Small and Estimable move together: a story that fails one usually fails the other, because its size is the single cause of both (the A2.03.3 tie — Estimable follows from Small).

A too-big story hides several behaviours

The hero scores the signal; this view shows its cause. A too-big story is almost always one verb — “manage”, “handle”, “support” — standing in for several distinct behaviours. Each hidden behaviour is a story in its own right, and the count of them is the count of slices the split will produce. That is why the story is unestimable: its cost is the sum of several guesses, and a sum of guesses is still a guess.

Reveal the behaviours bundled inside one Portal story, one row at a time, and watch the count cross the one-rung budget. The moment more than one behaviour is in the story, Small fails — and the number of rows is the number of rungs the split yields. The failing letter does not only flag the problem; it sizes the solution.

Reveal the hidden behaviours · watch the count cross one rung

4
manage the whole catalogue → hidden behaviours one-rung budget browse a course add a course edit a course remove a course S Small: FAIL split into 4
manage the whole catalogue bundles 4 behaviours behind one verb. 4 > 1 rung — Small fails, split into 4. The failing letter named the repair.

A too-big story is one verb hiding several behaviours; the count of them is the number of rungs the split yields.

The signal on the Portal

On the Portal — the learning platform this course builds — “manage the whole catalogue” fails Small and Estimable. Read the verb: “manage” hides four behaviours — browse, add, edit, and remove a course. The double failure (S and E) and the four hidden behaviours are the same fact seen twice: the story is unestimable precisely because its cost is the sum of four guesses. Contrast “enrol in a course”, which carries one behaviour, passes both letters, and ships as one rung.

The signal is never “the identifiers are missing.” The ids the rungs rest on are already minted — Portal.ID.generate/1 hands back a typed id, and Portal.ID.decode/1 reads its .type back — so nothing blocks a small story from shipping. What blocks a too-big one is its size, read off Small and Estimable before a line is generated. The how of the cut is the next dive; the signal is here.

# Read INVEST before handing the story to the Author.
# "enrol in a course"           → Small: pass · Estimable: pass → 1 rung, hand over
# "manage the whole catalogue"  → Small: FAIL · Estimable: FAIL → the signal to split

# "manage" hides four behaviours — the failing letter sizes the split:
#   browse → add → edit → remove a course      (split into 4)

id = Portal.ID.generate(:course)        # ids are already minted — size, not identity, is the blocker
assert Portal.ID.decode(id).type == :course

The principle

A story too big for one rung fails Small and Estimable; the failing letter is the trigger to split, and the behaviours it hides are the slice count.

On the Portal

“Manage the whole catalogue” fails S and E because “manage” hides browse, add, edit, and remove; the split produces four rungs. “Enrol” carries one and ships as is.

The signal to split is an INVEST No on Small or Estimable — read before any code, sizing the split by the behaviours the story hides.

Recap — read the signal, size the split

A split is a repair triggered by a failing letter: a No on Small or Estimable says the story is too big for one rung. The two move together because size is their common cause, and that size shows up as a bundle of behaviours hidden behind one verb. The count of those behaviours is the count of rungs the split will yield, so the failing letter both flags the problem and sizes the solution. On the Portal, “manage the whole catalogue” fails both letters and hides four behaviours; “enrol” passes and ships. With the signal read, the next dive makes the cut.

Next in A2.05: A2.05.2 · Split patterns — the four vertical seams, by workflow step, business rule, happy and sad path, and operation, that turn the signal into the cut.

References

The sources behind the too-big signal and the readiness gate it sits in, and where it connects in the course.

Sources

Related in this course