summaryrefslogtreecommitdiff
path: root/docs/superpowers/specs
diff options
context:
space:
mode:
authorPeter Stone <thepeterstone@gmail.com>2026-09-03 00:46:40 +0000
committerPeter Stone <thepeterstone@gmail.com>2026-09-03 00:46:40 +0000
commit699e31989e2c36513e02861f49672f8984ffe336 (patch)
tree862fe2c8658dff68efa76b167d0759f5503c2a43 /docs/superpowers/specs
parentf295fd12e6ffc8a7c023a83b3ac1223664255e90 (diff)
Update punch-list spec: correct the recurrence diagnosis, record progress
The spec described skipped recurrences as an accidental "double-book." It isn't: generating the successor regardless of completion is deliberate (so skipping doesn't stall the series). The actual defect was that nothing retired the superseded occurrence, so skips accumulated as permanent overdue items. Recorded the intended semantics -- an occurrence not done before its successor lands is stale, and the newer one stands. Also marked the bucket pool as populated and flagged the leftover duplicate "Yard work" recurring task as needing an explicit decision, since deleting it ends its series. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018AwnALZL6bD4VBtATDVv3B
Diffstat (limited to 'docs/superpowers/specs')
-rw-r--r--docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md18
1 files changed, 13 insertions, 5 deletions
diff --git a/docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md b/docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md
index 15f333f..3a73206 100644
--- a/docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md
+++ b/docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md
@@ -16,15 +16,23 @@ Three defects and one design flaw:
owning chain's status, so 4 of 8 visible chain tasks came from explicitly
paused chains. *Fixed 2026-09-02 (3e26cd5).*
-2. **Recurring tasks double-book.** The next instance materializes before the
- current one is closed, so "Bills" occupies two rows (Sep 1 overdue + Oct 1),
- as does "Bones's meds". Every monthly recurrence permanently costs two slots.
- *Not yet fixed.*
+2. **Skipped recurrences never retired.** The scheduler materializes the next
+ instance once the current one comes due, whether or not it was completed —
+ deliberately, so skipping one doesn't stall the series. But nothing retired
+ the occurrence it replaced, so every skipped occurrence stayed open forever as
+ a permanent overdue item ("Bills" and "Bones's meds" each sat in the list
+ twice). Per the intended semantics: an occurrence not done before its
+ successor arrives is *stale/abandoned*, not still owed — the newer one stands.
+ *Fixed 2026-09-03 (f295fd1): an `abandoned` flag, set when the successor is
+ created. Deliberately not `completed`, which would credit work never done.*
3. **Buckets never got a pool.** One bucket exists ("Yard Work", cycle 14d,
pick 3) holding exactly 3 items. "Pick 3 of 3" makes the rotation a no-op —
everything is always active. A duplicate free-standing "Yard work" task does
- the same job in parallel.
+ the same job in parallel. *Pool populated 2026-09-03 to 22 items (3 active +
+ 19 dormant), so the rotation is real. The duplicate free-standing "Yard work"
+ recurring task is still there — deleting it ends its series, so it needs an
+ explicit call.*
4. **`due_date` is doing two incompatible jobs** — the design flaw underneath the
complaint. It means both *"this is a hard deadline"* (Bills, meds, T-ball