INVEST
Independent, Negotiable, Valuable, Estimable, Small, Testable. The compact 2003 sanity check that still catches more bad stories than any longer checklist. Testable is the letter teams fail most.
Reactions on activity feed posts
Blocked on: NOTIF-44 (notification refactor) and FEED-09 (feed real-time refresh).
Reactions on activity feed posts
Reactions update on next page reload; the real-time refresh is a separate story (FEED-15) that can ship later.
Two hard blocks make this story a coordination problem before it is a delivery problem. If either dependency slips, the value never lands. Independence means: redesign the slice so something useful can ship now.
Independence is about being shippable on its own. The right story decouples the user-visible behavior from the realtime work, so it can land first. The realtime polish becomes its own story to prioritize separately.
New users finish onboarding faster
New users finish onboarding in fewer than three minutes
When the description specifies the library, the steps to remove, and the staging shortcut, the team is just executing. They will hit a constraint the author missed and either ship a worse solution or escalate every variation.
The team owns the implementation. The story sets the outcome (under three minutes) and lets engineering pick which steps to drop, which library to use, and what the tradeoff with verification looks like.
Refactor the metrics pipeline to use the new client library
On-call engineers see metrics within 30 seconds of an incident
EOL deadlines are real. They are also a Task: the work has no user-facing value. Wrapping plumbing in story language is fine if you can name the value. If the only beneficiary is the future maintenance budget, file it as a Task.
INVEST's V (Valuable) is the lever that distinguishes story from task. The right ticket names the on-call engineer and the cost they pay today (waiting four minutes at 2 a.m.). That defends the work to anyone who asks why now.
Schedulers manage recurring shifts across multiple locations
Schedulers create a weekly recurring shift for one location
Six features inside one story will not fit in a sprint and cannot be cleanly decomposed mid-sprint. Splitting before pulling is cheaper than splitting in flight.
Small means it fits in a sprint. The right story carves out the simplest end-to-end slice and explicitly defers the variations. Each deferred slice is a separate story product can prioritize on its own merits.
Dashboard loads faster
Sales reps see today's pipeline within 1 second on the dashboard
'Snappier', 'not frustrated', 'improved' are vibes. They cannot be verified without the engineer in the room, which means they will be argued about in retro and never re-tested when the next change ships.
Testable is the letter teams fail most. The right side gives observable thresholds (p75 under 1s, p99 under 2s) on a defined dataset. QA can verify it without asking the engineer how it feels.
Sync customer data with the partner CRM
Customer email changes propagate to the partner CRM
Open-ended scope ('handle conflicts', 'support partial failures', 'work for both push and pull') is what a 13-pointer or a spike looks like. Estimating it produces a wide spread and a wrong number.
Three engineers can roughly agree on the right side. The scope is one field, two paths, and a defined failure mode. The left side is a research project hidden inside a story.
Single sign-on
Add SSO. Should work everywhere. Use whatever provider makes sense.
Enterprise admins sign in with Okta SAML
Vague scope, vibe acceptance criteria, and a 13 in the points field: left fails three letters at once. Not Estimable, not Small, not Testable. The story is a wish dressed up.
Independent (does not block other auth flows), Negotiable (the team picks the SAML library), Valuable (named admin, named cost), Estimable (one provider, scoped acceptance), Small (fits a sprint), Testable (Given/When/Then). Six for six.