diff options
| author | Peter Stone <thepeterstone@gmail.com> | 2026-09-03 00:46:40 +0000 |
|---|---|---|
| committer | Peter Stone <thepeterstone@gmail.com> | 2026-09-03 00:46:40 +0000 |
| commit | 699e31989e2c36513e02861f49672f8984ffe336 (patch) | |
| tree | 862fe2c8658dff68efa76b167d0759f5503c2a43 /docs | |
| parent | f295fd12e6ffc8a7c023a83b3ac1223664255e90 (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')
| -rw-r--r-- | docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md | 18 |
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 |
