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
feat(data): enable.feeds/activities become real opt-out gates; trackHistory contract defined (#2707) (#2733)
Disposition per flag (enforce-or-remove; removal rejected — trackHistory is
live in the console, spec removal = platform major, and the flags match the
industry-standard object-capability model):
- enable.activities: opt-OUT writer gate. Spec default false→true;
plugin-audit skips ONLY the sys_activity timeline mirror on explicit
`activities:false` (audit row untouched). Behavior-preserving; gives
ADR-0057 its per-object activity-growth lever.
- enable.feeds: opt-OUT + server-side enforcement. Spec default false→true;
explicit `feeds:false` rejects sys_comment creation at the engine hook
seam, 403 FEEDS_DISABLED (fail-closed, CLONE_DISABLED pattern) + a
mapDataError branch so generic data routes surface the 403 (they bypass
sendError's .status passthrough — caught in the runtime smoke test).
- enable.trackHistory: ledger misclassified it dead — objectui has gated
the record History tab on it since 2026-05 (a live consumer under the
ledger's own rules). Reclassified live; the old authorWarn hint ("use
Field.trackHistory instead") would have lost users the History tab and
is replaced by the two-grain contract (object flag = History-tab master
switch; Field.trackHistory = diff selector; audit capture stays
unconditional as a compliance ledger).
- enable.files: stays dead + authorWarn — reserved for the generic
Attachments related-list, tracked in #2727; describe() now says so
instead of advertising a capability that doesn't exist.
Default flips are required for opt-out semantics: default(false)
materializes `false` for every enable-block object, making explicit
opt-out indistinguishable from the default.
Verified: unit (plugin-audit gates, mapDataError, lint contract tests,
spec defaults), liveness gate green, app-todo compile now warns only on
enable.files, and a live showcase run — default object: activity mirrored
+ comment 201; probe object with explicit false flags: 0 activity rows,
1 audit row, comment → 403 FEEDS_DISABLED.
Companion objectui PR gates the record feed/timeline UI on the same flags.
Closes#2707.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: content/docs/references/data/object.mdx
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -77,13 +77,13 @@ const result = ApiMethod.parse(data);
77
77
78
78
| Property | Type | Required | Description |
79
79
| :--- | :--- | :--- | :--- |
80
-
|**trackHistory**|`boolean`| ✅ |Enable field history tracking for audit compliance |
80
+
|**trackHistory**|`boolean`| ✅ |Show the record History tab (audit-trail UI). Pair with per-field trackHistory to pick which field diffs are summarized; audit capture itself is always on for compliance |
81
81
|**searchable**|`boolean`| ✅ | Index records for global search |
82
82
|**apiEnabled**|`boolean`| ✅ | Expose object via automatic APIs |
|**files**|`boolean`| ✅ |Enable fileattachments and document management|
85
-
|**feeds**|`boolean`| ✅ |Enable social feed, comments, and mentions (Chatter-like)|
86
-
|**activities**|`boolean`| ✅ |Enable standard tasks and events tracking|
84
+
|**files**|`boolean`| ✅ |RESERVED (no runtime effect yet) — use Field.file/Field.image for attachments; this flag will gate the future generic Attachments panel|
85
+
|**feeds**|`boolean`| ✅ |Record comments/collaboration feed. Default on; explicit false hides the feed UI and rejects new comments for this object|
86
+
|**activities**|`boolean`| ✅ |Record activity timeline (sys_activity mirror of CRUD). Default on; explicit false stops mirroring and hides the timeline|
87
87
|**trash**|`boolean`| ✅ | Enable soft-delete with restore capability |
88
88
|**mru**|`boolean`| ✅ | Track Most Recently Used (MRU) list for users |
89
89
|**clone**|`boolean`| ✅ | Allow record deep cloning |
0 commit comments