Commit bfd686d
committed
docs(objectql): carry the whitelist+readonly boundary and the persist-image rule where authors read them (#16344)
Contract-review findings F2, F3, and F4/F5 riding along.
F2 — the changeset now carries the ADR-0092 boundary the round report claimed
was already in it. An UPDATE-whitelisted field that is ALSO declared `readonly`
now answers 403 where it answered 200-having-written-nothing, and the refusal
reads `(—)` because a whitelisted key is excluded from the guard's refused list
by design. No in-repo object is on that boundary; `patch` for plugin-auth
stands. The self-assignment row is also corrected to the verdict that now
holds: a no-op, stored value standing, not a persisted `undefined`.
F3 — `content/docs/protocol/objectql/security.mdx` is the hand-authored
authority for the update-side strip and said nothing about this card. It gains
a fifth rule ("hooks are shown the persist image, not the submission") and a
migration callout naming `ctx.submitted`, `ctx.previous`, the self-assignment
no-op and the sandbox `body` exclusion. Rule 2's trailing paragraph is
corrected while there: "cannot rescue one the caller supplied" has been false
since #5591/#14088 — a hook that ASSIGNS a caller-sent key owns the value and
the strip keeps that write. `content/docs/automation/hooks.mdx` takes the
one-line cross-reference from "Mutate the incoming record".
F4 — the `submitted` TSDoc said "FROZEN by the producer" without qualifying
depth. It is a shallow spread shallow-frozen, so a nested object reached
through a key here is the caller's own mutable reference. Not a laundering
route, but not a deep guarantee either, and now it says so.
F5 — the hidden set is the update strip's own subject set: author-declared
`readonly: true` AND runtime-owned types (`autonumber`, #5503), not "statically
readonly" alone. Stated in the changeset and in the `input` contract note.
No generated artifact moves: the edited prose is TSDoc, and only the
`.describe()` string reaches `authorable-surface/data.json` and
`references/data/hook.mdx`.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XTBcV7zZHmokdyQgXjbyEU1 parent 2fe0d87 commit bfd686d
4 files changed
Lines changed: 73 additions & 16 deletions
File tree
- .changeset
- content/docs
- automation
- protocol/objectql
- packages/spec/src/data
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
11 | | - | |
| 11 | + | |
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| |||
25 | 25 | | |
26 | 26 | | |
27 | 27 | | |
28 | | - | |
| 28 | + | |
29 | 29 | | |
30 | 30 | | |
31 | 31 | | |
| |||
40 | 40 | | |
41 | 41 | | |
42 | 42 | | |
43 | | - | |
| 43 | + | |
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
47 | | - | |
| 47 | + | |
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | 51 | | |
52 | 52 | | |
| 53 | + | |
| 54 | + | |
53 | 55 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
181 | 181 | | |
182 | 182 | | |
183 | 183 | | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
184 | 190 | | |
185 | 191 | | |
186 | 192 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
259 | 259 | | |
260 | 260 | | |
261 | 261 | | |
262 | | - | |
| 262 | + | |
263 | 263 | | |
264 | 264 | | |
265 | 265 | | |
266 | 266 | | |
267 | 267 | | |
268 | 268 | | |
269 | 269 | | |
270 | | - | |
271 | | - | |
272 | | - | |
273 | | - | |
| 270 | + | |
| 271 | + | |
| 272 | + | |
| 273 | + | |
| 274 | + | |
| 275 | + | |
| 276 | + | |
| 277 | + | |
| 278 | + | |
| 279 | + | |
| 280 | + | |
| 281 | + | |
| 282 | + | |
| 283 | + | |
| 284 | + | |
| 285 | + | |
| 286 | + | |
| 287 | + | |
| 288 | + | |
| 289 | + | |
| 290 | + | |
| 291 | + | |
| 292 | + | |
| 293 | + | |
| 294 | + | |
| 295 | + | |
| 296 | + | |
| 297 | + | |
| 298 | + | |
| 299 | + | |
| 300 | + | |
274 | 301 | | |
275 | 302 | | |
276 | 303 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
455 | 455 | | |
456 | 456 | | |
457 | 457 | | |
458 | | - | |
459 | | - | |
| 458 | + | |
| 459 | + | |
460 | 460 | | |
461 | 461 | | |
462 | 462 | | |
463 | 463 | | |
| 464 | + | |
| 465 | + | |
| 466 | + | |
| 467 | + | |
| 468 | + | |
| 469 | + | |
| 470 | + | |
| 471 | + | |
| 472 | + | |
| 473 | + | |
| 474 | + | |
| 475 | + | |
464 | 476 | | |
465 | 477 | | |
466 | 478 | | |
| |||
659 | 671 | | |
660 | 672 | | |
661 | 673 | | |
662 | | - | |
663 | | - | |
664 | | - | |
665 | | - | |
666 | | - | |
| 674 | + | |
| 675 | + | |
| 676 | + | |
| 677 | + | |
| 678 | + | |
| 679 | + | |
| 680 | + | |
| 681 | + | |
| 682 | + | |
| 683 | + | |
| 684 | + | |
| 685 | + | |
| 686 | + | |
| 687 | + | |
| 688 | + | |
667 | 689 | | |
668 | 690 | | |
669 | 691 | | |
| |||
0 commit comments