How to write a chapter (a sub-task of a story)
- steps
- 7
- named failure modes
- 5
- definition-of-done criteria
- 6
How to write a chapter (a sub-task of a story), in one paragraph
A chapter is the fourth and optional level of the breakdown: a sub-task a developer creates mid-build, once a story turns out to be bigger than refinement thought. It carries no currency value, no product approval and no user-visible slice, because the story above it holds all three. A good chapter names one technical deliverable, is reviewable on its own, takes under two days, and leaves the story's acceptance criteria untouched. Chapters exist so a big story stays visible and reviewable, not so a big story stays hidden.
That is the procedure. The call is where it meets your delivery structure.
Talk it throughWhat these are. The delivery operating model our engagements install alongside client teams: the method underneath the agentic work rather than the agentic work itself, published in full and free to use. It is written for the person running a quarter, not for a buyer, so if you are evaluating us, read the five priced engagements or the case studies instead.
Use this the moment you are mid-build on a story and realise it will not finish in one clean pass. If you are reaching for chapters before development has started, you have a sizing problem in refinement, not a chapter.
- Time to run it once
- About an hour, mid-build
- What you need
- The delivery tracker
- The parent story's feature flag
If you do not have those in place, the call is a good place to work out what comes first.
Talk it throughOn this page
Step by step
Each step is deep-linkable, so you can send a colleague the one that is in dispute.
- 1
Run the two-question test before writing it
Question one: if this shipped alone, could a user do something new?
If yes it is a story, product owns it, take it back. Question two: do the parent story's acceptance criteria fail without it? If they pass regardless, it is not a chapter, it is tech debt or a bug, and it links to the quarter's Tech Debt or Bug Budget epic. Only work that is invisible to the user and required for the story to pass is a chapter. A migration, an idempotency key, a flag wiring change: chapters. A new screen, a new field, a new email: stories, however small.
- 2
Split at the keyboard, not in refinement
Create chapters when the code has told you something refinement could not: a service returns stale data, a migration has to run before the endpoint changes, a dependency needs versioning first. If you can list the chapters before anyone opens the editor, you have not found chapters, you have found a story that is too big. Take it back, split it into stories that each change something a user can see, and get product approval on each one. Chapters written in advance become a private backlog nobody outside the team ever reads.
- 3
Cut along seams, cap the count at four
Split where the system already has a joint: a schema change, a service boundary, a contract between two components, a feature flag.
Each chapter should merge on its own behind the parent's flag, so one pull request is one chapter and a colleague can judge it without waiting for the next. Half a day to two days each. If a chapter will not fit in two days, do not nest another level, because there is no level below chapter. Move the seam instead. If you need more than about four, the story was several stories and belongs back with product.
- 4
Write five fields and stop
Title: a verb plus the thing, for example "Make the renewal accept endpoint idempotent".
Parent story: one link, nothing else. What changes: the files, services or tables affected. How you will know: the test or check that proves it, an engineering check rather than a product criterion. Out of scope: the neighbouring work you are deliberately not doing here. Under two hundred words in total. Never name a chapter "Part 1 of 3", and never split by backend and frontend out of reflex: neither tells a reader what is left, and neither half can be reviewed alone.
- 5
Sequence by dependency, keep one in progress
Order chapters by what unblocks what, and put schema and contract changes first so the later ones build on a settled shape.
Keep exactly one in progress. Three chapters running in parallel across two developers finishes the story later than one developer taking them in order, because the merges fight each other and the review queue backs up. Chapters run the same phases as everything else: todo, in progress, in review, done. If a later chapter turns out to be unnecessary once the earlier ones land, close it with the reason rather than deleting it.
- 6
Close chapters on engineering, the story on product
A chapter is done when its own check passes and a human has reviewed the change.
That is the whole bar: no currency figure, no product approval, no acceptance criteria of its own, because the epic already carries the value and the story already carries the criteria. Copying either downwards double-counts the value and gives you two competing versions of done. The story moves to in review only once every chapter is closed and its acceptance criteria are demonstrated end to end, not inferred from three green chapters. Chapters do not release, and value monitoring is for epics.
- 7
Take the split to refinement, not the points
Refinement re-points work whose understanding has shifted, but not a story already in flight: that story keeps the size it started with, so cycle time stays honest and your p50 and p85 forecasts keep meaning something. Bring the split to the next fortnightly refinement instead and say two things: what the story looked like going in, and what it turned out to contain. Two or three of these a quarter is normal. The same shape every fortnight, always around the same service or the same kind of change, is a sizing signal to act on.
Bring a real piece of work to the call and we will walk it through these.
Talk it throughSplitting a renewal story at Coastal Mutual, an invented insurer
Coastal Mutual and its numbers are invented. The outcome is "Cut renewal churn", targeted at £1.4m of retained annual premium across two quarters. Under it sits this quarter's epic, "One-click renewal in the customer portal", carrying a planned £420k of that target. Under the epic sits a story: "A renewing customer can accept their quote in one click from the renewal email." The epic has product and engineering approval, the story is product-approved, and it was sized at five points and expected to take two days. On day two the developer finds two things refinement could not have known. The quote service returns a stale premium when the policy had a mid-term adjustment in the previous 24 hours, and the accept endpoint has no idempotency, so a double-click creates two policies. Neither changes what the user sees, so this stays one story and gets three chapters. One: recalculate the premium at accept time when a mid-term adjustment exists in the last 24 hours. Check: an integration test with an adjustment timestamped three hours ago returns the adjusted figure. Half a day. Two: make the accept endpoint idempotent on a request key. Check: two identical accepts 200 milliseconds apart create one policy. One day. Three: build the accept flow in the portal and the link in the email. Check: the journey works end to end behind the renewal-v2 flag. One day. They run in that order, one at a time, one pull request each. Two things did not become chapters. An SMS renewal reminder is user-visible, so it becomes a new story under the same epic and product decides whether it belongs this quarter. Moving the quote service off its deprecated pricing provider is not needed for the story's criteria to pass, so it is raised against the quarter's Tech Debt epic. The story keeps its five points. At the next refinement the developer reports it in one line: sized for two days, contained a stale-premium path and a missing idempotency key, took four.
Yours will look different. Thirty minutes is enough to see how.
Talk it throughWhere this goes wrong
- 01
Writing the chapters at refinement, before anyone has opened the code.
It reads as diligence and it is a sizing failure in disguise: work that is knowable in advance belongs in stories product can see and approve, not in sub-tasks only the team reads.
- 02
Burying a refactor or a defect as a chapter because raising it properly takes longer.
The Tech Debt and Bug Budget epics exist so the quarter's burn rate is visible, and every item hidden under a story makes that number a lie.
- 03
Giving a chapter a currency value or its own product acceptance.
Both double-count: the epic already holds the planned share of the outcome, the story already holds the criteria, and a chapter carrying a number appears twice when somebody sums the quarter.
- 04
Re-pointing the parent story once the chapters appear, so the burn-down looks tidier.
It corrupts the only throughput data you have, and the p50 and p85 forecasts built on it get quietly worse while the board looks better.
- 05
Naming chapters "Part 1 of 3", or splitting by backend and frontend out of habit.
Nobody reading the board can tell what is left, and the reviewer cannot judge one half without the other, which removes the reason for splitting at all.
Done means
- Every chapter names one technical deliverable, links to exactly one story, and merges on its own behind the parent's flag.
- No chapter carries a currency value, a product approval or an acceptance criterion of its own.
- The chapters together cover the parent story's acceptance criteria, and anything outside them was raised against the quarter's Tech Debt or Bug Budget epic.
- Each chapter is under two days, only one is in progress at a time, and there are no more than about four.
- The story moved to in review only after every chapter closed and its criteria were demonstrated end to end.
- The split was raised at the next refinement and the parent story's original size was left unchanged.
If you recognise one of those already happening, that is a good call to have.
Talk it throughThis is an AI-augmented practice. AI-native teams run two levels, so there is no story to split and no chapter to write: the outcome ticket is the unit of work. If you are directing a model and feel the urge to decompose, the ticket is thin rather than the work being big, and the fix is upstream. Something is missing from it, usually a key user journey or a test requirement. Add that, hand the ticket over whole again, and do not invent a sub-level the mode does not have.
The two delivery modes, side by side →Which mode your team is actually in is the first thing we establish on a call.
Talk it throughWhere this sits in a programme
The procedure is the same whatever you are building. These cover what it runs into when the thing being built is agentic.
If you want this run inside a programme rather than read, that is the conversation.
Talk it throughMore on writing the work
These guides are written to be read in order.
03How to write a bug report
A bug is a defect in something already shipped. If it is a missed requirement, it is a story, call it what it is.
How to write a user story
A good story is small enough to build in a sprint, specific enough to test, and honest about the assumptions it carries.
How to write a risk or issue in a RAID log
A risk might hurt delivery. An issue is hurting delivery right now. The RAID log is where both live.
Or skip ahead and ask which of these your team needs first.
Talk it throughWant help installing this?
These guides are free and you owe us nothing for using them. If you would rather have operators install the operating model alongside your teams and stay until it sticks, that is what our engagements do.
most start with a fixed-price AI Readiness Audit · £44,000 · 4 weeks · working prototypes
Calendar not loading? Open it on cal.com or email hello@tenhaw.com.
Questions
Can a chapter have chapters of its own?
No. Chapters are the last level. A chapter you cannot finish in two days is telling you the seam is in the wrong place, or that the parent should have been more than one story. Move the seam first, and if that does not work, stop and take the story back to product rather than inventing a level below.
Do chapters get story points?
No. Points stay on the parent story, and that story keeps the size it was given before the build started. Size chapters in days, for sequencing only, and never sum those days back onto the story. The moment chapter sizes feed your velocity, the throughput data that produces your p50 and p85 stops being comparable across quarters.
Does product need to approve chapters?
No. The developer creates and closes them, and they should still be visible on the board so the chain from chapter to story to epic to outcome holds. If product is being asked to make a call on a chapter, whatever is under discussion is user-visible and should have been raised as a story.
What if a chapter turns out to be user-visible after all?
Convert it. Raise it as a story under the same epic, get product approval, and let product decide whether it belongs in this quarter or the next. Do not ship a user-visible change under a chapter because the branch and the flag happen to be there already, which is exactly how work disappears from the board product reads.
What is a chapter in The Tenhaw Way?
A chapter is The Tenhaw Way's name for a sub-task, the fourth and optional level of the breakdown, below the outcome, the epic and the story. A developer creates chapters mid-build, once a story turns out to be bigger than refinement thought. A chapter carries no currency value, no product approval and no user-visible slice, because the story above it holds all three. A good one names one technical deliverable, merges on its own behind the parent story's flag, and takes half a day to two days, about four per story at most. Chapters exist so a big story stays visible and reviewable, not so it stays hidden. Tenhaw publishes the whole method, these rules included, free to adopt without hiring us.
How do you split a story that turns out to be bigger than estimated?
Split it mid-build along the system's existing seams: a schema change, a service boundary, a contract between two components, a feature flag. Each sub-task should name one technical deliverable, merge on its own behind the parent story's flag, and take between half a day and two days, with no more than about four in total. Do not nest a level below; if a piece will not fit in two days, move the seam instead. And keep the split invisible to the user. Anything a user could see when shipped alone is a new story that needs product approval, not a sub-task.
What is the difference between a sub-task and a story?
A story changes something a user can see and needs product approval; a sub-task is invisible to the user and exists only so the story's acceptance criteria can pass. Two questions settle it. If the work shipped alone, could a user do something new? If yes it is a story. A new screen, a new field or a new email all qualify, however small. Do the parent story's acceptance criteria fail without it? If they pass regardless, it is not a sub-task either, it is tech debt or a bug and belongs against those budget epics. A genuine sub-task, like a migration or an idempotency key, is invisible to the user and something the criteria cannot pass without.
Should sub-tasks be created during planning or during development?
During development. Create sub-tasks when the code has told you something planning could not: a service returns stale data, a migration has to run before an endpoint changes, a dependency needs versioning first. If you can list the sub-tasks before anyone opens the editor, you have not found sub-tasks, you have found a story that is too big. Take it back, split it into stories that each change something a user can see, and get product approval on each one. Sub-tasks written in advance read as diligence, but they are a sizing failure in disguise, and they become a private backlog nobody outside the team ever reads.
Should developers work on sub-tasks in parallel or in sequence?
In sequence, with exactly one in progress at a time. Order them by what unblocks what, putting schema and contract changes first so later work builds on a settled shape. Three sub-tasks running in parallel across two developers finishes the story later than one developer taking them in order, because the merges fight each other and the review queue backs up. Each sub-task should be one pull request that merges on its own behind the parent story's flag, so a colleague can review it without waiting for the next. If a later one becomes unnecessary once earlier work lands, close it with the reason rather than deleting it.
Should a refactor found mid-build be a sub-task of the story?
Only if the story's acceptance criteria fail without it. A genuine sub-task is work the story cannot pass without, and that is the whole test. A refactor the criteria do not depend on belongs against the quarter's Tech Debt epic instead, raised properly rather than buried under a story because raising it takes longer. Those budget epics exist so the quarter's burn rate stays visible, and every item hidden under a story makes that number a lie. Defects you trip over mid-build follow the same rule. If the story's criteria pass regardless, they are raised against the Bug Budget epic, not slipped in as a sub-task.
Is it OK to split a ticket into backend and frontend sub-tasks?
No, and it is the split that most often defeats the point of splitting. Backend and frontend are two halves of one change. The reviewer cannot judge either half without the other, and nobody reading the board can tell what is actually left. A sub-task has to stand up on its own, one pull request that merges behind the parent story's flag, so cut at a joint the system already has instead. Names like Part 1 of 3 fail the same test, because they describe the order somebody happened to work in rather than what the work is.
What should a sub-task ticket actually contain?
Five fields, and stop, in under two hundred words in total. A title that is a verb plus the thing, such as Make the renewal accept endpoint idempotent. One link to the parent story, nothing else. What changes: the files, services or tables affected. How you will know: the test or check that proves it, an engineering check rather than a product criterion. And out of scope: the neighbouring work you are deliberately not doing here. Anything beyond that is either restating the story above it or hiding a second sub-task inside this one.
Is splitting a story mid-sprint just extra admin?
It costs about an hour, once, on the story that surprised you. Four sub-tasks at most, five short fields each, under two hundred words in total, written at the keyboard by the developer who found the problem. Tenhaw's engineers work that way on client delivery, against a published standard of 72 rules written to be enforced by an agent. Set that against the alternative, where a story sized at two days quietly takes four, one large pull request lands at the end, and until it does nobody outside the team can see what is left or review any of it in pieces. The admin is not the split. It is what you pay when a big story stays hidden instead of staying visible and reviewable.
Is a story finished once all its sub-tasks are closed?
No. A sub-task closes on engineering when its own check passes and a human has reviewed the change. The story moves to in review only once every sub-task is closed and its acceptance criteria are demonstrated end to end, not inferred from three green sub-tasks in a row. That gap is where defects live, because each piece was verified against its own technical check and never against what the user was actually promised. Sub-tasks do not release either, and value monitoring stays at epic level, where the currency target sits.
How often is it normal for a story to split mid-build?
Two or three times a quarter is normal, and it deserves one line at the next fortnightly refinement rather than a post-mortem, covering what the story looked like going in and what it turned out to contain. The pattern is what matters. The same shape every fortnight, always around the same service or the same kind of change, is a sizing signal to act on. Tenhaw watches that rate on client delivery, the same attention to flow that cut delivery lead times by 60% within six months at Globelynx. At that refinement, resist re-pointing a story already in flight to tidy the burn-down, because it corrupts the throughput history your p50 and p85 forecasts are built on.
Why can't a sub-task carry its own value target?
Because the value is already held above it, and putting a number on the sub-task counts it twice. Tenhaw reports the money at outcome and epic level for the same reason. The epic carries the planned share of the outcome in currency and the story carries the acceptance criteria, so a sub-task with its own figure appears a second time when somebody sums the quarter, and the roadmap starts claiming more value than the outcome was ever priced at. Giving one its own product acceptance does the same damage in a different direction. You end up with two competing versions of done, and a developer choosing between them mid-build.
How do we introduce sub-tasks to a team that doesn't use them?
Do not roll them out as a process. A sub-task is what a developer writes at the keyboard, once the code has told them something refinement could not, so the habits matter more than the tooling: create one only mid-build; cap them at about four per story, half a day to two days each; keep exactly one in progress; give each five fields and no currency value; and report the split in a line at the next refinement without re-pointing a story already in flight. Tenhaw calls them chapters and passes habits like these on by pairing with a client's own engineers. The name matters less than the rules. Run it for a quarter and your real sizing problems surface on their own.
Should you split a ticket before handing it to an AI coding agent?
No. An AI-native team, where the model builds and the developer directs and verifies, runs two levels, so there is nothing to split. The outcome ticket is the unit of work and it goes over whole. If you feel the urge to decompose it, read that as a signal about the ticket rather than about the size of the work. It is usually thin, missing a key user journey or a test requirement, and the fix is upstream. Add what is missing, hand the ticket over again, and do not invent a sub-level the mode does not have. Tenhaw staffs that mode as an Agentic Build Team of three practitioners under partner oversight, with James Rooney on every engagement.