Skip to content

feat(spec)!: remove form-surfaced dead metadata props + correct 3 misclassified-live entries (#2377)#3199

Merged
os-zhuang merged 2 commits into
mainfrom
claude/remove-form-surfaced-dead-props
Jul 18, 2026
Merged

feat(spec)!: remove form-surfaced dead metadata props + correct 3 misclassified-live entries (#2377)#3199
os-zhuang merged 2 commits into
mainfrom
claude/remove-form-surfaced-dead-props

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

The next enforce-or-remove slice of #2377 (ADR-0049). Reconnaissance into both framework and objectui turned up two ledger misclassifications and one 35-file blast radius, which shaped the scope below. Versioned minor per the launch-window policy.

Removed — dead, no runtime reader (verified in framework and objectui)

  • field: columnName, index, referenceFiltersempties the field dead set.
    • columnName was inert even for managed objects (the SQL driver's createColumn hardcodes column = field key; introspection reads row.column_name, the inverse). So it also removed the now-moot ADR-0062 D7 rejection lint (validate-expressions.ts), the dead StorageNameMapping.resolveColumnName/buildColumnMap/buildReverseColumnMap helpers, and closes ADR-0062 R10 — external physical-column mapping is external.columnMap only.
    • index → declare in object indexes[]; referenceFilterslookupFilters.
  • object: tags, active, abstract → now rejecting tombstones in UNKNOWN_KEY_GUIDANCE.
  • agent: tenantId.

Dropped from the authoring forms (field/object/agent.form.ts), the hand-crafted metadata-protocol form-schema mirror, and the regenerated metadata-forms i18n bundles (all 4 locales, 112 key deletions). Reference docs + ledger README regenerated.

Corrected to live — the ledger was wrong (readers verified by reading the code)

  • object isSystemplugin-sharing effectiveSharingModel:74 defaults a no-sharingModel isSystem object to public; also read by validate-security-posture.ts:98. Kept.
  • object enable.searchablemetadata-protocol protocol.ts:2967 uses enable.searchable === false as a global-search opt-out. Kept.
  • action type:'form' — objectui ActionRunner.executeForm routes it to the FormView at /forms/:target (fixed the "Log Time does nothing" report); a build-time lint validates the target. Kept.

Deliberately deferred

  • object.enable.trash / enable.mru — dead, but inert default(true) flags set by ~35 sys-*.object.ts files; removing them is high-churn / low-value. Left dead (authorWarn-skipped).
  • objectui designer active/enabled toggle (MetadataObjectsPage.tsx) — reads raw.active off objectui's own loose local type and writes it back; the runtime registers objects via ObjectSchema.parse() which strips unknown keys, so this is non-breaking (not a hard error). Removing the inert enable/disable control is an objectui UX call, tracked as a separate optional follow-up.

Verification

  • spec 6873 tests + DTS typecheck + liveness gate + check:docs (256 files in sync) all green; api-surface.json unchanged.
  • lint validate-expressions 30, cli lint-liveness-properties 13, metadata-protocol 46 green.
  • No production *.object.ts sets any removed prop.

🤖 Generated with Claude Code


Generated by Claude Code

@vercel

vercel Bot commented Jul 18, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jul 18, 2026 11:40am

Request Review

@os-zhuang
os-zhuang marked this pull request as ready for review July 18, 2026 08:46
os-zhuang pushed a commit that referenced this pull request Jul 18, 2026
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XchBKhKdjbhQZymt9Gn9B
claude added 2 commits July 18, 2026 11:25
…classified-live entries (#2377)

Next enforce-or-remove slice (ADR-0049), versioned minor per launch-window policy.

Removed (dead in both framework + objectui):
- field: columnName, index, referenceFilters (empties the field dead set).
  columnName also drops the moot ADR-0062 D7 lint, the dead StorageNameMapping
  column helpers, and closes ADR-0062 R10 (external mapping = external.columnMap).
- object: tags, active, abstract (now rejecting tombstones).
- agent: tenantId.
Dropped from the authoring forms + regenerated metadata-forms i18n bundles;
reference docs + ledger README regenerated.

Corrected to live (ledger was wrong — readers existed, verified):
- object isSystem  → plugin-sharing effectiveSharingModel + security-posture lint
- object enable.searchable → metadata-protocol global-search opt-out
- action type:'form' → objectui ActionRunner.executeForm (/forms/:target)

Deferred: object enable.trash/mru (inert default-true, ~35 sys-object setters).

Verify: spec 6873 + DTS typecheck + liveness gate + check:docs green;
lint 30, cli 13, metadata-protocol 46 green; api-surface unchanged.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XchBKhKdjbhQZymt9Gn9B
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011XchBKhKdjbhQZymt9Gn9B
@os-zhuang
os-zhuang force-pushed the claude/remove-form-surfaced-dead-props branch from 65dbef2 to 3d0ab77 Compare July 18, 2026 11:33
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 5 package(s): @objectstack/cli, @objectstack/lint, @objectstack/metadata-protocol, @objectstack/platform-objects, @objectstack/spec.

108 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx (via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx (via packages/cli, @objectstack/spec)
  • content/docs/ai/skills.mdx (via @objectstack/spec)
  • content/docs/api/client-sdk.mdx (via @objectstack/cli, @objectstack/spec)
  • content/docs/api/data-flow.mdx (via @objectstack/cli)
  • content/docs/api/environment-routing.mdx (via @objectstack/cli, @objectstack/spec)
  • content/docs/api/error-catalog.mdx (via @objectstack/cli, @objectstack/spec)
  • content/docs/api/error-handling-client.mdx (via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx (via @objectstack/spec)
  • content/docs/api/index.mdx (via @objectstack/spec)
  • content/docs/automation/approvals.mdx (via packages/spec)
  • content/docs/automation/flows.mdx (via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx (via packages/cli, packages/spec)
  • content/docs/automation/hooks.mdx (via @objectstack/spec)
  • content/docs/automation/index.mdx (via @objectstack/spec)
  • content/docs/automation/webhooks.mdx (via @objectstack/spec)
  • content/docs/automation/workflows.mdx (via @objectstack/spec)
  • content/docs/concepts/architecture.mdx (via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx (via packages/spec)
  • content/docs/concepts/index.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx (via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx (via @objectstack/metadata-protocol, packages/spec)
  • content/docs/concepts/north-star.mdx (via packages/spec)
  • content/docs/data-modeling/analytics.mdx (via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx (via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx (via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx (via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx (via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx (via @objectstack/spec)
  • content/docs/data-modeling/index.mdx (via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx (via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx (via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx (via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx (via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx (via @objectstack/spec)
  • content/docs/deployment/backup-restore.mdx (via @objectstack/cli)
  • content/docs/deployment/self-hosting.mdx (via @objectstack/cli)
  • content/docs/deployment/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx (via @objectstack/spec)
  • content/docs/getting-started/cli.mdx (via @objectstack/cli, @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx (via @objectstack/spec)
  • content/docs/getting-started/examples.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx (via @objectstack/spec)
  • content/docs/getting-started/validating-metadata.mdx (via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx (via @objectstack/cli, @objectstack/spec)
  • content/docs/kernel/cluster.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx (via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx (via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx (via packages/spec)
  • content/docs/kernel/index.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/data-service.mdx (via packages/cli)
  • content/docs/kernel/runtime-services/email-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/index.mdx (via packages/cli, packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx (via packages/spec)
  • content/docs/kernel/services-checklist.mdx (via @objectstack/spec)
  • content/docs/permissions/authentication.mdx (via @objectstack/cli)
  • content/docs/permissions/authorization.mdx (via @objectstack/lint, @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx (via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx (via @objectstack/spec)
  • content/docs/permissions/positions.mdx (via @objectstack/spec)
  • content/docs/permissions/rls.mdx (via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx (via @objectstack/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx (via @objectstack/spec)
  • content/docs/plugins/development.mdx (via @objectstack/spec)
  • content/docs/plugins/index.mdx (via @objectstack/spec)
  • content/docs/plugins/packages.mdx (via @objectstack/cli, @objectstack/platform-objects, @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx (via @objectstack/spec)
  • content/docs/protocol/diagram.mdx (via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx (via @objectstack/cli, @objectstack/spec)
  • content/docs/protocol/kernel/realtime-protocol.mdx (via @objectstack/cli)
  • content/docs/protocol/kernel/runtime-capabilities.mdx (via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx (via packages/spec)
  • content/docs/protocol/objectql/query-syntax.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx (via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx (via @objectstack/spec)
  • content/docs/releases/implementation-status.mdx (via @objectstack/cli, @objectstack/spec)
  • content/docs/releases/index.mdx (via @objectstack/spec)
  • content/docs/releases/v12.mdx (via @objectstack/spec)
  • content/docs/releases/v13.mdx (via @objectstack/spec)
  • content/docs/releases/v9.mdx (via @objectstack/spec)
  • content/docs/ui/actions.mdx (via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx (via @objectstack/spec)
  • content/docs/ui/dashboards.mdx (via @objectstack/spec)
  • content/docs/ui/forms.mdx (via @objectstack/spec)
  • content/docs/ui/index.mdx (via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx (via @objectstack/spec)
  • content/docs/ui/setup-app.mdx (via @objectstack/platform-objects, @objectstack/spec)
  • content/docs/ui/translations.mdx (via @objectstack/spec)
  • content/docs/ui/views.mdx (via @objectstack/spec)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants