Skip to content

Commit 1ad22fa

Browse files
committed
docs(permissions): document the runtime OWD posture gate (#3050) in the governance section
1 parent 21f75ce commit 1ad22fa

1 file changed

Lines changed: 15 additions & 2 deletions

File tree

content/docs/permissions/authorization.mdx

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -287,8 +287,8 @@ substrate above.
287287

288288
## Governance: how "declared = enforced" is kept true
289289

290-
Four CI-time mechanisms make the security posture a **checked artifact**
291-
rather than a belief:
290+
Five mechanisms — four CI-time, one runtime — make the security posture a
291+
**checked artifact** rather than a belief:
292292

293293
- **Security publish linter** (ADR-0090 D7, `validateSecurityPosture` in
294294
`@objectstack/lint`, gating `os compile`): unset OWD on custom objects,
@@ -298,6 +298,19 @@ rather than a belief:
298298
security identifiers, and the ADR-0091 grant-lifecycle rules (a seed grant
299299
already expired at authoring time; a delegation row missing its mandatory
300300
`reason`) — every error rule mirrors a runtime gate.
301+
- **Runtime OWD posture gate** (#3050, `objectPostureGate` in
302+
`@objectstack/plugin-security`, registered on the metadata protocol's
303+
pre-persistence `registerAuthoringGate` seam): the two OWD rules the CLI
304+
linter can only check at build time are also enforced on every
305+
runtime-authored object body — Studio drafts, REST saves, AI builders.
306+
An environment overlay of a **packaged** object may only *tighten*
307+
`sharingModel` / `externalSharingModel`, never widen them beyond the
308+
packaged declaration (`403 owd_widening_forbidden` — widen it in the
309+
package source and publish instead; this closes the
310+
`OS_METADATA_WRITABLE=object` escape hatch as an unvalidated widening
311+
path, ADR-0086 D1), and `externalSharingModel ≤ sharingModel` (ADR-0090
312+
D11) is rejected at save time (`403 owd_external_wider`). Write-path
313+
only: stored metadata keeps loading unchanged.
301314
- **Access-matrix snapshot** (ADR-0090 D6, `buildAccessMatrix` /
302315
`diffAccessMatrix`): with `access-matrix.json` committed next to the config,
303316
`os compile` fails on any capability drift with semantic lines

0 commit comments

Comments
 (0)