docs(changeset): correct two now-false sentences in pending @object-ui/types changesets - #9064
Conversation
…ngesets
Both files are release-note INPUT, still pending in `.changeset/` and absent
from every tracked CHANGELOG, so each sentence ships as written at the next
`@object-ui/types` publish.
`8992-user-actions-collapse-and-docblock.md` — one word. `UserActionsConfigSchema`
has eleven members and `buttons` is the only one that never carried a default, so
ten are defaulted and this change moved three of those ten. "the other ten
defaulted keys" therefore names seven, and the file's own item 2 already
enumerates exactly those seven. The file's OTHER occurrence of "ten" ("all ten
defaulted keys read `description = undefined`") is correct and is untouched.
`8913-object-kanban-columns-declared.md` — one paragraph, invalidated when
objectui#8990 landed. The headline claim ("is inert on this block", "`groupBy` is
required on this face") is the wrong one, not the trailing citation: `groupBy` is
now optional on both twins, so a schema-valid lane-less board does reach the
bare-string arm. The paragraph now says the arm is reachable and cites
objectui#8990 as the change that made it so rather than as pending work.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Jmxdo7bmeqCQHLSfmLVX9w
Provenance — landing on a
|
| check | reading |
|---|---|
② check-clause2-carriers.mjs --pair 9064 |
rc 0 — declaration readable, both carriers agree |
② check-widening-tells.mjs --declaration no --files |
rc 0, but ⛔ NOT MEASURED — see below |
| ③ every check on the head, ⛔ not a required subset | 33 check runs, 30 success + 3 skipped, 0 failed, 0 pending; total_count 33 = array length 33 |
| governed surface | --pr objectstack-ai/objectui#9064 → 0 of 2 paths hit the register ⇒ NOT governed |
| mergeability | mergeable: true, mergeable_state: clean |
.changeset/*.md is not a declared surface. ⛔ So I am not reporting that gate as clearing this PR. What the no actually rests on is that the diff is markdown-only under .changeset/ — 2 files, 0 paths outside it, 0 non-markdown — which is checkable by inspection and which I confirmed on the diff.
Both edits verified by content, ⛔ not by the report
Site 1 is one line, and the occurrence that must NOT move is visible in the same hunk's context, untouched:
- supplied descriptions the other ten defaulted keys did not have.
+ supplied descriptions the other seven defaulted keys did not have.
with all ten defaulted keys read description = undefined sitting four lines above it, unchanged. Eleven members, buttons the only undefaulted one ⇒ ten defaulted; the three this PR's sibling moved are among them ⇒ the other ones are seven — which is also exactly what the file's own item 2 enumerates.
Site 2 is the paragraph, and the rewrite is better than what I specified. I asked for the headline sentence to be corrected; it also kept the historical claim true rather than deleting it — "groupBy was required on this face when this entry was written" — then names the mechanism (effectiveColumns takes the string branch under if (!schema.groupBy)), cites objectui#8990 as the change that made the arm reachable rather than as pending work, preserves the unchanged reason the arm is declared, and points at the pin carrying a firing control.
Two corrections to my own dispatch boilerplate, both from the dev, both right
check-widening-tells.mjsdoes not exist in objectui. My brief said aClause-②: noputs it live here; it lives in objectstack and is wired into objectstack'slint.yml(objectui has 0 wiring hits against a live control of 2 forcheck-half-states). It is a real gate for this seat's landing decision, run from the objectstack clone — as above — but ⛔ it is not a red a dev in objectui can ever wait for, and telling one to expect it is a defect in the brief. Corrected.h31ContractReviewCarrierSplitfires only when the two carriers DISAGREE, and returns null when both are absent — which the dev established by reading the script rather than inferring it. That confirms the correction I posted on card docs(changeset): two PENDING changesets carry now-false sentences — a wrong key count in8992-…mdand a paragraph in8913-…mdinvalidated by objectui#9021; both ship into the types CHANGELOG at the next publish #9042 and confirms the originalClaim:clause was wrong.
⭐ And one method note worth keeping: the dev's own line-based grep for the target sentence returned a false 0 before the edit, because the phrase spans a line break — it read exactly like "the clause is already gone". What proved presence was a multi-line anchor assertion with a count. That is the reassuring-output hazard the brief warns about, caught by the person it would have fooled.
PR flipped ready and enqueued. ⛔ Base is not hand-merged — the queue rebuilds on current main itself.
Generated by Claude Code
Fixes #9042
Two pending changesets on
maincarry sentences that are false today and would shipverbatim into
packages/types/CHANGELOG.mdat the next@object-ui/typespublish. Thiscorrects both. Markdown only, both files under
.changeset/; no source, no accept set.Site 1 —
8992-user-actions-collapse-and-docblock.md, one wordthe other ten defaulted keystothe other **seven** defaulted keys. One line.The file contains two whole-word occurrences of "ten" and only one is wrong; the other
(
all ten defaulted keys read description = undefined after the strip, line 57) is correctand is untouched — verified after the edit, not just before.
Re-derived on this branch's base rather than taken from the card. Two independent
derivations of the resolved dependency,
@objectstack/spec@17.4.0:json-schema/ui/ListView.jsonbuttons)buttons, def typeoptional)The seven are
sort, search, filter, refresh, rowHeight, addRecordForm, editInline— exactlythe seven the file's own item 2 already enumerates, which is the self-contradiction the card
identified.
The post-strip reading behind the occurrence that must NOT move was also measured, through
packages/types/distbuilt on this branch:The two CONTROL lines are the live half: the reader returns real strings when a description
is present, so the ten
undefinedreadings are a measurement rather than a broken accessor.Site 2 —
8913-object-kanban-columns-declared.md, one paragraphThe paragraph was true when written and was invalidated when objectui#8990 landed. The
headline sentence is the wrong one, so deleting the trailing
objectui#8990clause wouldhave left both false claims standing.
Re-derived on current
main:groupByis required on this face"groupBy?: stringinpackages/types/src/objectql.ts; the Zod twin's node reports def typeoptionalclosed/completedThe reachability is a real parse plus the renderer's own dispatch predicate, evaluated on the
parsed document rather than read off the source:
Three refusals with distinct issue codes and a second success: the instrument discriminates,
so
success=trueon the subject is a reading and not a schema that accepts everything.The rewrite says the arm is now reachable and cites objectui#8990 as the change that made it
so rather than as pending work. It keeps the original reason the arm is declared (refusing an
arm the protocol names would be a second narrowing) — that reason did not move; what moved is
that the arm is exercised rather than dormant. It also points at
packages/plugin-kanban/src/__tests__/laneLessBoard-8990.test.tsx, whose existence was checked.The sibling
8990-object-kanban-groupby-optional.mdalready records the same reachability fromits own side, so after this change the two pending entries agree instead of contradicting.
Both files are still PENDING — verified with live controls
.changeset/onorigin/main: both, listed straight out of theorigin/maintree.CHANGELOG.mdfiles: 0 files for each of six distinctivesentences from the two changesets.
ObjectKanbanhits 20 files,object-kanban17,UserActionsConfigSchema5.packages/types/CHANGELOG.mdis 4550 lines; controlsMinor Changes(27) andListColumnSchema(6) hit inside that file specifically.Neither has been released, so the correction belongs here and not in a docs-only CHANGELOG PR.
Does this PR owe a changeset of its own?
Answered by running
scripts/check-changeset-presence.mjs, not by guessing:Exit 0. The guarded population is a released package's published, executable source — its
src/, itsindex.html, files itspackage.jsonpublishes verbatim — minus documentation..changeset/is under no package, so a markdown-only diff there is outside the populationentirely and owes nothing.
Gates run locally
check-changeset-presence.mjscheck-changeset-no-major.mjsmajordeclaredcheck-changeset-fixed.mjscheck-changeset-overwrite.mjscheck-governed-queue-guard.mjs --testAGENTS.mdreturns exit 3 GOVERNEDcheck-changeset-overwrite.mjsdoes report this PR, expectedly and non-blockingly — itreports any change that modifies a changeset it did not add:
That gate's own header names this exact case as legitimate — "factual corrections to prose" —
and its narrower signal, a lost package declaration, does not fire:
declared at baseanddeclares noware identical on both files, which is the 18-for-19 shape its history measured.Labels
⛔
needs:contract-reviewis deliberately NOT hung on this PR. The card carriesClause-②: noand carries no such label;h31ContractReviewCarrierSplitinscripts/pm/check-half-states.mjsreturns a finding only when the two carriers disagree(
cardGated && barePrs.length > 0, or!cardGated && gatedPrs.length > 0) and returnsnullwhen both are absent. Hanging it here would manufacture the second, more dangerous half of that
split. Verified by reading the function, and the card's labels were re-read immediately before
opening this PR.
The declaration holds against the diff: 2 paths changed, 0 outside
.changeset/, 0 notmarkdown — no accept set moves and no exported symbol changes.
Sibling sweep
Fixed here: the two files named on the card. Nothing else is touched.
Reported, not fixed:
tracked as #Nforward reference whose card is nowclosed/completed(#6011, #7170, #7188, #7708, #8166, #8983, #8990). One of those isthis PR's own site 2. The other six read as a citation whose implication of pending work is
stale; ⛔ I did not verify whether each surrounding claim was actually falsified, and none of
them carries a falsified headline claim of the kind site 2 had. They are a report, not a fix,
and not this PR's one-line class.
main:9012-core-spec-floor.md(core declares@objectstack/spec: ^17.3.0),8604-record-details-columns-enum.md(
columns?: '1' | '2' | '3' | '4'inrecord-components.ts, while the dashboardcolumnsone level away stays
number), and8990-object-kanban-groupby-optional.md.groupByrequiredness or the inert/unreachable claim(1 match each, both this PR's file), against controls of 25 files mentioning
groupByand 67mentioning
inert. No other pending changeset carries the miscount class (the other ten,defaulted keys,eleven members,UserActionsSchema— 1 file each, this PR's), againstcontrols of 43 files containing
all tenand 393 containingkeys.The PR body of #9017 carries the same "the other ten" sentence. It is merged, so its body is
cosmetic and reaches no CHANGELOG; ⛔ I did not edit it, and it is not required.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Jmxdo7bmeqCQHLSfmLVX9w
Generated by Claude Code