Skip to content

Commit 0e04899

Browse files
qq9340100claude
andauthored
docs(permissions): state the 403 not_overridable refusal for admin-door edits of packaged permission sets (#8292) (#8384)
ADR-0094 D5's 2026-07-14 direction (translate an admin-door edit of a package-owned permission set into a first-class ADR-0005 env-scope overlay) was retired on 2026-08-09 by D5-R (#6858 / PR #6962), after #6483 / PR #6608 rolled `permission` back to `allowOrgOverride: false`. The published page still asserted the retired direction in the present tense — and inverted: it told a reader the edit succeeds, when the platform answers 403 not_overridable. Rewrites the data-layer gate bullet to state current behavior and name the supported channel (ADR-0086 two-doors: edit the package and re-publish), in retired-voice consistent with metadata-plugin.zod.ts:921. The sibling bullet ("deleting an artifact-backed set resets it to its declared body") is left unchanged: it is still correct, pinned end-to-end by packages/qa/dogfood/test/two-doors-permission.dogfood.test.ts. Part of #8292 Claude-Session: https://claude.ai/code/session_01Jqe56GnYFddggeAyfkZFVz Co-authored-by: Claude <noreply@anthropic.com>
1 parent 220467e commit 0e04899

1 file changed

Lines changed: 15 additions & 5 deletions

File tree

content/docs/permissions/authorization.mdx

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -227,11 +227,21 @@ one of two doors, each writing only what it owns:
227227
**refuses** any payload that forges package provenance (insert or update,
228228
single or array) and the lifecycle ops with no overlay translation
229229
(`transfer`/`restore`/`purge`) on package rows, failing closed ahead of the
230-
CRUD check — even a `modifyAllRecords` super-user is blocked. Ordinary
231-
admin-door **edits of a packaged set are no longer refused**: the ADR-0094
232-
write-through translates them into the standard ADR-0005 env-scope
233-
**overlay** — the record projects the effective body while the package keeps
234-
owning the row, and "delete" resets to the shipped declaration. System /
230+
CRUD check — even a `modifyAllRecords` super-user is blocked. An ordinary
231+
admin-door **edit of a set whose definition ships as a code artifact is
232+
refused with `403 not_overridable`**, loudly, at the moment of the write:
233+
the ADR-0094 write-through still translates the edit into a metadata save,
234+
but `permission` declares `allowOrgOverride: false` (ADR-0005's security
235+
row — overlays of the authorization surface would create silent privilege
236+
drift), so the tier gate refuses it and no env-scope overlay is minted. The
237+
supported channel is the one ADR-0086 two-doors always named: **edit the
238+
package and re-publish**. (ADR-0094 D5's 2026-07-14 direction — translate
239+
such an edit into a first-class ADR-0005 env-scope overlay — was **retired
240+
on 2026-08-09**; see ADR-0094 D5-R.) A set authored through the data door,
241+
whose definition lives only in `sys_metadata`, rides the still-open
242+
`allowRuntimeCreate` tier and stays editable. A "delete" of a packaged set
243+
through this door still degrades to a **reset** to the shipped declaration —
244+
the admin door can never remove a packaged definition. System /
235245
boot writes carry `isSystem` and bypass it, so the seeder and materializer
236246
are never self-blocked. That bypass is not local to this gate — the full set
237247
of behaviours the flag changes is catalogued in

0 commit comments

Comments
 (0)