aboutsummaryrefslogtreecommitdiff
path: root/docs/design/2026-07-17-dated-log-planning-line-strip-proposal.md
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-07-18 19:55:43 -0500
committerCraig Jennings <c@cjennings.net>2026-07-18 19:55:43 -0500
commitbc1d81d835237343a4ced82a9025f2dc34f45865 (patch)
tree173150aadac7932eb55759bf294fb18ca2b453a7 /docs/design/2026-07-17-dated-log-planning-line-strip-proposal.md
parent6523ed5b789689a2b77925fb3825570b2d8e5686 (diff)
downloadrulesets-bc1d81d835237343a4ced82a9025f2dc34f45865.tar.gz
rulesets-bc1d81d835237343a4ced82a9025f2dc34f45865.zip
chore(todo): file four backlog tasks from the inbox pass
Filed as [#B] work items with their origin proposals preserved under docs/design/: the todo-cleanup dated-seal archiving model, the dated-log planning-line strip plus its lint backstop, a hook to enforce the task-boundary inbox check, and home's colloquialisms / "the list" before-close-queue convention. The first two both touch todo-cleanup.el and are cross-linked to build as one batch. The last two carry the design worked out this session so they start warm.
Diffstat (limited to 'docs/design/2026-07-17-dated-log-planning-line-strip-proposal.md')
-rw-r--r--docs/design/2026-07-17-dated-log-planning-line-strip-proposal.md15
1 files changed, 15 insertions, 0 deletions
diff --git a/docs/design/2026-07-17-dated-log-planning-line-strip-proposal.md b/docs/design/2026-07-17-dated-log-planning-line-strip-proposal.md
new file mode 100644
index 0000000..2448600
--- /dev/null
+++ b/docs/design/2026-07-17-dated-log-planning-line-strip-proposal.md
@@ -0,0 +1,15 @@
+Proposal: two linked gaps that let a closed sub-task keep polluting the org agenda.
+
+WHAT HAPPENED (home, 2026-07-17)
+Six completed sub-tasks under a DONE parent (a finished trip) had each been closed correctly to the dated event-log form per todo-format.org's depth-based completion rule — keyword, priority, and tags dropped, heading rewritten to "YYYY-MM-DD Day @ HH:MM:SS -ZZZZ <past-tense>". But every one kept its old active SCHEDULED: <date> planning line. A dated-log heading has no TODO keyword, and org-agenda renders ANY headline carrying an active SCHEDULED, so all six showed on the daily agenda as weeks-overdue ("Sched.31x") long after the work and the parent were done. They're invisible to a keyword scan (no TODO) and survive archive-done (parent isn't level-2 CANCELLED), so nothing catches them.
+
+ROOT CAUSE
+The completion rewrite strips keyword/priority/tags but nothing strips the planning line, and an interactive org close (org-log-done) only stamps CLOSED — it never removes a pre-existing SCHEDULED/DEADLINE. So the stale timestamp lingers and pins the entry to the agenda permanently.
+
+TWO FIXES, both rulesets-owned:
+
+1. todo-format.org — the sub-task completion rule (the "*** and deeper — rewrite to a dated event-log entry" section). Add an explicit step: remove any SCHEDULED:/DEADLINE: planning line when rewriting to the dated form. The completion time already lives in the heading; an active planning date on a historical log entry is always wrong. The VERIFY dated-completion path and todo-cleanup.el --convert-subtasks want the same treatment (the batch converter pulls the timestamp from CLOSED and keeps heading text — it should also drop the planning line).
+
+2. lint-org.el — add a checker (proposed name: dated-log-heading-active-timestamp). Flag any dated-log heading (a heading matching the YYYY-MM-DD ... @ ... form, no TODO keyword) that still carries an active <...> SCHEDULED or DEADLINE. This is the mechanical backstop for #1, the same way subtask-done-not-dated backstops the depth rule. It would have caught all six here.
+
+Local fix already applied in home (stripped the six lines by hand); this is about the durable convention + lint so the next instance is prevented and caught. No home-specific detail needs to travel — the gap is general to any project using the dated-log completion form.