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
Copy file name to clipboardExpand all lines: content/docs/data-modeling/objects.mdx
+34-20Lines changed: 34 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -215,8 +215,8 @@ indexes: [
215
215
| Property | Type | Description |
216
216
| :--- | :--- | :--- |
217
217
|`isSystem`|`boolean`| System object, protected from deletion (default: `false`) |
218
-
|`managedBy`|`enum`| Lifecycle bucket that sets the default CRUD affordances and write policy — `'platform'` (default), `'config'`, `'system'`, `'engine-owned'`, `'append-only'`, `'better-auth'`. See [Lifecycle bucket](#lifecycle-bucket-managedby) below. |
219
-
|`userActions`|`object`| Per-object override of the CRUD affordances the `managedBy` default implies — `{ create?, edit?, delete?, import?, exportCsv? }`. This is what makes a `system`/`append-only`object admin/user-writable. See [Lifecycle bucket](#lifecycle-bucket-managedby). |
218
+
|`managedBy`|`enum`| Lifecycle bucket that sets the default CRUD affordances and write policy — `'platform'` (default), `'config'`, `'system-data'`, `'engine-owned'`, `'append-only'`, `'better-auth'`. See [Lifecycle bucket](#lifecycle-bucket-managedby) below. |
219
+
|`userActions`|`object`| Per-object override of the CRUD affordances the `managedBy` default implies — `{ create?, edit?, delete?, import?, exportCsv? }`. This is what NARROWS a `system-data` object, or opens a verb on an `engine-owned`/`append-only`one. See [Lifecycle bucket](#lifecycle-bucket-managedby). |
220
220
|`sharingModel`|`enum`| Org-Wide Default record visibility (ADR-0055/0056/0090). Canonical four only: `'private'`, `'public_read'`, `'public_read_write'`, `'controlled_by_parent'` (detail visibility derived from its master). The legacy aliases (`'read'`, `'read_write'`, `'full'`) were removed from the enum (ADR-0090 D4) — authoring rejects them. Unset on a custom object resolves to `'private'` (ADR-0090 D1) |
221
221
|`ownership`|`enum`| Record-ownership model: `'user'` (default — injects the reassignable `owner_id` lookup, engaging owner-scoped RLS, "My" views and owner reports), `'org'`, or `'none'` (no per-record owner — Dataverse-style catalog / junction tables, skips `owner_id`). Distinct from the package `own`/`extend` contribution kind. |
222
222
|`validations`|`ValidationRule[]`| Object-level validation rules (see [Validation](/docs/data-modeling/validation)) |
@@ -233,44 +233,58 @@ bare bucket string.
233
233
| :--- | :--- |
234
234
|`platform`|**Default.** User-owned business data — full New / Import / Edit / Delete. |
235
235
|`config`| Admin-authored configuration — New / Edit / Delete, no CSV import. |
236
-
|`system`| Platform-defined schema holding **admin/user-writable data** (RBAC link tables, preferences, messaging config). Locked by default; each object opens its writes via`userActions`. |
236
+
|`system-data`| Platform-defined schema holding **admin/user-writable data** (RBAC link tables, preferences, messaging config). Full CRUD by default; narrow it with`userActions`. |
237
237
|`engine-owned`| Runtime rows a platform service owns end to end — generic CRUD hidden, exposed `['get', 'list']` only, **no user writes ever**. |
|`better-auth`| Identity tables owned by the better-auth driver — generic user-context CRUD is suppressed; mutations flow through the auth API (sign-in, invite, reset). |
240
240
241
-
**`engine-owned` vs. writable `system` objects (ADR-0103).**Two buckets share
242
-
the same locked default matrix but say different things:
241
+
**`engine-owned` vs. `system-data`(ADR-0103, #3355).**Both hold a
242
+
platform-defined schema no tenant may model; they differ on who owns the *rows*:
|**icon**|`string`| optional | Icon name (Lucide/Material) for UI representation |
117
117
|**isSystem**|`boolean`| optional | Is system object (protected from deletion; defaults its org-wide sharing to public when no sharingModel is set — plugin-sharing) |
118
-
|**managedBy**|`Enum<'platform' \| 'config' \| 'system' \| 'engine-owned' \| 'append-only' \| 'better-auth'>`| optional | Lifecycle bucket — platform (user CRUD) \| config (admin authored) \| system (engine-managed schema, writable via userActions) \| engine-owned (engine owns the lifecycle, no user writes) \| append-only (audit) \| better-auth (identity). UI clients honour the resolved affordance matrix. |
0 commit comments