A Django concurrency story about read-then-mutate , silent no-ops, and why one fix is never enough. Section 1: The Bug That Didn't Announce Itself After I fixed the add_member race condition, I did what most developers do after a win: I closed the ticket and moved on. Then a small voice asked a very inconvenient question: If add_member had a race condition, what about change_member_role ? That question turned into an audit. And the audit turned into two more...