fix(modules-1,6): make Seam 1 bite across two files; correct M6 conflict labels

- M1 Seam 1: swap the cli.py-only `clear` task for "make `list` hide done tasks",
  whose clean fix lives in tasks.py — so a cli.py-only AI crashes or duplicates
  logic. Strengthens the deliberate multi-file copy-paste-pain device; voice kept.
- M6 make-conflict.sh: relabel the conflicting lines to be branch-named (was an
  inverted LEFT/RIGHT axis vs the actual ours/theirs marker sides). Conflict still
  fires; only the labels changed.

Closes #36
Closes #37

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 17:35:32 -04:00
parent 3f096c71ff
commit 282c121c58
2 changed files with 12 additions and 7 deletions
+10 -5
View File
@@ -197,11 +197,16 @@ You now have every module's files locally, including this one's under
Now reproduce each failure deliberately. Keep the AI strictly in the **browser chat** — no
editor-integrated tools yet (those arrive in Module 4). This is the "before" picture on purpose.
1. **Seam 1 (multiple files).** Paste *only* `cli.py` into your chat and ask: *"Add a `clear`
command that removes all tasks."* Apply whatever it gives you. Now run `python cli.py clear`.
Notice what the AI didn't know: it couldn't see `tasks.py`, so if a clean implementation belonged
there, it had to guess or cram it into the file it could see. Feel how *you* had to be the one to
know which files were involved.
1. **Seam 1 (multiple files).** First mark a task done so there's something to hide — `python cli.py
done 0`, then `python cli.py list` shows it as `[x]`. Now paste *only* `cli.py` into your chat and
ask: *"Make the `list` command hide tasks that are already done."* Apply whatever it gives you and
run `python cli.py list`. The clean version of this change lives in `tasks.py` — the file you
*didn't* paste: open it and you'll see `render()` already owns the `[x]`/`[ ]` box-and-index
formatting, and a `pending()` helper already returns exactly the not-done tasks. But the chat
never saw that file, so it had to either guess at methods it couldn't see (and `python cli.py
list` errors out) or reach into the raw task list and *re-create* that box-and-index formatting
inside `cli.py` — duplicating logic that already existed one file over. Either way, *you* had to
be the one who knew the change really belonged in the other file.
2. **Seam 2 (across time).** Close the chat tab. Open a new one. Ask it to *"continue where we left
off."* Watch it have no idea what you were doing. The project's real state is sitting right there
@@ -47,14 +47,14 @@ git branch -D "$BRANCH_B" >/dev/null 2>&1 || true
# 5. Branch A: append one version of a line, commit.
git switch -c "$BRANCH_A" >/dev/null
printf '\n<!-- practice line: KEEP THE LEFT VERSION -->\n' >> "$FILE"
printf '\n<!-- practice line added on branch A -->\n' >> "$FILE"
git add "$FILE"
git commit -q -m "practice: append line (branch A)"
# 6. Branch B (off the original branch): append a DIFFERENT version to the same spot, commit.
git switch "$START_BRANCH" >/dev/null
git switch -c "$BRANCH_B" >/dev/null
printf '\n<!-- practice line: KEEP THE RIGHT VERSION -->\n' >> "$FILE"
printf '\n<!-- practice line added on branch B -->\n' >> "$FILE"
git add "$FILE"
git commit -q -m "practice: append line (branch B)"