Reframe Module 9 worked-examples off already-built features (#40) (#70)

Co-authored-by: claude <claude@jpaul.io>
Co-committed-by: claude <claude@jpaul.io>
This commit was merged in pull request #70.
This commit is contained in:
2026-06-22 17:51:57 -04:00
committed by Claude (agent)
parent f743bb671b
commit ba66f8a622
2 changed files with 46 additions and 35 deletions
@@ -6,6 +6,10 @@
context (with repro for the bug), concrete acceptance criteria, and a stated scope.
Note how the routing call is a property of the ISSUE (clear vs. ambiguous), not the model.
Because the tasks-app carries forward across modules, some commands you might reach for (a
`delete` command, task priorities) may already exist from earlier labs. These examples
deliberately target work the app does NOT have yet, so each reads as a genuine open issue.
-->
# Issue 1 — bug — route to AGENT
@@ -47,54 +51,56 @@ Changing how tasks are stored, numbered, or displayed.
# Issue 2 — feature — route to AGENT
# Title: Add a `delete <index>` command to remove a task
# Title: Add an `undone <index>` command to mark a completed task as not done
## Context / problem
There's no way to remove a task once added — only `add`, `list`, and `done`. Users accumulate stale
tasks with no way to clear them. The command should mirror the existing `done <index>` command,
which already takes an index and mutates the list.
You can mark a task `done`, but there's no way to undo it — flag the wrong index by mistake and the
only "fix" is to delete the task and re-add it. The command should mirror the existing `done <index>`
command, which already takes an index and flips a task's state; this is simply its inverse.
## Acceptance criteria
- [ ] `python cli.py delete <index>` removes the task at that index and saves.
- [ ] `delete` with an out-of-range or non-integer index prints a clear error and exits non-zero
- [ ] `python cli.py undone <index>` clears the done flag on the task at that index and saves.
- [ ] `undone` with an out-of-range or non-integer index prints a clear error and exits non-zero
(same behavior as the fixed `done`, see Issue 1).
- [ ] `list` after a delete shows the remaining tasks, re-indexed.
- [ ] Usage text mentions the new `delete` command.
- [ ] `list` after `undone` shows that task as not done (`[ ]`).
- [ ] Usage text mentions the new `undone` command.
## Out of scope
Bulk delete / `clear all` (separate issue if wanted). Changing the storage format.
A general multi-step undo / command history (separate concern). Changing the storage format.
## Proposed approach (optional)
Add a `remove(index)` method on `TaskList` in `tasks.py` and wire a `delete` branch in `cli.py`,
parallel to the existing `done` handling.
Add a `reopen(index)` method on `TaskList` in `tasks.py` — the inverse of the existing `complete`
and wire an `undone` branch in `cli.py`, parallel to the existing `done` handling.
---
- **Type:** feature
- **Priority:** med
- **Ready:** yes
- **Route to:** agent — well-scoped and patterned directly on existing code; low ambiguity, easy to
verify.
- **Route to:** agent — well-scoped and patterned directly on existing code (the inverse of `done`);
low ambiguity, easy to verify.
# Issue 3 — feature — route to HUMAN
# Title: Support task priorities
# Title: Support due dates on tasks
## Context / problem
Users want to mark some tasks as more important so the list reflects what to do first. Today every
task is equal. This is desirable but underspecified — several product decisions have to be made
before any code is written.
Users want to attach a due date to a task so the list can reflect what's coming up, not just what
exists. Today a task is only a title and a done flag. This is desirable but underspecified — several
product decisions have to be made before any code is written.
Open questions (resolve before this is `ready`):
- How many priority levels? (high/med/low, or a numeric scale?)
- Does `list` re-sort by priority, or just display it inline?
- How is a priority set — at `add` time (a flag?) or with a separate command?
- How is it stored, and what's the default for existing tasks?
- What date format does the user type, and how forgiving is parsing? (ISO `2026-06-30` only, or
relative like `tomorrow` / `friday`?)
- Does `list` re-sort by due date, group by it, or just display it inline?
- How is a due date set — at `add` time (a flag?) or with a separate command? Can it be cleared?
- How are overdue tasks surfaced — highlighted, flagged, sorted to the top — and in whose timezone?
- How is it stored, and what's the default for the existing tasks that have none?
## Acceptance criteria