Skip to content

chore(spec): flip FormView buttons/defaults to live; close view inverse-drift (#1894)#3417

Merged
os-zhuang merged 2 commits into
mainfrom
claude/inverse-drift-undeclared-props-5qdonq
Jul 24, 2026
Merged

chore(spec): flip FormView buttons/defaults to live; close view inverse-drift (#1894)#3417
os-zhuang merged 2 commits into
mainfrom
claude/inverse-drift-undeclared-props-5qdonq

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

Closes the view item of #1894 (inverse drift — renderers read undeclared
props). The dashboard and app items were already reconciled in earlier work;
this finishes the view half.

FormViewSchema.buttons / defaults shipped under the ADR-0078 escape hatch —
declared, but carrying an [EXPERIMENTAL — NOT ENFORCED] marker because no
consumer read them. The objectui ObjectForm renderer now folds both onto the
flat props it reads, so the escape-hatch marker comes off and the two liveness
entries flip experimental → live.

Changes

  • view.zod.ts — drop the experimental markers from the buttons /
    defaults .describe() strings and the FormButtonConfigSchema leaf doc (the
    spec liveness gate keys experimental off that exact substring); rewrite the
    docs to cite the objectui consumer.
  • liveness/view.jsonview.form.buttons / view.form.defaults
    experimental → live, citing ObjectForm.foldFormButtons().
  • liveness/README.mdview row updated to 70 live / 0 exp / 5 dead.
  • view.test.ts — marker assertion inverted to lock in the live state.
  • audit docs — cluster Migrate from npm to pnpm #6 in docs/audits/README.md and the viewschema
    audit's inverse-drift line annotated as resolved.
  • Changeset: @objectstack/spec patch.

No shape or parse-behavior change — both keys were already accepted.

Coordination

Co-lands with the objectui ObjectForm wiring PR (the consumer this
classification cites). Merge that side (or accept the paired draft) before
releasing, so the live claim is backed by a shipped consumer.

Testing

  • Spec liveness gate green (pnpm check:liveness — all governed-type properties
    classified, no marker↔ledger inconsistency).
  • view.test.ts green (201); dashboard/app/view UI suites green (284).

Part of the metadata liveness audit umbrella #1878.

🤖 Generated with Claude Code


Generated by Claude Code

…se-drift (#1894)

The structured `FormViewSchema.buttons`/`defaults` shipped under the ADR-0078
escape hatch (declared, but marked `[EXPERIMENTAL — NOT ENFORCED]`) pending an
ObjectUI consumer. The objectui `ObjectForm` renderer now folds both onto the
flat props it reads (`showSubmit`/`submitText`/`showCancel`/`cancelText`/
`showReset`/`initialValues`), so:

- Drop the experimental markers from the two `.describe()` strings + the
  `FormButtonConfigSchema` leaf doc (the spec liveness gate keys `experimental`
  off that exact substring).
- Flip `view.form.buttons` / `view.form.defaults` in `liveness/view.json`
  `experimental → live`, citing the objectui consumer; update the `view` row in
  `liveness/README.md` (70 live / 0 exp / 5 dead).
- Update the `view.test.ts` marker assertion to lock in the live state.
- Annotate audit cluster #6 + the viewschema audit's inverse-drift line as
  resolved.

Closes the `view` item of #1894 (inverse drift — renderers read undeclared
props); the dashboard + app items were already reconciled. Co-lands with the
objectui ObjectForm wiring. No shape/parse-behavior change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMaDBhnZEUu1fcw8Rvo6Yq
@vercel

vercel Bot commented Jul 22, 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 24, 2026 11:28am

Request Review

Copy link
Copy Markdown
Contributor Author

CI red is a runner-allocation outage, not this diff. Every job on 6febbdf completed in ~2s with runner_id: 0 / empty runner_name and no downloadable logs — GitHub Actions never assigned a runner. It hits every job uniformly, including the trivial filter / Auto Label checks, so it's platform-side, not the change. (The paired objectui PR #2790 shows the exact same signature at the same minute.)

The diff is verified green locally: the spec property-liveness gate passes (pnpm check:liveness — all governed-type properties classified, no marker↔ledger inconsistency), and the view / dashboard / app spec suites pass (201 + 284 tests).

I'll re-run the failed jobs once runners recover and report back. No action needed on the code meanwhile.


Generated by Claude Code

…escribe changes

The generated `content/docs/references/ui/view.mdx` is derived from the spec
`.describe()` strings; dropping the experimental markers on `buttons`/`defaults`
left it out of sync (caught by the check:docs gate). Regenerated via
`gen:schema && gen:docs`.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CMaDBhnZEUu1fcw8Rvo6Yq
@github-actions github-actions Bot added documentation Improvements or additions to documentation tests protocol:ui tooling size/s and removed documentation Improvements or additions to documentation tests protocol:ui tooling labels Jul 24, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

104 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 @objectstack/spec)
  • content/docs/ai/skills.mdx (via @objectstack/spec)
  • content/docs/api/client-sdk.mdx (via @objectstack/spec)
  • content/docs/api/environment-routing.mdx (via @objectstack/spec)
  • content/docs/api/error-catalog.mdx (via @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/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 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/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/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/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/email-service.mdx (via packages/spec)
  • content/docs/kernel/runtime-services/index.mdx (via 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/authorization.mdx (via @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/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/index.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx (via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx (via @objectstack/spec)
  • 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 @objectstack/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/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/v16.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/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.

@os-zhuang
os-zhuang marked this pull request as ready for review July 24, 2026 12:12
@os-zhuang
os-zhuang merged commit c4df271 into main Jul 24, 2026
17 checks passed
@os-zhuang
os-zhuang deleted the claude/inverse-drift-undeclared-props-5qdonq branch July 24, 2026 12:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants