How Should I Run This Work?
Answer questions about the work — what it does, what it waits on, what it shares — never about an API. You arrive at an execution model together with its trade-offs, the ways it fails, and the simpler thing to consider first. All four are shown, always.
Name the invariant first — what must stay true under every interleaving. The primitive follows from the invariant; choosing the primitive first is how people end up with a mutex around a whole function.
What does the invariant span?
How to answer honestly · Write it as a sentence. "The counter equals the number of completed increments" spans one location. "Neither account goes negative and their sum is unchanged" spans two, and no single-location primitive can hold it.