Merge train: #9944, #9945, #9946, #9947, #9948 - #9959
Merged
Conversation
(cherry picked from commit 4fcf619)
(cherry picked from commit bb077b0)
(cherry picked from commit 3de6178)
(cherry picked from commit 0872084)
(cherry picked from commit 5ecf882)
(cherry picked from commit e3d11d9)
(cherry picked from commit f8a33e2)
(cherry picked from commit bf87449)
(cherry picked from commit 5782a8d)
This was referenced Sep 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge train: #9944, #9945, #9946, #9947, #9948. All five cherry-picked without a conflict.
#9946 — a class-identity bug with a real victim
A function-local
class Definition extends Error {}produces a fresh class object on every evaluation but shares a single compile-time class id. The class registry is keyed by that id and is necessarily last-wins, so a constructor factory that later evaluates the same declaration with anObjectparent retroactively brokeinstanceof Errorfor instances created earlier. Zod's$constructorhas exactly that shape: aZodErrorfailedinstanceof ErrorwhilegetPrototypeOfstill reportedZodError → Error → Object.Two prototype-resolution paths disagreeing about one chain is a known weak area here, and the fix takes the right side of it — the instance's recorded evaluation prototype is authoritative over the shared-id registry entry.
The rest
fsstats and dirents.test.ymlas an additive step under!cancelled()— appropriate for a diagnostic self-check, and its failure would be its own rather than masking anything. Its fixtures pass locally.Validation
run_lint_gates: all 67 gates passed; 2 CI-only skipped(67 — #9947 adds one)