Skip to content

Commit ee022fa

Browse files
committed
docs(changeset): correct two claims the rescued #17818 changeset could not support
The changeset was committed unreviewed out of a worktree whose round died. Its before/after table is accurate — all eight rows reproduce — but two sentences around it did not survive review: * "against the built artifact" named a provenance nobody measured. The reading on record evaluates each fold at this change's implementation and again at its merge base, against the TypeScript sources the build and the test run both consume. The sentence now names that. * "the level follows the widening rule" had the direction backwards. This diff NARROWS: an off-vocabulary key that previously resolved an inherited member now gets each function's own declared refusal value, and nothing that answered before answers differently. `minor` is right, but it is carried by the change's declared contract-review status, not by a widening. No change to the table, to the guard, or to any pin. Claude-Session: https://claude.ai/code/session_01KB5PFtxuy1x3dcR5gxudx6 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 29f14b3 commit ee022fa

1 file changed

Lines changed: 12 additions & 8 deletions

File tree

‎.changeset/17818-prototype-fallthrough-lookups.md‎

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ not in the vocabulary resolved a member of `Object.prototype` instead of
1212
falling through — and the `?? fallback` each function already writes never
1313
fired, because the inherited member is truthy.
1414

15-
Measured on Node v22.22.2 against the built artifact, before and after:
15+
Measured on Node v22.22.2, before and after — each fold evaluated at this
16+
change's implementation and again at its merge base, against the TypeScript
17+
sources that the build and the test run both consume:
1618

1719
| call | before | after |
1820
|:--|:--|:--|
@@ -31,13 +33,15 @@ fallback was invented. `resolveDiscoveryEnvironment` is the sharpest case: its
3133
own docblock promises "a value guaranteed to satisfy
3234
`DiscoveryEnvironmentSchema`", and for `constructor` it returned a `Function`.
3335

34-
⚠️ **Why `minor` and not `patch`.** These are published exports whose observable
35-
answer changes for a class of input, so the level follows the widening rule for
36-
a declared contract change rather than the bug-fix default. Nothing in the
37-
declared vocabulary moves: every canonical operator, every `EnvironmentType`
38-
bucket, both operator shorthands and every manifest collection spelling answers
39-
byte-identically to before, and the only inputs whose answer changes are the
40-
four prototype-member spellings above, which no signature ever admitted.
36+
⚠️ **Why `minor` and not `patch`.** The level is carried by this change's
37+
declared contract-review status, ⛔ not by a widening — the guard only NARROWS.
38+
An off-vocabulary key that previously resolved an inherited member now gets each
39+
function's own declared refusal value, and nothing that answered before answers
40+
differently. Nothing in the declared vocabulary moves: every canonical operator,
41+
every `EnvironmentType` bucket, both operator shorthands and every manifest
42+
collection spelling answers byte-identically to before, and the only inputs
43+
whose answer changes are the four prototype-member spellings above, which no
44+
signature ever admitted.
4145

4246
The guard is the `Object.prototype.hasOwnProperty.call(table, key) && table[key]`
4347
shape already landed in `src/data/type-compat.ts`, and carries that site's two

0 commit comments

Comments
 (0)