Uh oh!
There was an error while loading. Please reload this page.
docs(types): record that field is excluded from the form-field pin ON PURPOSE - #6635
Merged
Merged
Conversation
…ON PURPOSE
`packages/types/src/__tests__/form-field-zod-coverage.test.ts` introduced its
pinned key list as "Every key `FormField` (../form.ts) declares by name". The
interface declares one key the list deliberately omits — `field`, the resolved
object-field metadata stash (objectui#3090) — so the sentence overclaimed, and
the pin's own rule ("any schema edit must touch the list here in the same PR")
read as an invitation to close the gap by adding `field` to `DECLARED_KEYS` and
to `FormFieldSchema`. That would make `objectui validate` accept and type a
runtime-only stash on authored documents, re-opening the spec-vocabulary pun
objectui#3090 closed at the `normalizeSectionField` chokepoint — a contract
widening arriving disguised as housekeeping.
The list header now says what the list is (the authorable key surface) and
records the exclusion as deliberate, with the reason. The `FormFieldSchema` doc
comment in `packages/types/src/zod/form.zod.ts` carried the same "keys mirror
the interface" overclaim and is corrected the same way.
Prose only: no schema change, no test-logic change, no behaviour change. Every
changed line in both files is a comment line.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_8ca04858-ea8e-5b85-9182-de59aa49e00cContributor
✅ Console Performance Budget
The eager closure is every chunk the entry reaches through static imports — what the browser fetches and parses before the app renders. The entry chunk on its own is a small fraction of it. 📦 Bundle Size Report
Size Limits
|
os-sales
marked this pull request as ready for review
August 28, 2026 07:32
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.
Fixes#6609
Prose only. No schema change, no test-logic change, no behaviour change — every changed line in both source files is a comment line (proof below).
The fence, honoured
⛔
fieldwas not added toDECLARED_KEYSand not added toFormFieldSchema, and the new prose exists specifically to stop a future reader from doing it. The pin's own rule — "any schema edit must touch the list here in the same PR" — read as an invitation to close the discrepancy in the wrong direction; admittingfieldwould makeobjectui validateaccept and type a runtime-only stash on authored documents, re-opening the spec-vocabulary pun objectui#3090 closed at thenormalizeSectionFieldchokepoint. The header now names that outcome so the widening cannot arrive disguised as housekeeping.No fork to report: the schema should not carry
field, and nothing in the merged tree argued otherwise.Premise re-verified on the merged tree
Branched from
origin/mainat4de9110c1— after objectui#6236 landed, sofieldsis in the list (line 79) and the card's quoted measurement is superseded. What was not already corrected is the header sentence itself: on4de9110c1it still read, verbatim,and
packages/types/src/form.tsstill declaresfield?: Record(string, any)onFormField(the resolved object-field metadata stash, objectui#3090). So the overclaim was live and the card's premise holds.Two further inaccuracies in that one sentence, found while correcting it and neutralised rather than restated:
visibleOnprecedeshidden/readonlyin the interface and follows them in the list. The replacement states the order is a reading aid and that the assertion sorts both sides.FormFieldSchemadoc comment inpackages/types/src/zod/form.zod.tscarried the same overclaim one layer over ("Keys mirror theFormFieldinterface in../form.ts"). Corrected the same way — the card's optional half.The corrected header, next to the list it describes
The file-level docblock's rule sentence gained the matching clause, since that is the sentence that does the inviting:
Anchored proof that
fieldwas NOT addedEach zero is paired with a positive control in the same query shape, so it reads as an absence rather than a broken pattern. Run on
dc44f49d:B4 is the one hit, and it is pre-existing and unrelated: the lookup-parameter entry nested inside
dependsOn, not a top-level schema key.Logic untouched, measured the same way — for each source file, every added/removed line stripped of leading whitespace, counting the ones that are not comment lines:
Changeset
The
Changeset Declarationgate ruled, and it was allowed to rule rather than pre-empted. Both source files live underpackages/types/src/, which the gate guards wholesale, so it failed with "2 source file(s) of 1 released package(s) changed, and this change adds no changeset". The answer it prescribes for a change that releases nothing is an empty-frontmatter changeset, which is what.changeset/6609-declared-keys-header-honesty.mdcarries. Re-run verdict:Verification — all on
dc44f49d, the final commitpnpm exec vitest run packages/types/Test Files 65 passed (65)/Tests 772 passed (772)— includes the pin file, logic untouchedTest Files 1 passed (1)/Tests 11 passed (11)pnpm --filter @object-ui/types run type-checktsc --noEmit+tsconfig.examples.json+tsconfig.test.json)pnpm --filter @object-ui/types run lint✖ 247 problems (0 errors, 247 warnings), exit 0 — all warnings pre-existingno-explicit-anypnpm check:control-bytes✅ check-control-bytes: OK (scanned 5487 tracked text file(s); skipped 85 binary).pnpm check:spec-symbols✅ spec symbol derivation: 1315 files scanned against 4959 spec export namesnode scripts/check-changeset-presence.mjs✅ … declares 1 changeset(s)pnpm changeset:check✅ No changeset declares a major bump.node scripts/check-changeset-overwrite.mjs✅ No pre-existing changeset was modified or deleted.The typecheck claim was itself checked rather than assumed:
tsc -p tsconfig.test.json --listFileslists the edited test file (1 hit) and the main project lists the edited zod file (1 hit), so "typecheck clean" actually covers both edits.The pin test was first run through
pnpm --filter @object-ui/types exec vitest, which this repo's vitest guard refuses by name (it would have resolved the wrong root and reported 22 console files as green). Re-run from the repo root as the guard instructs; the numbers above are from that run.Serial note
Held draft PR #6627 also touches
packages/types(retired-field-keys.ts+ the index barrel). This branch touches neither file — its whole diff is the two files above plus the changeset — so there is no crossing.Generated by Claude Code