done verb — close a ticket from CLI/pagerClosing a ticket today is manual (edit the header, delist the bullets) or the todo/mark-done.sh sweep. Wanted: a done mutation verb so be done BE-012 / pager :done BE-012 closes the ticket in one move — header marked [DONE], the key's bullet delisted from the parent READMEs (the curated-open convention of BE-038). Once typable, the [done] button in :todo rows is just a hidden O done KEY spell (Nav) — that splice waits on BE-038 landing. Requested by gritzko 2026-07-10.
todo/mark-done.sh, header-grep per BE-038): flip the page header to # KEY [DONE]: title handling the three forms KEY [MARK]: / KEY: [MARK] / KEY: title; [DONE]/[WONTFIX] pages are left alone; odd headers are reported, skipped.^\s*-\s+\[?KEY\b); so closing must ALSO delist that bullet, per /meta/todo "closed tickets must be delisted from parents" — topic todo/TOPIC/README.mkd and the board todo/README.mkd.discover.todoRoot() probes $TODO_ROOT → current wt → launch wt → hive meta root; shared/ticket.js maps KEY → page (thin TOPIC/KEY.{mkd,md,txt}, fat TOPIC/KEY/README.*).:done KEY spell; O click-targets are verb args spells followed token-precisely (views/bro/pager.js _uriAt), and BACK re-runs the popped view's spell, so the :todo board refreshes after a done.be done TICKET-123 (CLI) and :done TICKET-123 (pager): mark the page header [DONE], delist the key's bullet from the topic README and the board README, emit ONE confirmation row (key + title).[DONE]/[WONTFIX] → one "already closed" row, no edits; no page → done: KEY: TODONONE one line (BE-003 spirit); odd header → report, skip, no edit.done BE-012 BE-014 loops per key, one row each.$TODO_ROOT, never the live journal board; repro-first (red → green), the suite stays at baseline, no other tests edited.<todoRoot>/todo/ — resolve pages via the shared helpers, no path concat escapes (BE-011 class).[done] O-button splice into views/todo/todo.js rows is IN SCOPE but BLOCKED until BE-038 lands (todo.js sits unlanded in wt work/BE-038).verbs/done/done.js exporting command(context_uri, args...); keys routed by shape [A-Z][A-Z0-9]*-[0-9]+, anything else is one TODONONE-style error line.:done pushes its confirmation view; BACK re-runs the board spell, so the closed ticket drops out — in-place refresh after mutating O-buttons is a separate BRO-015-kin ruling, not this ticket.[MED]…) while open, [OPEN] iff no priority, [DONE]/[WONTFIX] closed; [OPEN] [MED] is redundant but in the wild, so done collapses the whole leading mark-run to one [DONE].io.log — invisible in the pager, which answered no hunks; skips must emit a visible row.test/done/close/run.sh): 3 header forms, fat/thin, already-closed zero-edit cmp, TODONONE miss, delist both READMEs, refdefs + mid-bullet + prefix-key decoy untouched, idempotent, multi-key; red-first then green.verbs/done/done.js: .jab="args" mutation verb reusing landed BE-038 helpers (shape/pageFile, be.todoRoot()); header flip, bullet delist, lazy todo banner rows, multi-key loop; suite 166/164 = baseline reds only.:done FIX-001 typed in jab todo flips the header + delists both fixture READMEs; CLI re-run prints "(already closed)", miss exits 1 with one done: KEY: TODONONE line (+ the known BE-003 trailer).:done BE-040 fail, orchestrator-verified 2026-07-10): flipHeader collapses a leading multi-mark run ([OPEN] [MED] → one [DONE]) per the one-mark ruling; odd headers emit a VISIBLE odd header, skipped row (no more pager no hunks); new red→green legs in test/done/close/run.sh, suite 166/164 = baseline reds.[done] buttons (orchestrator-verified 2026-07-10): board/topic LIST rows grow the BE-041 house button tail (S sep, Y:"[done]", O:"done KEY", S "\n") after the todo KEY U; plain byte-identical to pre-change goldens; test/done/buttons/ red→green, suite 168/166 = baseline reds; independent pty click flipped the fixture header + delisted both READMEs; NOTE back key is -/BS (h is help in this pager).c8fb7fd6 mid-ticket, so views/todo/todo.js helpers were reused directly; the button TODO is now unblocked.work/BE-040 reports behind 1 (BE-036 glob support landed after the clone); rebase/land ordering is the user's call.done verb + multi-mark/visible-skip fix) LANDED 9dad5857 by gritzko 2026-07-10.[done] buttons in :todo list rows) STAGED uncommitted in wt work/BE-040: views/todo/todo.js, test/done/buttons/{run.sh,check.js,board.golden,topic.golden}; orchestrator-verified, pending review and land.