Skip to content

Nothing distinguishes a calibrated entry-.d.ts byte-identity claim from a vacuous one, and three landed in one day #5914

Description

@claude

Filed out of #5673, whose ruling was explicit that a CI check is a different card with its
own surface. Recording the shape here so the judgement is triage's, not mine.

The class

Three times in one day, a PR justified "this re-export widened nothing" by reporting that
a package's entry dist/index.d.ts was byte-identical across the change. The reading is
always true and, for that change class, always uninformative: the entry file is emitted
from a barrel that only forwards the symbol, and forwarding never restates a shape —
neither export * nor export type { X } from '…'. Only the module that declares the
symbol can move.

Measured in #5673's PR on @object-ui/core, three legs (probe injected → rebuilt →
probe dropped → rebuilt), each leg from a cleared dist/ and a cleared
tsconfig.tsbuildinfo:

emitted filebasewith probeprobe dropped
@object-ui/typesdist/base.d.ts — declares the shape31b5a01d…8487500e…moved31b5a01d…
@object-ui/coredist/types/index.d.ts — forwards it0e64c8c6…0e64c8c6…0e64c8c6…
@object-ui/coredist/index.d.ts — entry barrel, names the symbol5cca207a…5cca207a…5cca207a…

The part a naive gate would get wrong

The gauge is not dead in general, and a rule that just bans the phrase would be wrong.
It can fail for a claim about which names the entry publishes — adding or removing
a re-exported name moves the barrel's bytes, which is exactly what
packages/app-shell/CHANGELOG.md:2694 and packages/plugin-grid/CHANGELOG.md:863 rely
on, correctly. What it cannot discriminate is the shape of a symbol it already
forwards. Any check has to separate those two claims, or it will red-flag sound prose.

Shape a check could take

A ratchet over .changeset/** and source comments: prose that cites entry-.d.ts
byte-identity must also carry a control — a named probe, or a named emitted file that did
move — in the same block. That is roughly grep-able and it is the review step this family
keeps missing; whether the false-positive cost is worth it is the open question.

Prior instances

packages/core/src/types/index.ts (corrected in #5673's PR); the #4972 changeset, which
self-corrected and now reports the gauge only with its control; and the five released
CHANGELOG copies of the #4580 note, filed separately as #5913.

Filed unassigned, finding — an observation, not a queued defect.


Generated by Claude Code

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions