From ea197938b4ac3ea68892ffef8eeca563defa7174 Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 24 Aug 2026 12:09:51 +0000 Subject: [PATCH] docs(scripts): record the withdrawal of the vacuous byte-identity sentence MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The #4580 changeset closed with "Core's entry surface is unchanged: `dist/index.d.ts` is byte-identical across the change". #5673 withdrew that sentence from the source docstring it was also written into, but the release tooling had already copied the changeset verbatim into five package CHANGELOGs, where it survives with no trace of the withdrawal. Per the 2026-08-24 ruling, the five released entries are not edited — compiled release artifacts stay on the changeset pipeline and the npm copies are immutable — so the correction is recorded once in this header, which is where this repository already keeps findings of this shape. The record states why the measurement is vacuous (core's entry `.d.ts` is emitted from a barrel that only forwards the symbol, so it cannot move for a re-exported declaration's shape change), and lists the five copies with the search that re-derives their line numbers as they drift. Comment-only: the gate's behaviour is unchanged. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01CSoz9uGhaaSgiq3hshtN7L --- scripts/check-changeset-presence.mjs | 51 ++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/scripts/check-changeset-presence.mjs b/scripts/check-changeset-presence.mjs index cae272093f..9df638f203 100644 --- a/scripts/check-changeset-presence.mjs +++ b/scripts/check-changeset-presence.mjs @@ -123,6 +123,57 @@ * contract, and the same one this gate exists to close one level up. Note the * direction: for a filter deciding whether to RUN work, "cannot tell" means run; * here the work IS the decision, so "cannot tell" means fail. + * + * ## A withdrawn sentence that survives in five released CHANGELOGs (objectui#5913) + * + * Recorded here once, because the five copies cannot be corrected in place and + * this header is where findings of this shape live. objectui#4580's changeset — + * the `SchemaNode` de-duplication — closed with: + * + * Core's entry surface is unchanged: `dist/index.d.ts` is byte-identical + * across the change. + * + * That sentence is a VACUOUS MEASUREMENT. objectui#5673 withdrew it from the + * source docstring it was also written into + * (`packages/core/src/types/index.ts`), which now carries the full account and + * the calibration recipe; this is the pointer for anyone who arrives from a + * CHANGELOG instead. + * + * It is vacuous because `core/dist/index.d.ts` is emitted from a barrel that + * only FORWARDS the symbol, and forwarding never restates a shape — not + * `export` of everything, and not the named `export type { SchemaNode, … } from + * './types/index.js'` line either. Only the module that DECLARES the symbol can + * move. So that file is byte-identical under ANY change to a re-exported + * declaration's shape, including one that breaks every consumer, and a gauge + * that cannot fail for the change class it is quoted against has discharged + * nothing. #5673's PR measured exactly that: a probe key added to the declaring + * module moved `@object-ui/types`' `dist/base.d.ts` and brought it back, while + * `core/dist/index.d.ts` and `core/dist/types/index.d.ts` held one hash across + * all three legs. The withdrawn sentence was watching the two files that cannot + * move. + * + * The five copies are NOT edited, and that is a ruling (maintainer, 2026-08-24), + * not an omission. The release tooling composes CHANGELOGs from `.changeset/*.md` + * at release time, so hand-editing the compiled artifact leaves the pipeline + * this gate exists to protect; and the same text is already published to npm on + * five packages, where a repo-side edit recalls nothing and only makes the + * repository disagree with what shipped. The withdrawal is therefore recorded + * once, here. + * + * Where the copies are, verified at `8d3a5294a`: + * + * packages/components/CHANGELOG.md:1472 + * packages/core/CHANGELOG.md:1021 + * packages/plugin-dashboard/CHANGELOG.md:581 + * packages/react/CHANGELOG.md:450 + * packages/types/CHANGELOG.md:705 + * + * CHANGELOGs are append-heavy and those line numbers move; the sentence does + * not. Re-derive them with + * `git grep -nI "is byte-identical across the change"`, which is a search and + * its own control at once: the phrase is known-present, and it returned these + * five plus one unrelated i18n test under `packages/fields`. Six files means the + * search worked; zero means it broke, not that the copies are gone. */ import { execFileSync } from 'node:child_process';