Uh oh!
There was an error while loading. Please reload this page.
docs(plugins): qualify FormField to the copy plugin-form.mdx describes - #6185
Merged
Merged
Conversation
The page asserted `FormField` is "declared once, in `@object-ui/types`". That is a closure claim and it is false: `@objectstack/spec` ships a same-named `FormField` in `json-schema/ui/FormField.json`. Qualify the name to the copy the page means, following the shape PR #6168 used for `MarkdownSchema` on plugin-markdown.mdx. The 21-row table is unchanged — it restates the `@object-ui/types` copy exactly. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019b5UBNMtTzKbVtZZGvFuxe
yinlianghui-tw
marked this pull request as ready for review
August 24, 2026 23:36
Uh oh!
There was an error while loading. Please reload this page.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for freeto join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #6172 — the dispatchable half only. Not a closing reference: the collision class itself (rename vs re-export vs a gate forbidding a second declaration of an exported schema name) is a contract decision carrying
needs-user-decision, and #6172 stays open for it.What was false
content/docs/plugins/plugin-form.mdx:51asserted:Under the closure rule adopted on #6086, "declared once" is a closure claim, and it is false.
Re-measured at the claim SHA (
b37d3f0fd), not inherited from the card@object-ui/types—packages/types/src/form.ts:911@objectstack/spec@17.2.0—json-schema/ui/FormField.json[key: string]: anyindex signature excluded (it is present, and it is not a declared member).pnpm-lock.yamlresolves at this SHA (17.2.0), confirmed viarequire('@objectstack/spec/package.json').version.condition,description,disabled,id,inputType,name,readonlyWhen,requiredWhen,validation.disclosure,fields,helpText,immutable,keyField,language,max,maxLength,min,minLength,multiple,precision,publicPicker,reference,scale.The card's 23 / 29 / 14 reproduce exactly. One drift: the types declaration is now at line 911, not 906.
The change
The name is qualified to the copy the page actually describes, following the shape PR #6168 used for
MarkdownSchemaonplugin-markdown.mdx— "the plugin ships its own copy of this name, so read it there rather than the same-named interface in@object-ui/types". Qualifying says what the page describes; it does not settle which declaration is canonical.No new closure claim replaces the old one. The page now points at the other copy by file path — an existence claim a reader can check by opening it — instead of asserting that no third copy exists.
⭐ The 21-row table is untouched. It restates the
@object-ui/typescopy exactly, and the diff is prose-only: zero fence lines and zero table rows changed.Verification — exit codes captured by redirect before any pipe, union re-run at the final commit
a0ed3fb39check:control-bytes✅ check-control-bytes: OK (scanned 5109 tracked text file(s); skipped 85 binary).check:doc-types✅ Every documented component type is registered.docs:check-linksLinks are valid across 15 scan roots.check:doc-fences✅ check:doc-fences — every TypeScript block in 223 document(s) is fenced ts/tsx/typescript…check:doc-snippetsEvery covered documentation snippet compiles against the built types.✅ No source of a released package changed in this range, so no changeset is owed.Root vitest (objectui#3378), scoped to the one suite that reads this page —
scripts/__tests__/check-doc-component-types.test.ts: 34 passed, exit 0.Scope derived from each gate's own configuration, and the exclusion measured
check:doc-snippet-types; that is the script file, and the npm script ischeck:doc-snippets. Re-deriving frompackage.jsonand.github/workflows/also surfacedcheck:doc-fences, which the dispatch did not name and which shares the snippet gate's exact scan surface — run here, green.DOCS_ROOT = 'content/docs'over.mdx/.md, so this file is in population by their own configuration.check:doc-snippetsreports 179 covered / 44 ungated, and the 44 are a list declared in the script:content/docs/plugins/plugin-form.mdxis not in it, and the page holds 4 TS-family fences, so it is one of the 74 covered docs that actually compile.check:control-bytesscansgit ls-filesminus/(^|\/)(node_modules|dist|build|\.next|\.turbo|\.wt-[^/]*)\//; the path is tracked and matches no exclusion.eslint --format json content/docs/plugins/plugin-form.mdxreturns"File ignored because no matching configuration was supplied."--build-filternames before judging, and confirmeddistmaterialized in this worktree (packages/types/dist/form.d.ts:905holdsexport interface FormField {) rather than trusting the turbo cache-hit log, which replayed a path from another agent's worktree.Sibling-page sweep — reported, not widened
The literal pattern appears once in the whole docs tree, on the page corrected here:
No other page says "declared once", "redeclare", "sole declaration" or "declared exactly". Three neighbours in the same closure-claim family (negative existence over the whole tree) were found and deliberately not touched — see the report on #6172 for the measurements.
Part of #6172.
Generated by Claude Code
Generated by Claude Code