Exercise 3: Explaining One Attribution-Table Row in Depth — Possible Solution ==================================================================== CHOSEN ROW: STEP 6 — SAFE EDIT (CHAPTER 8, CHAPTER 9) ------------------------------ This solution picks Step 6, "A safe edit," attributed to Chapter 8 (the mutation, updateTag) and Chapter 9 (the fix that protects it). WHY CHAPTER 8 ALONE WASN'T ENOUGH ------------------------------ Chapter 8 built updatePageTitle as a genuinely working Server Action - it could already update a page's title and immediately reflect that change via updateTag. But it was deliberately left with no auth check at all. Without Chapter 9, Step 6 in this capstone would still "work" technically, but it would prove nothing about safety - literally anyone who discovered the endpoint could rename any page, session or no session. The capstone's own framing - Sam performing a safe, authorized edit - would be false if only Chapter 8 existed. WHY CHAPTER 9 ALONE WASN'T ENOUGH EITHER ------------------------------ Chapter 9 built real authentication - a working login, a real session - but by itself, authentication without an actual protected action to guard is just infrastructure with nothing to demonstrate. Chapter 9's own auth() check only becomes meaningful because Chapter 8 already gave it a real, working, previously-exploitable mutation to gate. WHY THE STEP GENUINELY NEEDS BOTH ------------------------------ Step 6 depends on Chapter 8 for the mutation to exist and actually work, and on Chapter 9 for that mutation to only be reachable by an authenticated Sam. Removing either chapter breaks the step in a different way - remove Chapter 8 and there's no mutation to protect; remove Chapter 9 and the "safe" in "safe edit" becomes false. Both are genuinely necessary, not just conveniently paired. WHY THIS WORKS AS AN ANSWER ------------------------------ It explains the specific contribution of each attributed chapter separately, rather than treating the pairing as self-evident, and shows concretely what would break if either one were removed - directly demonstrating the capstone's own claim that "nothing here is arbitrary."