Repository navigation
docs(types): the content-channel tombstones state the BaseSchema premise in the tense it is true (objectui#9933) - #10417
Conversation
…ise in the tense it is true 146 per-component docblocks in packages/types/src justified their `body` / `children` tombstone with "`body` and `children` are inherited-and-optional from BaseSchema, whose own docblock admits ..." (137) or its single-key sibling "`body` is inherited-and-optional from BaseSchema, whose own docblock admits ..." (9, line-wrapped so a line-bound grep of the phrase misses them). Since objectui#6771 `BaseSchema.body` is `never` and BaseSchema's docblock no longer admits the two-spelling ambiguity, so the present-tense opening clause was false while the rest of each paragraph was true as history. Each paragraph now dates the inherited-and-optional state to before its own tombstone card (objectui#9256 / objectui#8284) and states the present: the base refuses `body` itself, and (for the neither-channel family) still declares `children`, which this node's tombstone refuses. Comment text only; no declaration, member, type or export moves. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014mXUNuFomfj24w7s1pZzhN
…s a @object-ui/types patch The rewritten docblocks are on exported members and reach the emitted .d.ts, so the package ships changed bytes (check-changeset-presence.mjs header, "Comment text in src DOES reach a published .d.ts"). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014mXUNuFomfj24w7s1pZzhN
…s sentence The first draft quoted the stale clause verbatim, so the tree-wide phrase instrument used to measure this change kept firing on the changeset that reports its removal. Paraphrased; the claim is unchanged. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014mXUNuFomfj24w7s1pZzhN
|
changeset-claim-re-read
|
✅ 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
|
Contract reviewServed-tier: ① Derived judgmentsAccept/reject sets and published surface — no change; the JSDoc-only claim holds. Site counts, re-derived with my own continuation-aware parser over every
Present-tense truth on the head tree ( Historical clause verified, not inferred. I fetched the #9895 merge commit Rewrites judged: shape A adds no new false statement; it drops the quotation of BaseSchema's former docblock rather than re-tensing it — that fact is still recorded in past tense on ② Semver level
③ Boundary flags
Implemented-by: VERDICT: PASS |
Fixes #9933
Clause-②: no
Clause-②: no— JSDoc text only: every input's accept/reject verdict is byte-identical before and after, and no published declaration, member or export changes.Implemented by the
os-devdispatched fromdomain:uiseat 2, sessionhttps://claude.ai/code/session_014mXUNuFomfj24w7s1pZzhN(mode:subagent). Basea707197, headf30b2c8.What changed
JSDoc comment text only, in
packages/types/src/{ai,complex,data-display,disclosure,feedback,form,layout,navigation,objectql,overlay,reports,views}.ts, plus.changeset/9933-stale-baseschema-premise-docblocks.md('@object-ui/types': patch). Every changed diff line in the 12 source files is a JSDoc continuation line (non-comment changed lines: 0), so no declaration, member, type or export moves.The stale premise came in two shapes. Each shape is byte-identical across its sites. Each was rewritten by an exact-match replacement that refused to write unless the per-file match count equalled the census count:
bodyandchildrenare inherited-and-optional from {@link BaseSchema}, whose own docblock admits …"body?: never, 70children?: neverbodyis inherited-and-optional from {@link BaseSchema}, whose own docblock admits …", with a line break between "whose own" and "docblock admits"body?: neveronbox,span,container,flex,stack,grid,scroll-area(layout.ts),form,toggle(form.ts)childrenShape A now reads:
Shape B now reads:
Why this wording:
BaseSchema's former docblock is dropped rather than moved into the past tense.BaseSchema.children's own docblock already records it ("This docblock used to read …").BaseSchema.body?: nevercarries@deprecated Retired spelling of children.BaseSchema.childrenis still declared asSchemaNode | SchemaNode[].SchemaRenderer's metadata destructuring still stripschildrenandbodybefore it spreads the props.Measurements — base
a707197vs headf30b2c8git grep -c "whose own docblock admits"packages/types/srcpackages/types/srcpackages/types/srcchildreninstead of" (command 2)git grep -c "REFUSED BY NAME"packages/types/srcqqzz_absent_token_9999packages/types/srcbodyonBaseSchemaitself;" / "… itself." (command 1)packages/types/srcpackages/types/dist/*.d.tsafter the builddistform.tsandlayout.ts, which are inside the claimed file surface, so this PR rewrites all 146.Command 1 (REF =
a707197orf30b2c8). The enumeration and the read come from the same ref:Printed at
a707197:stale=146 present-tense=146 control=158 absent=0 newA=0 newB=0. Printed atf30b2c8:stale=0 present-tense=0 control=158 absent=0 newA=137 newB=9.Command 2 (whole tree):
Emitted declarations, from
packages/types/dist/ai.d.tsafterpnpm --filter '@object-ui/types^...' --filter @object-ui/types build. The build ran on54612db, whose source is byte-identical tof30b2c8: the only later change is the changeset.Local verification at
f30b2c8pnpm --filter '@object-ui/types^...' --filter @object-ui/types build(under the shared lock):VERDICT command-exit 0,✓ dist completeness: 1 package(s) complete (130 emitted files verified).pnpm --filter @object-ui/types type-check(tsc --noEmit && tsc -p tsconfig.examples.json && tsc -p tsconfig.test.json), thenpnpm exec vitest run --maxWorkers=2 packages/types/ scripts/__tests__/changeset-polarity-census.test.ts scripts/__tests__/check-changeset-no-major.test.ts scripts/__tests__/check-changeset-presence.test.tsfrom the repo root:Test Files 232 passed (232),Tests 5249 passed (5249),VERDICT command-exit 0.node scripts/check-changeset-presence.mjs:✅ 12 source file(s) of 1 released package(s) changed, and this change declares 1 changeset(s): .changeset/9933-stale-baseschema-premise-docblocks.md.Without the changeset it read❌ 12 source file(s) of 1 released package(s) changed, and this change adds no changeset. The bump is apatchand not an empty frontmatter, because of the gate header's own section "Comment text insrcDOES reach a published.d.ts": the emitted.d.tstext moved, as the dist counts above show.node scripts/check-changeset-claims.mjs: exit 0 (report-only). Self-contradiction reading:✅ Every package declared across those 1 body(ies) is either not negated in its own prose. The went-false reading lists 56 pending changesets that name a file this change touches. I re-read the ones about content channels (see the Acceptance notes).node scripts/check-changeset-overwrite.mjs:✅ No pre-existing changeset was modified or deleted.node scripts/check-changeset-no-major.mjs:✅ No changeset declares a major bump.node scripts/check-control-bytes.mjs:✅ check-control-bytes: OK (scanned 8472 tracked text file(s); skipped 85 binary).Also self-scanned the changed files for control bytes: grep exit 1, no match.node scripts/check-new-cross-file-line-citations.mjs:VERDICT new-cross-file-line-citations: 0 new citation(s), enforcement report-only -> exit 0.node scripts/check-pending-changeset-literals.mjs:✅ No test source names a pending changeset.node scripts/check-doc-component-types.mjs:✅ Every documented component type is registered.node scripts/check-comment-mask-corpus.mjs(ondf2d696, same source):1 disagree … within the residue objectui#7882 is holding open, exit 0.node scripts/check-governed-queue-guard.mjs --testover the changed paths:✅ NOT GOVERNED — 13 path(s) checked against 5 governed surface(s); none matched.eslint.config.jsapplies its**/*.{ts,tsx}blocks to these files.pnpm exec eslint --format jsonover the 12 files returned 12 result entries and no ignored-file notices.@typescript-eslint/no-explicit-anyon code lines.eslint.config.jshas noprojectService,parserOptions.projector*TypeCheckedpreset (grep count 0), so linting is not type-aware. A comment-only diff therefore cannot move the result for any untouched file.pnpm lint, the fullpnpm testshards, and E2E. CI runs these.Acceptance notes
Out-of-surface findings. These were measured but not edited. None is class a, b or c, so no card is filed.
The former
BaseSchemaquote still appears in two places:.changeset/8284-content-channel-per-component.md, as "BaseSchemadeclares two optional content channels and its own docblock admits that …". This changeset is pending, so it will publish into the CHANGELOG verbatim, in the same release as objectui#6771's changeset.packages/types/src/__tests__/content-channel-per-component-8284.test.ts, under "The defect this pins closed".Both are the defect as it stood when those files were written. The third quote hit, in
packages/types/src/base.ts, is already in the past tense ("This docblock used to read …"). Carrier: none..changeset/9256-content-channel-family-d.md, in its AMENDED paragraph, says "The two twins are unchanged and go on inheritingbodyas the content slot". That became false with objectui#6771. The family-D test file records that each chatbot twin now refusesbodywith the NEITHER-channel tombstone, pointing atrequestBody. The changeset is pending and will publish verbatim. Carrier: none.The runtime refusal messages of shape B's zod twins say "
bodyis inherited fromBaseSchema, so an authoredbodyparsed green here and rendered an EMPTY element". There are 2 inpackages/types/src/zod/form.zod.tsand 7 inpackages/types/src/zod/layout.zod.ts, one peraliasKeyRefusal('body', 'children', …)of the same nine components. They ship indist/zod/index.zod.jsand are shown to authors. The remedy they name (children) is correct; only the premise is out of date. They are not edited because this dispatch excludespackages/types/src/zod/: objectui#7715 is in flight there. Carrier: none — objectui#7715's branch has no diff yet, so it is not known to touch these messages.Guard: none added. A pin on the absence of the phrase would block only this wording, not the class, which is a premise about another declaration restated per member that goes stale when that declaration changes. After this change the tree holds no copy of the paragraph to paste from. So this PR adds no test pin and no CI gate.
Overlap: draft PR objectui#8941 edits the
BulkActionDef.icondocblock inobjectql.ts. This PR'sobjectql.tshunks sit only in theObjectGallerySchemaandObjectDataTableSchemacontent-channel tombstones, so the two PRs do not share a hunk. Nothing underpackages/types/src/zod/is touched.Labels: this PR writes none. objectui path labels come from
labeler.yml.Generated by Claude Code