Skip to content

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

Draft
os-zhuang wants to merge 1 commit into
mainfrom
claude/inverse-drift-undeclared-props-5qdonq
Draft

chore(spec): flip FormView buttons/defaults to live; close view inverse-drift (#1894)#3417
os-zhuang wants to merge 1 commit 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 22, 2026 9:31pm

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

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants