Reconcile tasks.json gitignore: keep it ignored, fix M20/M22 verification, and exempt M21 #10
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Module 2's
gitignore-starterignorestasks.json. Downstream labs contradict this. M20 Part D verifies an AI task-add withgit diff, claiming it "shows up exactly like any other edit" — buttasks.jsonis gitignored, sogit diff/git status -sare empty. M22's cleanupgit restore tasks.jsonerrors with "pathspec did not match" on the gitignored/untracked file. (M10git add .and M13's count flow are minor.)CRITICAL constraint: Module 21 deliberately ships no
.gitignoresotasks.jsonis stageable — its whole lesson is teaching the AI not to committasks.json("A skill is not a security boundary — 'Don't stage tasks.json' is a convention, not a permission"), verified bygit show --statshowingtasks.jsonabsent from the commit. So the naive fix "ship the M2.gitignorein every snapshot" would gut Module 21 and must NOT be applied there.Evidence
modules/02-.../lab/gitignore-starterignorestasks.json.M20 Part D (~line 337): "git diff # the change shows up in your repo, exactly like any other edit (Module 2)".
M22 Part B (~line 300):
git restore tasks.json.M21 (~lines 54, 214, 223, 263): "don't stage tasks.json" lesson +
git show --stat HEADverification.Reproduced: with M2
.gitignore, after a task addgit diffandgit status -sare empty;git restore tasks.jsonerrors.Why it matters
tasks.jsonis the course's load-bearing carry-forward artifact. M20's "the whole point" verification step is false for any learner who applied M2's.gitignore, and M22's cleanup errors. The honest, correct default is that runtime state is gitignored.Proposed change
tasks.jsongitignored as the pedagogically correct default.python cli.py list/cat tasks.json(notgit diff), and reframe step as a teaching moment that runtime state is deliberately gitignored.git restore tasks.jsonwithrm tasks.json(M22 already offers the delete alternative)..gitignore. Explicitly exempt it from any "ship the.gitignore" rule.git add ./ count flow consistent with whichever convention each snapshot adopts (minor).Acceptance criteria
tasks.json.tasks.json..gitignoreand its guardrail lesson is intact.Affected files
modules/20-mcp-servers-giving-the-ai-hands/README.md,modules/22-securing-third-party-mcp-and-skills/README.md, (minor)modules/10-.../README.md,modules/13-.../README.mdReferences
Source finding F9 (realVotes 3/3). Touches locked exemplar Module 2's
.gitignorepolicy — keep it. Do NOT modify Module 21.Filed from an adversarial multi-agent course review (217 raw findings → 54 adversarially-verified survivors). Scoped for manual review; intentionally not auto-assigned to an agent.