fix(running-example): consistent lab-script paths, tasks.json policy, no command collisions

- Lab-script path convention: course scripts live in modules/NN/lab/; copy the
  one a step needs into tasks-app, then run by bare name (M4/M6/M7/M26 + headers).
- tasks.json stays gitignored: M20 verifies via `cli.py list`/`cat tasks.json`
  (not git diff) and frames runtime state as deliberately ignored; M22 cleanup
  uses `rm tasks.json`; M10 review-lab gets its own .gitignore.
  Module 21's lab deliberately ships NO .gitignore (teaching device) — untouched.
- Stop running-example command collisions: M5 clear->search, M6 count/clear->
  stats/purge, M7 clear/count->wipe/remaining (README + scripts + agent prompts +
  branch/worktree names). M6 conflict still reproduces on the carried usage line.

Closes #7
Closes #10
Closes #11

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TfzV5QvtPDz8LJS3Pu5VLT
This commit is contained in:
2026-06-22 15:35:40 -04:00
parent 848ad14e3c
commit ad5d0e841c
14 changed files with 192 additions and 136 deletions
@@ -1,14 +1,14 @@
# Agent B prompt — the `count` command
# Agent B prompt — the `remaining` command
Paste this into the AI session you've pointed at the `tasks-app-count` worktree folder.
Paste this into the AI session you've pointed at the `tasks-app-remaining` worktree folder.
---
Add a `count` command to this task app that prints how many tasks are still pending.
Add a `remaining` command to this task app that prints how many tasks are still pending.
- Reuse the existing `pending()` method on `TaskList` in `tasks.py`; don't reimplement it.
- Wire a `count` command into the dispatch in `cli.py`.
- Running `python cli.py count` should print something like `2 pending` (the number of tasks not
- Wire a `remaining` command into the dispatch in `cli.py`.
- Running `python cli.py remaining` should print something like `2 pending` (the number of tasks not
marked done).
Make the change, then stop — I'll review the diff and commit it myself.