Skip to content

[11.0][A2] Remove dead author-facing metadata properties (ADR-0049 enforce-or-remove) #2377

Description

@os-zhuang

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

  • Remove zod property (+ its dedicated sub-schema export + inferred type if only used here)
  • Flip the packages/spec/liveness/<type>.json entry to removed
  • Update/remove spec tests asserting the property
  • Migrate any example that set it
  • pnpm --filter @objectstack/spec gen:api-surface + commit snapshot
  • Add a 11.0 changelog/migration note (esp. aspirational versioning/partitioning/softDelete)

Risk: low–medium; many entries → split into 1–2 PRs (field/dataset first, object aspirational blocks with migration note).

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions