Fix capstone Part F recovery rehearsal: sync local main after the forge merge, and revert the squash commit without -m 1 #8

Closed
opened 2026-06-22 14:23:40 -04:00 by claude · 0 comments
Contributor

Problem

The capstone's recovery rehearsal (Part F) is unrunnable as written, for two compounding reasons:

  1. No sync after the forge merge. Part E step 9 squash-merges the feature PR on the forge. There is no git switch main && git pull afterward, so the squash commit exists only on the remote — local main is behind. Part F then cuts a throwaway branch off the still-local feature branch and tries to revert a <merge-sha> that isn't in local history → git revert fails with a bad-revision error.
  2. -m 1 on a squash commit. Even with the SHA present, a squash-merge produces a single-parent commit, so git revert -m 1 <merge-sha> errors with "mainline was specified but commit … is not a merge", and "find the merge commit" is impossible. Module 12 ties -m 1 to two-parent merge commits and uses git merge --no-ff in its own lab precisely to make -m 1 valid. AGENTS.md mandates squash-merge.

Evidence

capstone/README.md: step 9 squash-merge (~line 214); Part F step 11 (~lines 233-235) "Find the merge commit … git revert -m 1 <merge-sha>"; the "If it goes wrong (M12)" prose (~line 117). Part A (~lines 149-153) shows the correct git switch main && git pull pattern that is missing after step 9. AGENTS.md line 52 mandates squash-merge.

Why it matters

This is the capstone's "recovery you rehearsed" payoff in the course's culminating deliverable; a copy-paste-runnable lab that errors twice breaks the finale and the honesty/runnable-lab promises.

Proposed change

  1. Insert a sync step at the end of Part E (or start of Part F): git switch main && git pull, then git log --oneline -1 to capture the squash commit SHA. Cut the throwaway branch from the updated main.
  2. Change recovery to plain git revert <squash-sha> (no -m), and drop "find the merge commit". Keep squash-merge (do not switch the capstone to --no-ff, which would contradict step 9 and AGENTS.md). Module 12 teaches plain git revert <commit>, so the chain holds.
  3. Apply the same fix to the line-117 "If it goes wrong" prose so both references agree.

Acceptance criteria

  • After the forge squash-merge, the lab syncs local main and shows how to find the squash SHA.
  • Recovery uses plain git revert <squash-sha>; no -m 1 and no "find the merge commit" anywhere in the capstone.
  • Both Part F step 11 and the line-117 prose are consistent and runnable.

Affected files

  • capstone/README.md

References

Merged source findings F7 + F47 (each realVotes 3/3) — same broken Part F block. Module 12 precedes the capstone and teaches plain git revert.


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.

## Problem The capstone's recovery rehearsal (Part F) is unrunnable as written, for two compounding reasons: 1. **No sync after the forge merge.** Part E step 9 squash-merges the feature PR on the forge. There is no `git switch main && git pull` afterward, so the squash commit exists only on the remote — local `main` is behind. Part F then cuts a throwaway branch off the still-local feature branch and tries to revert a `<merge-sha>` that isn't in local history → `git revert` fails with a bad-revision error. 2. **`-m 1` on a squash commit.** Even with the SHA present, a squash-merge produces a single-parent commit, so `git revert -m 1 <merge-sha>` errors with "mainline was specified but commit … is not a merge", and "find the merge commit" is impossible. Module 12 ties `-m 1` to two-parent merge commits and uses `git merge --no-ff` in its own lab precisely to make `-m 1` valid. AGENTS.md mandates squash-merge. ## Evidence `capstone/README.md`: step 9 squash-merge (~line 214); Part F step 11 (~lines 233-235) "Find the merge commit … `git revert -m 1 <merge-sha>`"; the "If it goes wrong (M12)" prose (~line 117). Part A (~lines 149-153) shows the correct `git switch main && git pull` pattern that is missing after step 9. AGENTS.md line 52 mandates squash-merge. ## Why it matters This is the capstone's "recovery you rehearsed" payoff in the course's culminating deliverable; a copy-paste-runnable lab that errors twice breaks the finale and the honesty/runnable-lab promises. ## Proposed change 1. Insert a sync step at the end of Part E (or start of Part F): `git switch main && git pull`, then `git log --oneline -1` to capture the squash commit SHA. Cut the throwaway branch from the updated `main`. 2. Change recovery to plain `git revert <squash-sha>` (no `-m`), and drop "find the merge commit". Keep squash-merge (do not switch the capstone to `--no-ff`, which would contradict step 9 and AGENTS.md). Module 12 teaches plain `git revert <commit>`, so the chain holds. 3. Apply the same fix to the line-117 "If it goes wrong" prose so both references agree. ## Acceptance criteria - [ ] After the forge squash-merge, the lab syncs local `main` and shows how to find the squash SHA. - [ ] Recovery uses plain `git revert <squash-sha>`; no `-m 1` and no "find the merge commit" anywhere in the capstone. - [ ] Both Part F step 11 and the line-117 prose are consistent and runnable. ## Affected files - `capstone/README.md` ## References Merged source findings F7 + F47 (each realVotes 3/3) — same broken Part F block. Module 12 precedes the capstone and teaches plain `git revert`. --- *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.*
claude added the bugai-readyP1 labels 2026-06-22 14:23:40 -04:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: justin/ai-workflow-course#8