You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Commits the 23 permissions/plugins/protocol docs whose audit completed
cleanly this window. Highlights:
- plugins/*: removed the fabricated `definePlugin()` helper from examples —
a plugin is a plain default-export object; no such helper exists.
- permissions/explain: corrected the explain `via` value to "direct grant"
(adversarial-verify repair); permission-metadata, administrator-guide,
authentication, field-level-security, sharing-rules: scope/flag/API fixes.
- protocol/diagram, protocol/kernel/config-resolution: path/reference fixes.
Some docs' verify pass was cut short by a weekly usage limit, so a subset is
audit-only (hand-scanned: no define*/scale/count regressions; MDX build-safe).
Two docs whose audit itself was interrupted (protocol/kernel/error-handling
and http-protocol) are reverted and deferred for a clean re-audit after the
limit resets.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012urEihGTAsQP2xizAqfCwt
Copy file name to clipboardExpand all lines: content/docs/kernel/runtime-services/audit-service.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -33,4 +33,4 @@ services.audit.record(entry: {
33
33
34
34
## Typical Errors
35
35
36
-
Implementations should avoid throwing into user paths. Callers should treat audit writes as best-effort unless strict compliance mode is enabled by host code.
36
+
Sink implementations should avoid throwing into user paths: the runtime caller (for example `service-settings`) awaits `record()` without a surrounding `try`/`catch`, so a throwing sink propagates its error and fails the caller's write.
Copy file name to clipboardExpand all lines: content/docs/permissions/administrator-guide.mdx
+10-10Lines changed: 10 additions & 10 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -22,7 +22,7 @@ The one thing to internalize before anything else:
22
22
23
23
| Concept | What it is | Who authors it | You touch it |
24
24
|:--|:--|:--|:--|
25
-
|**Permission set**| The only capability container — object CRUD, field security, access depth, system capabilities | Platform & app developers (in Studio)| Rarely — [Step 5](#step-5--configure-permissions-only-when-the-shipped-positions-dont-fit)|
25
+
|**Permission set**| The only capability container — object CRUD, field security, access depth, system capabilities | Platform & app developers; ships with apps| Rarely — [Step 5](#step-5--configure-permissions-only-when-the-shipped-positions-dont-fit)|
26
26
|**Position** (岗位) | A flat, named job function that binds permission sets; users hold positions | Ships with apps; you assign it |**Daily**|
27
27
|**Business unit**| The *one* hierarchy — org tree that decides visibility depth and delegation boundaries | You, at onboarding and reorgs | Occasionally |
28
28
|**User**| The person signing in | You | Daily |
@@ -144,12 +144,12 @@ report names the exact permission set and layer to fix.
144
144
145
145
## Step 5 — Configure permissions (only when the shipped positions don't fit)
146
146
147
-
One rule of thumb: **permissions are *designed* in Studio, *assigned* in
148
-
Setup.** If you are in this section, you've confirmed no shipped position
149
-
covers the need.
147
+
One rule of thumb: **capability ships with the apps you install — you rarely
148
+
author a permission set by hand.** If you are in this section, you've confirmed
149
+
no shipped position covers the need.
150
150
151
-
The permission-set **matrix editor** (Studio → Access) is a structured
152
-
spreadsheet — you never hand-write JSON:
151
+
The permission-set **matrix editor** (Setup → Access Control → Permission Sets)
152
+
is a structured spreadsheet — you never hand-write JSON:
Copy file name to clipboardExpand all lines: content/docs/permissions/permission-metadata.mdx
+21-24Lines changed: 21 additions & 24 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -60,14 +60,14 @@ const salesUserPermission = {
60
60
| :--- | :--- | :--- | :--- |
61
61
|`name`|`string`| ✅ | Machine name (`snake_case`) |
62
62
|`label`|`string`| optional | Display label |
63
-
|`isDefault`|`boolean`| optional |[ADR-0090 D5]Install-time suggestion to bind this set to the `everyone` position (admin confirms; never auto-bound)|
63
+
|`isDefault`|`boolean`| optional |[ADR-0090 D5]Baseline for the `everyone` position: an app-level default set is auto-bound at boot (guarded, idempotent); a package-shipped set instead becomes an install-time suggestion an admin confirms|
|`contextVariables`|`Record<string, any>`| optional |**Not implemented** — declared but ignored; the RLS engine reads only the `current_user.*` built-ins (see note below)|
71
71
72
72
## Object Permissions
73
73
@@ -129,19 +129,21 @@ Control which apps/tabs are visible to users:
129
129
130
130
```typescript
131
131
tabPermissions: {
132
-
crm: 'visible', //Always shown
133
-
admin: 'hidden', //Never shown
134
-
reports: 'default_on', // Shown by default, user can hide
135
-
analytics: 'default_off', //Hidden by default, user can show
analytics: 'default_off', //Shown today (per-user toggle default not yet implemented)
136
136
}
137
137
```
138
138
139
139
| Visibility | Description |
140
140
| :--- | :--- |
141
-
|`visible`| Always visible, user cannot hide |
142
-
|`hidden`| Always hidden, user cannot show |
143
-
|`default_on`| Visible by default, user can toggle off |
144
-
|`default_off`| Hidden by default, user can toggle on |
141
+
|`visible`| Shown (also the effective behavior when a tab is left unset) |
142
+
|`hidden`| Hidden — the app is removed from the user's navigation |
143
+
|`default_on`| Shown today; reserved for a future per-user toggle default |
144
+
|`default_off`| Shown today; reserved for a future per-user toggle default |
145
+
146
+
**Note:** Only `hidden` currently affects runtime behavior — the app-visibility gate hides an app when its tab is set to `hidden` and treats every other value (including `default_off`) as visible. The per-user toggle / default-off semantics implied by `default_on`/`default_off` are not yet implemented.
0 commit comments