aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/task-review.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-01 21:35:16 -0400
committerCraig Jennings <c@cjennings.net>2026-07-01 21:35:16 -0400
commit19ba7cb40c5a448bb28f0217d8cc4718dd450f91 (patch)
tree6eeeaf8e10f701c8daa96d2853f1043d3960f3c2 /.ai/workflows/task-review.org
parentc976f5b6166b0596daefa6c6dcfc2b684563e13c (diff)
downloadrulesets-19ba7cb40c5a448bb28f0217d8cc4718dd450f91.tar.gz
rulesets-19ba7cb40c5a448bb28f0217d8cc4718dd450f91.zip
feat(todo-cleanup): add --convert-subtasks dated-rewrite mode
Rewrites every level-3+ DONE/CANCELLED/FAILED heading into a dated event-log entry from its CLOSED cookie, enforcing the todo-format depth rule that interactive closes and --archive-done (level-2 only) leave unapplied. A new lint-org checker (subtask-done-not-dated) flags stragglers, and the clean-todo, wrap-up, open-tasks, and task-review workflows now run the converter before archiving. Removing the CLOSED cookie keeps a DEADLINE or SCHEDULED cookie that shares its planning line, rather than dropping the whole line. From the .emacs.d handoff (2026-07-01 convert-subtasks bundle).
Diffstat (limited to '.ai/workflows/task-review.org')
-rw-r--r--.ai/workflows/task-review.org2
1 files changed, 2 insertions, 0 deletions
diff --git a/.ai/workflows/task-review.org b/.ai/workflows/task-review.org
index 69e172d..7b6327b 100644
--- a/.ai/workflows/task-review.org
+++ b/.ai/workflows/task-review.org
@@ -96,6 +96,8 @@ The exact date string matters: =task-review-staleness.sh= and the wrap-up health
Follow the completion rules in [[file:../../claude-rules/todo-format.md][todo-format.md]]. A killed top-level =**= task stays task-shaped: change the keyword to =CANCELLED=, add a =CLOSED: [YYYY-MM-DD Day]= line under the heading (generate with =date "+%Y-%m-%d %a"=), and leave the priority and tags intact. It's then a candidate for =--archive-done= at the next cleanup. Don't stamp =:LAST_REVIEWED:= on a kill — it's leaving the review pool anyway.
+A killed *sub-task* (=***= or deeper, under a parent task) instead becomes a dated event-log entry per the depth rule — but you don't have to hand-format it here. =todo-cleanup.el --convert-subtasks= (run in the =clean-todo= and wrap-up cleanup passes) rewrites any level-3+ DONE/CANCELLED/FAILED heading into its dated form mechanically from the =CLOSED= cookie, so a keyword-plus-=CLOSED= close at depth gets normalized on the next cleanup rather than lingering. =lint-org.el= flags any that slip through (checker =subtask-done-not-dated=).
+
* Phase D: Close out
When the batch is done (or Craig calls it early):