.changeset/8992-user-actions-collapse-and-docblock.md contains one wrong count that ships straight into packages/types/CHANGELOG.md at the next release. One word, one occurrence — and the file contains a second, correct occurrence of the same word that ⛔ must not be touched.
The two occurrences, and only one is wrong
UserActionsConfigSchema has eleven members. buttons is the only one that never carried a default ⇒ ten are defaulted. This PR moves three of those ten (group, hideFields, rowColor).
| # |
text in the changeset |
verdict |
| 1 |
"Measured on this object: all ten defaulted keys read description = undefined after the strip" |
✅ CORRECT — ⛔ do not change |
| 2 |
"before, the local extension supplied descriptions the other ten defaulted keys did not have" |
❌ WRONG — the three ARE among the ten; "the other" ones are seven |
The file's own item 2 already says "SEVEN of the other eight keys have declared ZodDefault all along" and enumerates them (sort, search, filter, refresh, rowHeight, addRecordForm, editInline). So the file contradicts itself, and the seven is the half that is right.
⇒ The fix is exactly: the other ten defaulted keys → the other seven defaulted keys. A naive find-and-replace of "ten" breaks occurrence 1.
⚠️ Check the PR body too — objectui#9017's description carries the same sentence.
Provenance
Found by the round-2 contract reviewer of PR objectui#9017 (record 5624735304, head 2f430a3152f1a32a77a8b4ad8291f1405bf14586), which graded it non-blocking and returned VERDICT: PASS — the preceding sentence carries the true count, and the mechanism and outcome are right. I verified both occurrences myself against the file at that head before filing this; the reviewer's reading reproduces exactly.
The dispatching seat's only two legal moves on a subagent verdict are to adopt it verbatim or void it entirely — ⛔ never to rewrite one. Another repair round would have moved the head and voided the PASS, costing a full ceiling-tier review for one word. So #9017 was adopted and landed as measured, and this card is the correction, filed so the error does not reach the CHANGELOG by default.
⚠️ It is the same error class round 1 of that review already fixed once ("the other eight keys" → seven of eight). A miscount of the same object survived a repair round aimed at miscounts of that object.
Timing
.changeset/*.md is release-note input, consumed at release. ⇒ this must land before @object-ui/types next publishes, after which the correction belongs in a docs-only PR against packages/types/CHANGELOG.md instead — ⛔ never as a rider on a code PR, per the release-notes guardrail.
Scope
One file, one word (two if the PR body is corrected). ⛔ Nothing else rides. Clause-②: no — prose in a changeset, no accept-set or public-surface change; declare it in the claim and let the gate judge.
Refs objectui#8992 · PR objectui#9017 · review record 5624735304.
Site 2 — .changeset/8913-object-kanban-columns-declared.md, and it is bigger than a count
⚠️ Added after PR objectui#9021 merged (landing commit a4b723fab99b5e74917e03598382d25d15f487da, 2026-09-10T20:22:19Z). That merge is what makes this paragraph false; it was true when written.
Lines 65–69 of that pending changeset read, verbatim:
The bare-string array is admitted for parity and is inert on this block. The renderer honours it only when a board has no groupBy, and groupBy is required on this face — so no document that passes this schema reaches it. It is declared because refusing an arm the protocol names would be a second narrowing; the requiredness is tracked as objectui#8990.
Three claims in it are now wrong, and ⛔ the last one is the least important:
| claim |
status after #9021 |
"groupBy is required on this face" |
FALSE — packages/types/src/objectql.ts:3033 is groupBy?: string; and zod/objectql.zod.ts:1286 is z.string().optional() on main @ a4b723fab |
| "is inert on this block … no document that passes this schema reaches it" |
FALSE — a schema-valid lane-less board now reaches the bare-string arm |
| "the requiredness is tracked as objectui#8990" |
stale — #8990 is closed / completed |
⇒ ⛔ Do not fix this by deleting the last clause. The paragraph's headline sentence is the wrong one; rewrite it to say the arm is now reachable, and cite #8990 as the change that made it so rather than as pending work.
Pending, measured: the file is still in .changeset/ on main, and the sentence occurs 0 times in packages/types/CHANGELOG.md — control: that CHANGELOG is 4550 lines, so the query is live. It has not been released yet, and it ships as written at the next publish.
Why this was nearly missed
The #9021 landing sweep grepped content/ and packages/ for "tracked as objectui#8990" and got 0, with a live control (36 hits for objectui#8990 overall). .changeset/ is neither directory. A residue sweep that omits .changeset/ cannot see release-note input — which is the only thing that reaches a CHANGELOG.
Scope, restated for two sites
Both sites are prose in pending changesets and must land before @object-ui/types next publishes; after that they belong in a docs-only PR against packages/types/CHANGELOG.md, ⛔ never as a rider on a code PR. Clause-②: no — no accept-set or public-surface change. Site 1 is one word; site 2 is one paragraph.
Generated by Claude Code
.changeset/8992-user-actions-collapse-and-docblock.mdcontains one wrong count that ships straight intopackages/types/CHANGELOG.mdat the next release. One word, one occurrence — and the file contains a second, correct occurrence of the same word that ⛔ must not be touched.The two occurrences, and only one is wrong
UserActionsConfigSchemahas eleven members.buttonsis the only one that never carried a default ⇒ ten are defaulted. This PR moves three of those ten (group,hideFields,rowColor).description = undefinedafter the strip"The file's own item 2 already says "SEVEN of the other eight keys have declared ZodDefault all along" and enumerates them (
sort,search,filter,refresh,rowHeight,addRecordForm,editInline). So the file contradicts itself, and the seven is the half that is right.⇒ The fix is exactly:
the other ten defaulted keys→the other seven defaulted keys. A naive find-and-replace of "ten" breaks occurrence 1.Provenance
Found by the round-2 contract reviewer of PR objectui#9017 (record
5624735304, head2f430a3152f1a32a77a8b4ad8291f1405bf14586), which graded it non-blocking and returnedVERDICT: PASS— the preceding sentence carries the true count, and the mechanism and outcome are right. I verified both occurrences myself against the file at that head before filing this; the reviewer's reading reproduces exactly.The dispatching seat's only two legal moves on a subagent verdict are to adopt it verbatim or void it entirely — ⛔ never to rewrite one. Another repair round would have moved the head and voided the PASS, costing a full ceiling-tier review for one word. So #9017 was adopted and landed as measured, and this card is the correction, filed so the error does not reach the CHANGELOG by default.
Timing
.changeset/*.mdis release-note input, consumed at release. ⇒ this must land before@object-ui/typesnext publishes, after which the correction belongs in a docs-only PR againstpackages/types/CHANGELOG.mdinstead — ⛔ never as a rider on a code PR, per the release-notes guardrail.Scope
One file, one word (two if the PR body is corrected). ⛔ Nothing else rides.
Clause-②: no— prose in a changeset, no accept-set or public-surface change; declare it in the claim and let the gate judge.Refs objectui#8992 · PR objectui#9017 · review record
5624735304.Site 2 —
.changeset/8913-object-kanban-columns-declared.md, and it is bigger than a counta4b723fab99b5e74917e03598382d25d15f487da, 2026-09-10T20:22:19Z). That merge is what makes this paragraph false; it was true when written.Lines 65–69 of that pending changeset read, verbatim:
Three claims in it are now wrong, and ⛔ the last one is the least important:
groupByis required on this face"packages/types/src/objectql.ts:3033isgroupBy?: string;andzod/objectql.zod.ts:1286isz.string().optional()onmain@a4b723fabclosed/completed⇒ ⛔ Do not fix this by deleting the last clause. The paragraph's headline sentence is the wrong one; rewrite it to say the arm is now reachable, and cite #8990 as the change that made it so rather than as pending work.
Pending, measured: the file is still in
.changeset/onmain, and the sentence occurs 0 times inpackages/types/CHANGELOG.md— control: that CHANGELOG is 4550 lines, so the query is live. It has not been released yet, and it ships as written at the next publish.Why this was nearly missed
The #9021 landing sweep grepped
content/andpackages/for"tracked as objectui#8990"and got 0, with a live control (36 hits forobjectui#8990overall)..changeset/is neither directory. A residue sweep that omits.changeset/cannot see release-note input — which is the only thing that reaches a CHANGELOG.Scope, restated for two sites
Both sites are prose in pending changesets and must land before
@object-ui/typesnext publishes; after that they belong in a docs-only PR againstpackages/types/CHANGELOG.md, ⛔ never as a rider on a code PR.Clause-②: no— no accept-set or public-surface change. Site 1 is one word; site 2 is one paragraph.Generated by Claude Code