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
@@ -273,7 +273,10 @@ thing you're waiting on.
three. Browser-only still works; treat each worktree as a separate copy-paste context, but you'll
feel the coordination cost more sharply (which is fine — that's the lesson).
- The starter files in this module's `lab/` folder: `orchestration-plan.md`, `fan-out.sh`,
`status.sh`, `cleanup.sh`, and three prompts under `lab/agent-prompts/`.
`status.sh`, `cleanup.sh`, and three prompts under `lab/agent-prompts/`. As established back in
Module 4, the course's lab scripts live in the course repo while `tasks-app` is a separate folder —
so **copy the scripts into `tasks-app` and run them by name** (`bash fan-out.sh`), using your real
course path in place of `/path/to/`.
### Part A — Plan the split before you launch anything (this is the lab)
@@ -294,10 +297,11 @@ thing you're waiting on.
### Part B — Fan out
3. From inside `tasks-app`, create a worktree per issue:
3. From inside `tasks-app`, copy this module's lab scripts in and create a worktree per issue:
```bash
bash modules/26-orchestrating-multiple-agents/lab/fan-out.sh
cp /path/to/modules/26-orchestrating-multiple-agents/lab/*.sh . # fan-out.sh, status.sh, cleanup.sh
bash fan-out.sh
```
It runs, in effect:
@@ -318,10 +322,11 @@ thing you're waiting on.
- `tasks-app-43-docs` ← `lab/agent-prompts/agent-43-docs.md`
- `tasks-app-44-clear` ← `lab/agent-prompts/agent-44-clear.md`
While they run, watch the fleet from a fourth terminal:
While they run, watch the fleet from a fourth terminal (run from inside `tasks-app`, where you
copied the scripts in step 3):
```bash
bash modules/26-orchestrating-multiple-agents/lab/status.sh
bash status.sh
```
It prints each worktree, its branch, and how many commits/changes are in flight — your fleet
@@ -369,7 +374,12 @@ thing you're waiting on.
git add cli.py && git commit
```
9. Close the issues (Module 11 closes them automatically if the PRs referenced them).
9. Close the issues (Module 11 closes them automatically if the PRs referenced them). Then tear the
fleet down (from inside `tasks-app`):
```bash
bash cleanup.sh
```
### Part D — Score the orchestration honestly