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:
@@ -269,7 +269,11 @@ copy-paste loop back in Module 1, now done right.
|
||||
CLI. Use the "How to choose" criteria above; any tool that shows diffs and has an approval mode is
|
||||
fine.
|
||||
- Your model/provider credentials for that tool.
|
||||
- The verify script in this module's `lab/verify.sh`.
|
||||
- The verify script in this module's `lab/verify.sh`. **Convention for every lab script from here on:**
|
||||
the course's scripts live in the course repo under `modules/NN/lab/`, but your `tasks-app` is a
|
||||
separate folder (Module 1) — so when a step runs one, **copy the script into `tasks-app` first, then
|
||||
run it by name**. (Same copy-it-in move you used for the instructions file in Module 5; use the real
|
||||
path to wherever you unzipped the course in place of `/path/to/`.)
|
||||
|
||||
### Part A — Wire it up and confirm it can read
|
||||
|
||||
@@ -322,10 +326,11 @@ copy-paste loop back in Module 1, now done right.
|
||||
gone.
|
||||
|
||||
7. **Verify it runs.** Use the provided script, which exercises the new command end to end across
|
||||
both files:
|
||||
both files. Copy it into `tasks-app` first (see *You'll need*), then run it from there:
|
||||
|
||||
```bash
|
||||
bash lab/verify.sh
|
||||
cp /path/to/modules/04-getting-the-ai-out-of-the-browser/lab/verify.sh .
|
||||
bash verify.sh
|
||||
```
|
||||
|
||||
It should add tasks, delete one by index, and confirm the right task remains. If it fails, don't
|
||||
@@ -357,7 +362,7 @@ copy-paste loop back in Module 1, now done right.
|
||||
```bash
|
||||
git restore .
|
||||
git diff # empty — the AI's mess is gone, byte for byte
|
||||
bash lab/verify.sh # still passes — you're back at your good state
|
||||
bash verify.sh # still passes — you're back at your good state (you copied it in at step 7)
|
||||
```
|
||||
|
||||
That's the Module 2 safety net catching a Module 4 mistake. Internalize how cheap that was.
|
||||
@@ -413,7 +418,8 @@ Be honest about the limits of working this way:
|
||||
- An agentic editor or CLI tool is wired to your `tasks-app` repo and correctly answers "what does
|
||||
this project do and which files is it in?" from the actual files — no pasting.
|
||||
- You have a committed `delete` command that you watched the AI write across **both** `tasks.py` and
|
||||
`cli.py`, that you reviewed with `git diff` before committing, and that `bash lab/verify.sh` passes.
|
||||
`cli.py`, that you reviewed with `git diff` before committing, and that `bash verify.sh` passes
|
||||
(after copying `verify.sh` into `tasks-app`).
|
||||
- You have, on purpose, let the AI make a change and then erased it with `git restore .`, watching
|
||||
`git diff` go empty.
|
||||
- You can explain, in one sentence, why letting an AI edit your files directly is safe — and your
|
||||
|
||||
@@ -7,9 +7,11 @@
|
||||
# and the other two remain. This is a behavior check on the multi-file change — it does not
|
||||
# care HOW the AI implemented it, only that `delete` works end to end.
|
||||
#
|
||||
# Run it from inside your tasks-app project directory:
|
||||
# bash lab/verify.sh
|
||||
# Copy this into your tasks-app project directory, then run it from there:
|
||||
# cp /path/to/modules/04-getting-the-ai-out-of-the-browser/lab/verify.sh .
|
||||
# bash verify.sh
|
||||
#
|
||||
# (It self-locates cli.py, so it also still works if you run it in place as `bash lab/verify.sh`.)
|
||||
# It saves and restores your real tasks.json, so your actual task list is left untouched.
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
Reference in New Issue
Block a user