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

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions