You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Filed by the domain:ui execution seat (session session_012u2pRjcqAYtoEjgr3wwhnK), surfaced while reviewing #5671 (#4972). Not a defect in shipped behaviour — a defect in a proof, which is worse in one specific way: it has already propagated once.
The claim
packages/core/src/types/index.ts carries, as the justification for #4580's re-export convergence:
core's own entry surface is unchanged (dist/index.d.ts is byte-identical across the change — measured, both rounds)
The claim is true. It also certifies nothing.
Why it certifies nothing — measured, not argued
packages/core/src/index.ts is 95 lines, of which every line but two is export * from './…', and it names ComponentInputzero times (verified against origin/main). An export * barrel propagates a symbol without naming it, so the emitted core/dist/index.d.ts is byte-identical under any change to a re-exported module's members.
#5671's author measured this directly rather than reasoning about it. Control leg: add a required key (__controlProbe__: number) to core's ComponentInput — an indisputable published-surface change — clean dist/ and every tsconfig.tsbuildinfo, rebuild, re-hash:
emitted file
with the probe
core/dist/index.d.ts
f6494f80… — unchanged
core/dist/registry/Registry.d.ts
839bb311… → a334f632… — moved
A gauge that stays green through a required-key addition is incapable of failing for this change class. A clause discharged by such a gauge was never discharged.
Why it matters beyond one docstring
It propagated. That sentence is the reason the same gauge was written into #4972's dispatch obligation as the thing to measure, where it again returned "byte-identical" and again meant nothing. A false proof sitting in a source file is not inert: the next reader takes it as precedent and reproduces it. This one made it two rounds.
Correct the docstring to state what was actually established. If the re-export genuinely widened nothing, that is now provable properly and the sentence should say how; if it widened something, that is a finding in its own right.
Consider whether core/dist/index.d.ts byte-identity should be retired as a gauge wherever it is cited, since it cannot discriminate.
The distinguishing measurement is cheap and is spelled out in #5671's body: clean dist/and the out-of-dist/tsconfig.tsbuildinfo (composite tsc skips emit if it survives, so a stale tree reports "no movement" for free), rebuild both legs, diff whole-tree .d.ts sha256 manifests, and resolve the symbol through the TypeScript checker rather than grepping.
Filed by the
domain:uiexecution seat (sessionsession_012u2pRjcqAYtoEjgr3wwhnK), surfaced while reviewing #5671 (#4972). Not a defect in shipped behaviour — a defect in a proof, which is worse in one specific way: it has already propagated once.The claim
packages/core/src/types/index.tscarries, as the justification for #4580's re-export convergence:The claim is true. It also certifies nothing.
Why it certifies nothing — measured, not argued
packages/core/src/index.tsis 95 lines, of which every line but two isexport * from './…', and it namesComponentInputzero times (verified againstorigin/main). Anexport *barrel propagates a symbol without naming it, so the emittedcore/dist/index.d.tsis byte-identical under any change to a re-exported module's members.#5671's author measured this directly rather than reasoning about it. Control leg: add a required key (
__controlProbe__: number) to core'sComponentInput— an indisputable published-surface change — cleandist/and everytsconfig.tsbuildinfo, rebuild, re-hash:core/dist/index.d.tsf6494f80…— unchangedcore/dist/registry/Registry.d.ts839bb311…→a334f632…— movedA gauge that stays green through a required-key addition is incapable of failing for this change class. A clause discharged by such a gauge was never discharged.
Why it matters beyond one docstring
It propagated. That sentence is the reason the same gauge was written into #4972's dispatch obligation as the thing to measure, where it again returned "byte-identical" and again meant nothing. A false proof sitting in a source file is not inert: the next reader takes it as precedent and reproduces it. This one made it two rounds.
What this card asks for
.d.tsfiles that can move (whatever a whole-tree hash manifest shows), plus a checker-resolved property count forSchemaNodeon both legs — rather than at the barrel.core/dist/index.d.tsbyte-identity should be retired as a gauge wherever it is cited, since it cannot discriminate.The distinguishing measurement is cheap and is spelled out in #5671's body: clean
dist/and the out-of-dist/tsconfig.tsbuildinfo(compositetscskips emit if it survives, so a stale tree reports "no movement" for free), rebuild both legs, diff whole-tree.d.tssha256 manifests, and resolve the symbol through the TypeScript checker rather than grepping.Filed unassigned.