compass story: add a 'done' verb to close a story
Table of Contents
This page is a capture in the inbox bucket of the product backlog — a pre-sprint idea, not yet pulled into a sprint as a story.
What
compass task exposes new, start, done, and move, but
compass story only exposes new, status, and tasks. There is no
compass story done. Closing a story today is a manual edit: flip the
State row in the story's * Status table to DONE, set Now/Waiting
on/Next to "Nothing.", bump Last touched, and (if the workflow wants
it) stamp the journal. This is exactly the kind of bookkeeping the
task done verb already automates one level down.
Add compass story done <story> mirroring task done:
- flip the story's
* StatusStatetoDONE(and the#+todo:keyword if it lives in frontmatter); - normalise
Now/Waiting on/Nextto "Nothing." and stampLast touched; - guard: refuse (or warn) if any child task is still open — i.e. not
in
DONE/ABANDONED/ moved out — so a story cannot be closed with live tasks under it; - stamp the per-worktree journal, as
task donedoes.
Why
Story close-out is currently hand-done and therefore easy to get subtly
wrong (a forgotten Last touched, a Now left stale, a child task
quietly still BACKLOG). The asymmetry with task done is a small but
real DX gap: the lifecycle verb exists for tasks and for PRs (pr
merge) but stops short of the story. The guard on open child tasks is
the part that earns its keep — it turns "did I close everything under
this?" from a manual audit into a tool invariant.
Surfaced while closing story 812403BE (Create MASD model catalogues and org-mode variability profiles), where the close had to be done by hand.
References
projects/ores.compass/— the compass CLI implementingtask done;storysubcommands are defined alongside it.