Part of 11.0 breaking-change batch (#2364), ADR-0049 enforce-or-remove.
Remove author-facing metadata properties that pass schema validation but have no runtime consumer (verified against packages/spec/liveness/*.json + grep of plugins/services/objectql/runtime). Authoring them is a false affordance — especially dangerous for AI-authored metadata.
Verified-dead set (remove)
- field (
spec/src/data/field.zod.ts): vectorConfig, fileAttachmentConfig, dependencies, caseSensitive
- object (
spec/src/data/object.zod.ts): versioning, partitioning, softDelete, recordName, keyPrefix, tags, abstract, isSystem, active, dead enable.* flags (trackHistory, searchable, files, feeds, activities, trash, mru), search, defaultDetailForm
- action (
spec/src/ui/action.zod.ts): type: 'form' (enum value, no renderer)
- agent (
spec/src/ai/agent.zod.ts): tenantId, planning.strategy, planning.allowReplan (keep planning.maxIterations — live)
- dataset (
spec/src/ui/dataset.zod.ts): measures.certified
Explicitly KEEP (LIVE — do not remove)
field.currencyConfig, object.apiEnabled, action.disabled/shortcut/bulkEnabled, agent.access/permissions, skill.triggerPhrases/permissions.
Why this cascades
zod schemas are strict — if any example sets one of these, removing the field breaks the example build. Each property: grep examples first (e.g. showcase may set dataset.measures.certified: true).
Per-property checklist
Risk: low–medium; many entries → split into 1–2 PRs (field/dataset first, object aspirational blocks with migration note).
Part of 11.0 breaking-change batch (#2364), ADR-0049 enforce-or-remove.
Remove author-facing metadata properties that pass schema validation but have no runtime consumer (verified against
packages/spec/liveness/*.json+ grep of plugins/services/objectql/runtime). Authoring them is a false affordance — especially dangerous for AI-authored metadata.Verified-dead set (remove)
spec/src/data/field.zod.ts):vectorConfig,fileAttachmentConfig,dependencies,caseSensitivespec/src/data/object.zod.ts):versioning,partitioning,softDelete,recordName,keyPrefix,tags,abstract,isSystem,active, deadenable.*flags (trackHistory,searchable,files,feeds,activities,trash,mru),search,defaultDetailFormspec/src/ui/action.zod.ts):type: 'form'(enum value, no renderer)spec/src/ai/agent.zod.ts):tenantId,planning.strategy,planning.allowReplan(keepplanning.maxIterations— live)spec/src/ui/dataset.zod.ts):measures.certifiedExplicitly KEEP (LIVE — do not remove)
field.currencyConfig,object.apiEnabled,action.disabled/shortcut/bulkEnabled,agent.access/permissions,skill.triggerPhrases/permissions.Why this cascades
zod schemas are strict — if any example sets one of these, removing the field breaks the example build. Each property:
grep examplesfirst (e.g. showcase may setdataset.measures.certified: true).Per-property checklist
packages/spec/liveness/<type>.jsonentry toremovedpnpm --filter @objectstack/spec gen:api-surface+ commit snapshotversioning/partitioning/softDelete)Risk: low–medium; many entries → split into 1–2 PRs (field/dataset first, object aspirational blocks with migration note).