summaryrefslogtreecommitdiff
path: root/docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md
diff options
context:
space:
mode:
Diffstat (limited to 'docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md')
-rw-r--r--docs/superpowers/specs/2026-09-02-pull-based-punch-list-design.md41
1 files changed, 32 insertions, 9 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 f9d2fb7..5ad5beb 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
@@ -29,10 +29,9 @@ Three defects and one design flaw:
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. *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.*
+ the same job in parallel. *Fixed 2026-09-03: pool populated to 22 items, cycle
+ retuned to pick 2 every 4 days, and the duplicate free-standing "Yard work"
+ recurring task deleted.*
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
@@ -108,8 +107,32 @@ back to the backlog. Carry-over count is the honest signal for over-committing.
- Existing dated free-standing tasks: unchanged, still push. Most are real
deadlines already.
-## Open questions
-
-- Should a bucket's active items auto-commit at cycle start, or always be
- pulled? Leaning pulled, for consistency with the one rule.
-- Does the widget mirror TODAY exactly? Probably yes — the point is one list.
+## What shipped (1477ee5, 2026-09-03)
+
+- `committed_date` on `native_tasks` (migration 031), with
+ Set/Clear/GetCommittedTasks in the store.
+- Chain steps no longer stamped with a due date on unlock, and excluded from the
+ undated list so they don't fall through to it instead. Migration 031 cleared
+ the auto-stamped dates from the 8 open steps.
+- `BuildTimeline` includes tasks committed to today, deduped against rows already
+ present for another reason. The widget inherits this — it renders from
+ `BuildTimeline`.
+- "+ today" / "on today ×" controls on chain cards and active bucket items.
+
+Verified against production after deploy: 0 open chain steps still carry a due
+date; an uncommitted chain head is absent from the widget payload; committing it
+makes it appear; clearing it removes it again.
+
+## Still open
+
+- **Carry-over is unbuilt.** A task committed yesterday and not finished simply
+ stops appearing rather than showing as carried. Needs a decision: auto-roll to
+ today, or surface a "yesterday's unfinished" prompt during review.
+- **No dedicated review surface.** Pulling happens from the Chains and Buckets
+ sections of the Tasks tab, which works but isn't the single "plan the day"
+ screen described above.
+- **Buckets still push.** Active bucket items keep `due_date = now + cycle_days`,
+ so they arrive on the day's list on their own rather than by being pulled —
+ inconsistent with the one rule, though mild at 2 items per 4 days.
+- **No commit control on ordinary undated backlog tasks** — only chain steps and
+ active bucket items have one so far.