The name the engine reports is not the order you write
The multi-row lock path is named all().forUpdate() throughout the repository — in the engine's own error
messages (packages/core/src/secured/read.ts, where that string is passed to the lock lane as the member name), in
specs/prisma-8/architecture-spec.md, in docs/adr/0062-…, and in the published reference page
docs/content/reference/context-api.md.
But that is not the order a caller writes, and it is not an order that type-checks. forUpdate() returns a query and
all() returns a promise, so the only valid spelling is .forUpdate().all(). A reader who copies the name as code
gets a type error; a reader who sees it in an error message and searches the documentation finds the same inverted
form.
Found while verifying PR #1410, which corrected the one instance that appeared as a code sample. The rest are
names and prose, which is why they were out of that pull request's scope — but the published reference page is
reader-facing, and it is the one that matters most.
What to do
Why it is worth doing rather than tolerating
An error message exists to be searched. When a developer hits the row-lock bound and reads
all().forUpdate(), the natural next step is to write exactly that, and it will not compile. The cost is small per
person and paid by every person who hits it.
Context
🤖 Generated with Claude Code
The name the engine reports is not the order you write
The multi-row lock path is named
all().forUpdate()throughout the repository — in the engine's own errormessages (
packages/core/src/secured/read.ts, where that string is passed to the lock lane as the member name), inspecs/prisma-8/architecture-spec.md, indocs/adr/0062-…, and in the published reference pagedocs/content/reference/context-api.md.But that is not the order a caller writes, and it is not an order that type-checks.
forUpdate()returns a query andall()returns a promise, so the only valid spelling is.forUpdate().all(). A reader who copies the name as codegets a type error; a reader who sees it in an error message and searches the documentation finds the same inverted
form.
Found while verifying PR #1410, which corrected the one instance that appeared as a code sample. The rest are
names and prose, which is why they were out of that pull request's scope — but the published reference page is
reader-facing, and it is the one that matters most.
What to do
forUpdate().all()), or thedocumentation states explicitly that the name is a label for the lane rather than a call sequence
reference page together — a half-renamed concept is worse than either version
minorchangeset for@opensaas/stack-coreWhy it is worth doing rather than tolerating
An error message exists to be searched. When a developer hits the row-lock bound and reads
all().forUpdate(), the natural next step is to write exactly that, and it will not compile. The cost is small perperson and paid by every person who hits it.
Context
🤖 Generated with Claude Code