-
-
Notifications
You must be signed in to change notification settings - Fork 0
Merge main into prisma-8 #1416
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merge main into prisma-8 #1416
Changes from all commits
9eb7c77
fc77a88
67dce2e
ddf7ff4
05df5a4
fcb1ddc
98d5fc6
11ea14a
cc083cc
2e1ee3d
70927bc
69eaedb
2976f57
3501b65
78e03d6
48383ac
b32ffe5
f1af019
bc660e8
6a66454
399105c
1a616c1
7aa75b0
2798809
d9eb716
661467e
82c7663
1da6535
b837b3f
92d3caf
46ec9bf
1ead103
5cc83e9
e19174a
02c526d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
This file was deleted.
This file was deleted.
This file was deleted.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| --- | ||
| '@opensaas/stack-core': minor | ||
| --- | ||
|
|
||
| The nested-write access gap reported in #1384 is closed by refusal, not by gating | ||
|
|
||
| Nested `set`, `updateMany` and `deleteMany` under a relationship key used to | ||
| reach the database as an unchecked pass-through: the target list's access was | ||
| never consulted, no hooks ran, and an unscoped `where` could reach rows well | ||
| outside the parent's own subtree. Nested `disconnect` could name a target row | ||
| the caller could not read. | ||
|
|
||
| Both are closed here by ADR-0050 rather than by per-kind access machinery: | ||
| nested relation input leaves the write payload entirely, so `create`, `update`, | ||
| `delete`, `connectOrCreate`, `disconnect`, `set`, `updateMany` and `deleteMany` | ||
| are all refused with `NestedRelationInputError`. The refusal is unconditional — | ||
| `sudo()` does not lift it — which is strictly stronger than the interim | ||
| non-sudo-only refusal #1385 shipped on the previous line. Clearing an edge is | ||
| now `null` on the relationship field; every other case is a write against the | ||
| target list, wrapped in `context.transaction()` when it must land atomically. | ||
|
|
||
| See `rugged-terminals-persist.md` for the full write-surface change. |
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
This file was deleted.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The renumber is correct here, and in 16 other places — but it missed one, and the miss is the bad kind: it now points at a real but wrong record.
examples/rag-ollama-demo/README.md:234still reads:That means ADR-0068. Since this merge adds
main's ADR-0066 (the hook-bound context record), the reference no longer dangles — it resolves, to a document about something else entirely.pnpm check:adr-duplicatescannot catch this: it checks that numbers are unique, not that references point where they mean to.I grepped the whole tree: this is the only remaining
ADR-0066reference outsidedocs/adr/itself. One-line fix, follow-up rather than blocking.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fixed in 02c526d —
examples/rag-ollama-demo/README.md:234now readsADR-0068.You were right that this is the bad kind of miss, and I swept the whole tree on the meaning of each
occurrence rather than counting, since both numbers are legitimately in use:
ADR-0066— exactly one occurrence existed, the one you found. Its sentence is aboutwritePluginOwnedFieldand "that write runs no hook of the list's", which is squarely therenumbered record.
grep -rn 'ADR-0066'over the tree now returns nothing.ADR-0068— 17 occurrences, all genuinely the renumbered record. Two sit in paragraphs whosesurrounding topic is the hook context (0066's subject) and so deserved a second look:
packages/core/CLAUDE.md:340("because a hook cannot reachsudo()…") andpackages/core/src/config/types.ts:3197(theStackContextvsStackBaseContextsplit). In boththe parenthetical attaches to a claim about
writePluginOwnedFieldspecifically, not about what ahook's context carries, so 0068 is correct in each.
I also corrected the PR description. It claimed two references were deliberately left at 0066 and
covered by the supersede note — that was wrong twice over: there are none, and the two documents it
named (ADR-0052's
#1211amendment andpackages/core/CLAUDE.md's "#1176" section) were rewrittenin prose to the merged behaviour and cite no ADR number at all, so there was never anything to
leave. The count there now reads 18.
Gates on the new tip:
pnpm check:adr-duplicatespasses (68 numbers, no duplicates) andpnpm --filter opensaas-stack-docs link-checkpasses. The change is one line of documentation text— no source, no manifest, no changeset.