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

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, referenceFilters → empties 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[]; referenceFilters → lookupFilters.
  • 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 isSystem — plugin-sharing effectiveSharingModel:74 defaults a no-sharingModel isSystem object to public; also read by validate-security-posture.ts:98. Kept.
  • object enable.searchable — metadata-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.

@github-actions github-actions Bot added documentation Improvements or additions to documentation protocol:data tests tooling labels Jul 18, 2026
@os-zhuang
os-zhuang merged commit 5754a23 into main Jul 18, 2026
17 checks passed
@os-zhuang
os-zhuang deleted the claude/remove-form-surfaced-dead-props branch July 18, 2026 12:14

This branch was successfully deployed

1 active deployment
Preview — 3d0ab771 Deployed Jul 18, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/l tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants