Skip to content

Make the Beginner capstone cards match a real run at T1, T3, T5 and T6 (350) - #235

Merged
wesammustafa merged 1 commit into
mainfrom
quest/350-capstone-card-matches-real-run
Nov 5, 2026
Merged

wesammustafa merged 1 commit into
mainfrom
quest/350-capstone-card-matches-real-run

Conversation

@wesammustafa

@wesammustafa wesammustafa commented Nov 5, 2026 •

Copy link
Copy Markdown
Owner

What this changes

The Beginner capstone's cards now match what a real Claude Code v2.1.309 session did in the live Beginner run:

  • T1: the reproduce command npm run linkcheck -- <that folder> is on the card's do line, not behind a hint. The commit-CLAUDE.md advice was a bottom: line (the exact command, shown only on request); it is now a note on the git-clean beat, with the reason (the fix commit may change only the files the plan names), and the exact command holds the two git commands.
  • T3: besides the possible prompt before reading ../capstone/beginner-bug.md, the card and page say the read may need no prompt: Claude can read it with cat, which Claude Code runs without a permission prompt unless permissions.blockReadsOutsideWorkingDirectories is on (Read-only commands).
  • T6: "If Claude stops after the failing run to ask whether to go on, say yes." follows "Watch the new test fail, then pass after the fix.", now a note in the page's order.
  • T1 and T5 Check lines (engine): a watched beat with no "Done when" line showed a generic label. The engine now gives it a line for what it looks for: "nothing is left uncommitted" for a git-clean beat over the whole tree, "<file> is saved" for a file beat. A git-clean beat that names paths (i-4 W2 .env, i-capstone samples/, i-8 Y3) keeps its card, since its step asks for no change there. A snapshot test covers both, and fails with the old behavior.

Not changed: T5 names the file both in its Check line and in the "Found" evidence after it passes; the Check line says what the beat looks for, the evidence what it found.

Checklist

  • Facts that can go stale link their Tier 1 source inline
  • No unsourced numbers: n/a
  • Renamed or removed headings: none
  • New listing: n/a
  • Tested in Claude Code: live dry-run below (v2.1.309)
  • Captures: n/a
  • Contrast: n/a
  • I have personally verified any AI-assisted content in this PR.

Claim table

Filled by a separate agent that tried to refute each changed claim:

Claim Source Result
Claude Code runs a built-in set of read-only commands, cat among them, without a permission prompt (docs/beginner/capstone.md step 3 and course/steps/b-capstone.md T3 note) Permissions: Read-only commands Confirmed: "Claude Code recognizes a built-in set of Bash commands as read-only and runs them without a permission prompt in every mode ... The set includes ls, cat, echo, pwd, head, tail, ...". Plan mode (where this step runs) agrees: permission-modes.md says commands "outside the built-in read-only set prompt for approval", so commands inside it don't. One caveat the sentence leaves out: "In auto mode, these commands can also wait for the classifier's review". The step's "may need no prompt" wording covers that.
...unless permissions.blockReadsOutsideWorkingDirectories is on (a cat of the report outside the working directory can then prompt) Permission modes: Actions no mode auto-approves Confirmed: permissions.md says the read-only commands run without a prompt "except as permissions.blockReadsOutsideWorkingDirectories changes for paths outside your working directories", and permission-modes.md says "Reads outside the working directories while permissions.blockReadsOutsideWorkingDirectories is on: recognized file-reading Bash commands prompt even in auto mode and bypassPermissions mode ... Requires Claude Code v2.1.257 or later." This check did not compare that minimum version with the guide's frozen stable baseline.

The v2.1.257 minimum in the second row is older than the guide's stable baseline, v2.1.309.

Dry-run

Live run rel350-cap, from this branch (80d93da) seeded through b-5, with real Claude Code v2.1.309 at start and end, a clean configuration, macOS, driven only by what the app shows (logs ~/.learn-runs/logs/rel350-cap/). The final Check printed "7 of 7 passed" and the app showed "CAPSTONE COMPLETE".

  • T1: pass. The reproduce command is on the card without a hint; it printed All relative links resolve. with exit 0. The git-clean beat reads "Passes: nothing is left uncommitted", with the commit-CLAUDE.md note. The live run's missing bottom line (F4) came from beat 1: the seeded copy already passes it, so it shows "Already done, so this step counts." and no exact command; the note on beat 2 now carries the commands.
  • T3: pass. No permission prompt: in plan mode Claude ran cat ../capstone/beginner-bug.md; echo ---; ls -R src test; cat package.json and went straight to the plan. The new note covers exactly this.
  • T5: pass. "Checking: .practice/capstone-plan.txt is saved", then ".practice/capstone-plan.txt is saved" with "Found .practice/capstone-plan.txt. src/cli.js and 1 more line".
  • T6: LSP pass; the say-yes note not exercised. This time Claude ran the failing test ("0 !== 2"), fixed src/cli.js and reported "All 18 tests pass" without pausing; the note is conditional. The LSP plugin recommendation dialog appeared and No, not now matched the card; plugins/ stayed unchanged.
  • Check before the fix (CLI): "3 of 7 passed", including "FAIL the reported bug is fixed: ... The tool exited with code 0, not 2. Read capstone/beginner-bug.md again." The app's Not yet screen was not captured.
  • Low, not changed here: T2 doesn't mention the folder trust dialog a first start in a new copy shows (b-1 teaches it); T1 beat 3's do line starts lowercase as a continuation of its goal.

@wesammustafa
wesammustafa marked this pull request as ready for review November 5, 2026 23:00
@wesammustafa
wesammustafa merged commit 8a29760 into main Nov 5, 2026
16 checks passed
@wesammustafa
wesammustafa deleted the quest/350-capstone-card-matches-real-run branch November 5, 2026 23:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant