Skip to content

Commit b95f47b

Browse files
committed
feat(spec)!: remove dead enable.trash/mru capability flags (#2377 close-out, ADR-0049)
Both flags parsed and defaulted to true but had no runtime consumer: every delete has always been a hard delete (no recycle bin) and MRU tracking was never implemented. First-party objects authored 'trash: false // Never soft-delete audit logs' believing a soft-delete existed to opt out of — the false affordance ADR-0049 exists to kill. - ObjectCapabilities is now .strict() (pattern of the tenancy block, #2763): retired trash/mru reject with upgrade guidance via CAPABILITIES_RETIRED_KEY_GUIDANCE; typos no longer strip silently (#1535). Strict immediately caught two latent unknown-key bugs: sys_secret and sys_setting_audit authored a never-existent 'enable.audit' flag. - ~46 first-party object definitions drop their inert trash:/mru: lines (platform-objects, plugin-security/audit/approvals/sharing, metadata-core, service-realtime, examples/app-todo). - Liveness ledger: both entries deleted (precedent: tags/recordName); README count table object row now 0 dead. Studio object.form.ts drops both rows. - Docs/skills stop advertising a recycle bin; the API skill's 'DELETE is soft-delete when trash: true' claim corrected to the real contract. - Spec 6820 green; liveness gate, api-surface check, docs check all pass; cli 442 green; all touched packages' suites green. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RRCHNGhKw8uVhA3ghXKDpA
1 parent 8ee8c52 commit b95f47b

63 files changed

Lines changed: 118 additions & 152 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 33 additions & 0 deletions

content/docs/concepts/metadata-driven.mdx

Lines changed: 0 additions & 2 deletions

content/docs/data-modeling/objects.mdx

Lines changed: 0 additions & 5 deletions

content/docs/data-modeling/schema-design.mdx

Lines changed: 0 additions & 2 deletions

content/docs/protocol/objectql/schema.mdx

Lines changed: 0 additions & 3 deletions

content/docs/references/data/object.mdx

Lines changed: 0 additions & 2 deletions

examples/app-todo/src/objects/task.object.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -171,8 +171,6 @@ export const Task = ObjectSchema.create({
171171
files: true,
172172
feeds: true,
173173
activities: true,
174-
trash: true,
175-
mru: true,
176174
},
177175

178176
// Database indexes for performance

packages/cli/src/utils/lint-liveness-properties.test.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@ describe('lintLivenessProperties', () => {
2222
// action.undoable). The object/field WALKER is still exercised by the
2323
// silent-clean and default-on-suppression cases below.
2424

25-
it('does NOT warn on a default-on flag the author left alone (enable.trash: true)', () => {
26-
const findings = lintLivenessProperties(objStack({ enable: { trash: true } }));
27-
expect(paths(findings).some((m) => m.includes('enable.trash'))).toBe(false);
25+
it('does NOT warn on a default-on flag the author left alone (enable.searchable: true)', () => {
26+
const findings = lintLivenessProperties(objStack({ enable: { searchable: true } }));
27+
expect(paths(findings).some((m) => m.includes('enable.searchable'))).toBe(false);
2828
});
2929

3030
// #2707/#2727: every ObjectCapabilities flag is now LIVE (opt-out

packages/cli/src/utils/lint-liveness-properties.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* `"authorWarn": true` (+ an optional `"authorHint"`). A property being merely
1717
* `dead` is NOT enough — plenty of dead props are benign display/doc metadata.
1818
* Only entries an author would be *misled* by are marked. Booleans warn only when
19-
* set truthy (so schema defaults like `enable.trash` never trip it); object/
19+
* set truthy (so schema defaults like `enable.searchable` never trip it); object/
2020
* string/array props warn when present at all.
2121
*/
2222

packages/metadata-core/src/objects/sys-metadata-audit.object.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,5 @@ export const SysMetadataAuditObject = ObjectSchema.create({
180180
searchable: false,
181181
apiEnabled: true,
182182
apiMethods: ['get', 'list'],
183-
trash: false,
184183
},
185184
});

0 commit comments

Comments
 (0)