Repository navigation
docs(changeset): the two pending console changesets count and mark all ten declared-breaking entries each (deliberate correction) - #23173
Conversation
…l ten declared-breaking entries each The objectui pin-bump changesets console-20c6d351ad74 and console-f0268ad78485 were written by the digest before it read a decorated opener or a bold lead label carrying "(breaking ...)". Re-run on main over the same objectui ranges (47b1f0bb7174..20c6d351ad74 and a58626c88dc8..f0268ad78485), the fixed digest reads 10 breaking entries in each. This copies its count line and its marker on the ten newly recognised entries in place, line for line, and keeps the hand-answered ADR-0087 disposition blocks and frontmatter byte-identical. The bump is not re-run. Claude-Session: https://claude.ai/code/session_012zwsLMxQBwHUYJgPyrpEvx Co-authored-by: Claude <noreply@anthropic.com>
|
|
Contract reviewServed-tier: Read: card #23136 (body and all four comments; the claim ① Derived judgmentsAccept-set and public-surface changes implied by the diff: none. The compare Note 1 —
Note 2 —
Invariants the card and the triage grade set, measured base vs head on both files (md5 of the extracted lines,
Check-runs on ② Semver level
③ Boundary flagsDev report
No escalation to the maintainer is owed by this record beyond what the landing rules already reserve: the PR is not governed ( Implemented-by: VERDICT: PASS |
Fixes #23136
Clause-②: no (published changelog text; no accept set or public surface widens)
What this does
Two pending
@objectstack/consolechangesets get corrected in place:.changeset/console-20c6d351ad74.mdand.changeset/console-f0268ad78485.md. In each one:**BREAKING**marker: 4 in the first file, 6 in the second, 10 in all.Both files are unconsumed.
.changeset/pre.jsonismode: pre,tag: next, with 0 consumed changesets, read onorigin/maindc93781c1. So whatever they say when the Version Packages PR merges ships in@objectstack/console's CHANGELOG.The 12 replaced lines are the digest's own output, copied line for line.
scripts/objectui-changeset-digest.mjsonmain(the digest as of PR #23131) was re-run over each file's objectui range into a scratch file. I diffed that output against the committed file: it differs on exactly these 12 lines and on the ADR-0087 disposition comment, and nowhere else. The disposition comment was answered by hand, and the digest emits only itsTODOplaceholder there. So the comment stays as committed and the bump is not re-run.The diff has no new changeset, no
CHANGELOG.md, nocontent/docs/releases/, no.changeset/pre.jsonand no code: +12 / -12 over 2 files. I measured every edited file at basedc93781c1and head6447f32ecwith an md5 of the extracted lines. The frontmatter bump block and the ADR-0087 disposition comment are byte-identical, and there is still exactly oneadr-0087:marker per file:console-20c6d351ad74.md(lines 49-90, 42 lines)4d8165bda53cc2211ebc873b21a0dc8a7f9512041627f495063dfc6b2bea2dc2console-f0268ad78485.md(lines 120-152, 33 lines)e503fdd7341c8ee1378fe8214dd7afbd7f9512041627f495063dfc6b2bea2dc2Neither file carries a
Clause-②line, at base or at head. A raw-control-byte scan of both files finds nothing.The measurement, re-run on
mainThe objectui input is a full, non-shallow clone of
objectstack-ai/objectui(git rev-parse --is-shallow-repositoryanswersfalse). All four endpoints resolve to commits. The shared sibling checkout is shallow and does not hold20c6d351ad74ora58626c88dc8, so it was not used.Both counts match the card (10 and 10), so no count differs from it.
Control: the producer of the under-count. I ran the digest as it stood before the two repairs, over the same ranges and the same clone. The version at
c9b5b24b0(before PR #23131) and the one at46064dfa0(before PR #23117) both read33 releasing, 6 breakingand173 releasing, 4 breaking. The46064dfa0output equals both base files byte for byte outside the disposition comment. So the base text is that digest's output, and PR #23131 is the change that moves these two counts. PR #23117's decorated-opener reading moves neither of them.check-empty-changesetis red on purpose: DELIBERATE CORRECTIONscripts/check-empty-changeset.mjsrefuses a diff that modifies a changeset present on the merge base (the foreign changeset rule). It names two classes with opposite remedies:This PR is the second class by design, for both files. Each is a pending release note whose count line and markers under-state the breaking entries its own range declares. Nothing here is restored to turn the gate green. The gate stays red until the correction is confirmed. The direction on #23136 names that confirmation: a contract-tier review of record on this same head, as for #22586. That review names each changed note and judges each rewritten line, and the table below lists all 12.
The gate's output on head
6447f32ec(node scripts/check-empty-changeset.mjs --base origin/main, exit 1):Corrections, per line
In the table:
…elides text left unchanged.tocommit (the digest reads each changeset there). I quote it verbatim up to the first sentence.BREAKING_LEAD_LABELreads since PR fix(scripts): the objectui changeset digest reads a (breaking …) parenthetical inside a bold lead label #23131, and the digest before it did not..changeset/console-20c6d351ad74.md(objectui range47b1f0bb7174...20c6d351ad74)console-20c6d351ad74.md:128a55f0ccd.changeset/12059-sidebar-no-reorder.md:9: "**`@object-ui/layout` (breaking, declared `minor` per the version policy).** `NavigationRenderer` retires `enableReorder` and `onReorder`, …"console-20c6d351ad74.md:13c7b30bd66UnifiedViewConfig.chartretires with a tombstone …UnifiedViewConfig.chartretires with a tombstone ….changeset/12063-unified-view-config-chart-retired.md:9: "**Retired (breaking), `@object-ui/types`.** `UnifiedViewConfig.chart` declared the list-view chart's"console-20c6d351ad74.md:16025341692dataset; …dataset; ….changeset/6152-list-view-legacy-chart-retired.md:13: "**Changed (breaking for a stored chart view that names no `dataset`).** Every door refuses the"console-20c6d351ad74.md:193fd862510.changeset/6152-list-view-readers-retired.md:14: "**Changed (breaking for a stored view that carries a refused key).** Rounds 11 and 12 of"console-20c6d351ad74.md:43(count line)The six entries already marked at base are
7282c6a51,1f1c4b526,e4c0b5432,3c3115e38andd32869883(two entries). The digest reads them breaking too, and they are unchanged..changeset/console-f0268ad78485.md(objectui rangea58626c88dc8...f0268ad78485)console-f0268ad78485.md:105d77c099boptionsbag is the@objectstack/speclist overlay's bag by reference, …optionsbag is the@objectstack/speclist overlay's bag by reference, ….changeset/6152-list-view-options-bag.md:12: "**Narrowed (breaking), `@object-ui/types`.** `@objectstack/spec`'s authoring list view declares no"console-f0268ad78485.md:13cf62edf68kanban,calendar,galleryandtimelineblocks are …kanban,calendar,galleryandtimelineblocks are ….changeset/6152-list-view-blocks-strict.md:9: "**Narrowed (breaking).** `@objectstack/spec` 17.7.0 judges each per-view-type block of a list view as"console-f0268ad78485.md:17b13ea3c67ObjectGridSchema.defaultFiltersand the flatObjectGanttSchema/ObjectMapSchemafilterfollow …ObjectGridSchema.defaultFiltersand the flatObjectGanttSchema/ObjectMapSchemafilterfollow ….changeset/6152-grid-default-filters-gantt-map-filter.md:26: "**Narrowed (breaking).**"console-f0268ad78485.md:211473757bfobject-calendarelement'scalendarcontainer is …object-calendarelement'scalendarcontainer is ….changeset/6152-object-calendar-container-strict.md:9: "**Narrowed (breaking).** `@objectstack/spec` 17.7.0 types `ComponentPropsMap['object-calendar'].calendar`"console-f0268ad78485.md:22d7e9e9ab6object-gridoperationsand theobject-grid/object-kanban/object-calendarfilterfollow …object-gridoperationsand theobject-grid/object-kanban/object-calendarfilterfollow ….changeset/6152-grid-kanban-calendar-17-7-members.md:14: "**Narrowed (breaking).** `@objectstack/spec` 17.7.0 types `object-grid`'s `operations` as the"console-f0268ad78485.md:29d73d98770object-grid'sresizableColumnson both faces, …object-grid'sresizableColumnson both faces, ….changeset/6152-resizable-columns-retired.md:8: "**Retired (breaking).** `resizableColumns` was the legacy second spelling of `resizable` on"console-f0268ad78485.md:111(count line)The four entries already marked at base are
18d7b489c,172acc313,d92b2a15dand74add0c12, and they are unchanged.The list in this file is capped at 100 entries ("…and 73 more releasing changesets"). The digest's own list over the range is line-identical to this file's list. All 10 breaking entries sit inside the cap, so no breaking entry is hidden behind it.
Scope statement: the disposition narratives now count fewer than the list (not changed here)
The direction on #23136 holds the ADR-0087 disposition comments byte-identical, and this PR keeps them that way. Their narrative sentences now name fewer breaking entries than the list above them:
console-20c6d351ad74.md:60-61reads "The range carries six declared-breaking objectui changes, each by its author's breaking annotation and none by a declaredmajor. Each is answered here:". It then answers (1) to (6). Lines 80-84 name three more by their!subjects:3fd862510,025341692andc7b30bd66.8a55f0ccd(row 1) is named nowhere in the comment.console-f0268ad78485.md:130-131reads "The range carries four declared-breaking objectui changes, each by its author's breaking annotation and none by a declaredmajor. Each is answered here:". It answers (1) to (4). None of the six entries in rows 6 to 11 is named in the comment.:88-89and:150-151): "Scope of the claim, stated rather than implied: it is a claim about THIS diff, not a per-entry re-measurement of the upstream declared-breaking entries."I checked whether any gate reads these sentences:
check-adr-0087-registrationdoes not judge either file. On this diff it prints "✓ check-adr-0087-registration: this PR adds no declared-breaking changeset (2 non-breaking changeset(s) seen)." Both files declare breaking already at the merge base (**BREAKINGin the body), and that gate exempts anMrow that was breaking at base as inherited, before it reads any disposition. Its "non-breaking" wording covers those inherited rows as well.parseChangeset,breakingDeclaration,readDisposition,findMigrationPrescription) on the head text of both files. Each readsbreaking=true, dispositionnot-required/no-migration-prescription, and no migration prescription. The same holds at base. That category refuses only a body that carries a migration prescription. It does not read a count, and it does not require each breaking entry to be answered.git grepfor "Each is answered" and "declared-breaking objectui changes" outside.changeset/hits only the releasedpackages/console/CHANGELOG.md.Every derived gate except the one above is green (Verification below), so no gate goes red on this tension.
What this leaves: the comment is an HTML comment. It renders as nothing, but it is copied verbatim into the raw
packages/console/CHANGELOG.mdtext, the way earlier console comments already are there. So the stale "six" and "four" would ship in the raw CHANGELOG under the corrected count lines. Whether to route an update to these two comments is a call for the dispatching seat. This PR does not make it.Verification
I derived the gates with
node scripts/pm/dispatch-gates.mjs --commands --repo objectstack-ai/objectstackon HEAD6447f32ec. The change set is exactly these 2 files (+12 / -12) against merge basedc93781c1, which is stillorigin/main. That gave 20 commands, and all 20 ran on6447f32ec. The--ranreconciliation reads "✓ dispatch-gates --ran: 20 derived famil(ies) accounted for — 20 run, 0 NOT-MEASURED (a DERIVED zero — all 20 recorded an exit code and none of them is 3)."node scripts/check-empty-changeset.mjs --base origin/main, exit 1. It prints two::errorlines, quoted above.check-adr-0087-registration --base origin/main(quoted above) and its--self-test(548 assertions);check-changeset-no-major --base origin/main("This diff introduces nomajorbump.") and its--self-test(401);check-closing-keyword-parityand its--self-test;check-comment-mask-corpus(8936 files, 0 disagree);check-empty-changeset --self-test(170);release-rehearsal-clone --self-test;release-pending-publish --self-test;check:changeset-gate-self-tests;check:driver-memory-census;check:gitlink-declared;check:nul-bytes(11176 files, no raw ASCII control bytes);check:objectui-changeset(the digest's andobjectui-range's self-tests);check:pm-changeset-deadline-census;check:published-files;check:refd-timer-probe;check:watch-hint-literal.node scripts/check-changeset-fixed.mjs, the one artifact-roster family whose roster lives under.changeset/. Exit 0.Acceptance notes
check-adr-0087-registrationprints its count of skipped files as "non-breaking changeset(s) seen". Itsskippedlist holds both truly non-breaking files and files inherited as breaking from the base. On this diff both files are the second kind, so the line reads as if these two notes declared nothing breaking. This is an observation only. Nothing was filed.Generated by Claude Code