jsc: treat BunTranspiledModule as Module in JSC debugger/inspector switches - #35754
jsc: treat BunTranspiledModule as Module in JSC debugger/inspector switches#35754robobun wants to merge 8 commits into
Conversation
…itches SourceProviderSourceType::BunTranspiledModule (added for #15758) is missing from four sourceType() switch/compare sites in JSC, so a provider with that type (today: bun test --isolate and bun build --compile output) falls through: - gatherDebuggerParseDataForSource returns false, Debugger.setBreakpoint replies "Could not resolve breakpoint" for every line in the script - InspectorDebuggerAgent::didParseSource sends module:false in Debugger.scriptParsed - CachedSourceProvider encode/decode would RELEASE_ASSERT_NOT_REACHED() - Completion.cpp getSourceType returns Type::None instead of JavaScript Bumps WEBKIT_VERSION to the oven-sh/WebKit#345 preview, which adds a BUN_JSC_ADDITIONS-gated fall-through to the Module arm at each site, and adds a test/cli/inspect/inspect.test.ts case that drives bun test --isolate under --inspect-wait, asserts Debugger.scriptParsed reports module:true, and asserts Debugger.setBreakpoint / setBreakpointByUrl resolve on the user's ESM source. Also pulled in by this bump (549170099226..64b7e4374ab0): - oven-sh/WebKit#328 inspector: release throw scope before tail-calling impl in injected-script prototype host functions - oven-sh/WebKit#317 LiteralParser: throw RangeError on OOM when copying a JSON string value - oven-sh/WebKit#331 SignalsWin: fix VEH return value and register behind AddressSanitizer's handler - oven-sh/WebKit#332 Heap: make minEdenToOldGenerationRatio a JSC option Unblocks #35605.
WalkthroughChangesWebKit preview dependency
Debugger inspector regression coverage
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
Comment |
|
Found 2 issues this PR may fix:
🤖 Generated with Claude Code |
There was a problem hiding this comment.
I didn't find any bugs, but this is a WebKit version bump that pulls in five upstream JSC changes and is pinned to a preview release tag (autobuild-preview-pr-345-64b7e437) that the description notes will be deleted once oven-sh/WebKit#345 merges — a maintainer should sign off on landing against a preview tag vs. waiting for the merged sha.
What was reviewed:
prebuiltUrl/prebuiltDestDirhandle theautobuild-prefix already, so the non-hex tag resolves correctly.- New
inspect.test.tscases: stderr/stdout drained concurrently, error/close wired to reject pending waiters,--inspect-waiton port 0, baseline no---isolatecase pins the control. - Checked that
Debugger.scriptParsedformod.test.tsmust arrive beforeDebugger.paused(script is parsed before thedebugger;statement executes), souserScriptis populated by the time it's read.
Extended reasoning...
Overview
Two files: scripts/build/deps/webkit.ts bumps WEBKIT_VERSION from a main-branch sha to autobuild-preview-pr-345-64b7e437, and test/cli/inspect/inspect.test.ts gains a ~200-line describe block driving bun test --isolate under --inspect-wait over a WebSocket to assert Debugger.scriptParsed reports module: true and that Debugger.setBreakpoint/setBreakpointByUrl resolve for a BunTranspiledModule source provider.
The actual fix lives in oven-sh/WebKit#345 (four case SourceProviderSourceType::BunTranspiledModule: fall-throughs added under USE(BUN_JSC_ADDITIONS)). The bump also picks up four other WebKit PRs in the range (#328 throw-scope release, #317 LiteralParser OOM RangeError, #331 SignalsWin VEH, #332 Heap option).
Security risks
None specific to this diff. The test spawns a local subprocess with --inspect-wait on 127.0.0.1:0 and connects to it — no external network, no new attack surface exposed. The WebKit changes themselves are in a separate repo and not reviewable here.
Level of scrutiny
High. A WebKit version bump changes the JS engine binary for every platform/ABI, and the range includes five distinct upstream changes (not just the one this PR is about). The pin is to a preview release tag rather than a merged main commit, and the PR description explicitly says the preview release is deleted once the WebKit PR merges — so merging this creates a window where a fresh clone can't fetch the pinned WebKit until someone repoints. That's a maintainer call, not something to auto-approve.
Other factors
The test itself looks solid against the repo's review checklist: it uses tempDir, bunEnv, port 0, drains both pipes in the background so the child can't back-pressure, buffers stderr to line boundaries before URL-parsing, wires error/close into every pending promise via failAll, and includes a no---isolate baseline so a regression in the plain Module path would also be caught. The send("Inspector.initialized").catch(() => {}) fire-and-forget is intentional — the response may race with the pause event and failAll on close is expected there. Verification section shows the --isolate case fails under USE_SYSTEM_BUN=1 and passes on the debug build.
Given the dep-bump scope and the temporary preview tag, deferring to a human.
…le provider The debugger probe only asserted module:true and breakpoint resolution, both of which also hold for a plain Module provider. If a refactor stopped attaching module_info to the --isolate entrypoint, both cases would become Module-vs-Module and the WebKit#345 regression guard would silently evaporate. The fixture now stashes isolatedModuleCacheSourceType(import.meta.path) on globalThis before the debugger statement (evaluateOnCallFrame parses its expression as a Program, so import.meta cannot be evaluated directly), and the driver asserts it is "BunTranspiledModule" for the --isolate case and null for the no-isolate baseline.
|
Updated 5:25 AM PT - Jul 26th, 2026
❌ @robobun, your commit 0197616 has 2 failures in
Add 🧪 To try this PR locally: bunx bun-pr 35754That installs a local version of the PR into your bun-35754 --bun |
||||||||||||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
I didn't find issues with the test (it drains pipes, wires close/error to reject, self-checks the provider type via bun:internal-for-testing, and pins a no---isolate baseline). Deferring because this bumps WEBKIT_VERSION to a temporary autobuild-preview-pr-345-* tag — the description notes the preview release is deleted once oven-sh/WebKit#345 merges, and the range also pulls in four unrelated WebKit changes (#328/#317/#331/#332). A maintainer should decide whether to land on the preview tag now or wait for the merged sha.
What was reviewed
prebuiltUrl/prebuiltDestDirinwebkit.tsalready handleautobuild--prefixed versions, so the tag resolves correctly.- Test: stdout/stderr drained concurrently,
--inspect-waiton port 0, failure paths reject the awaited promise,Debugger.pausedwaiter registered beforeInspector.initialized. providerSourceTypeself-check guards against the--isolatecase silently degrading to a plainModuleprovider.
Extended reasoning...
Overview
This PR changes two files: scripts/build/deps/webkit.ts bumps WEBKIT_VERSION from the pinned main sha 549170099226… to the preview tag autobuild-preview-pr-345-64b7e437, and test/cli/inspect/inspect.test.ts gains a ~220-line describe block that drives bun test --isolate under --inspect-wait, connects over WebSocket, and asserts Debugger.scriptParsed.module === true plus that Debugger.setBreakpoint / setBreakpointByUrl resolve. The actual behavioral fix lives in oven-sh/WebKit#345 (four case SourceProviderSourceType::BunTranspiledModule: fall-throughs); this repo change is the version bump + regression test.
Security risks
None identified. The test spawns a local inspector on 127.0.0.1:0, uses tempDir, and does not touch auth/crypto/permissions. The WebKit bump range includes a Windows VEH-handler change (#331) and a LiteralParser OOM change (#317) which are behavior-affecting but not security-sensitive in the injection/auth sense.
Level of scrutiny
High — WebKit is the JS engine and WEBKIT_VERSION gates every prebuilt download across all platforms. The bump is not a single-fix cherry-pick: it pulls in four other WebKit PRs, and per the description the preview release tag will be deleted once #345 merges to WebKit main. Merging this as-is means main transiently points at an artifact that will disappear, breaking fresh clones/CI cache misses until someone repoints it. That's a process/release decision a maintainer should make explicitly (land now on the preview tag vs. wait for the merged sha), not something to auto-approve.
Other factors
- The test is well-constructed against the repo's review rules: it awaits observable conditions (URL line on stderr,
Debugger.pausedevent), wireserror/closeto reject every pending waiter, drains both stdout and stderr concurrently to avoid pipe back-pressure, usesport: 0, and cleans up viausing/await using+try/finallyaround the WebSocket. - The
isolatedModuleCacheSourceTypeself-check (asserting"BunTranspiledModule"under--isolateandnullwithout) is a good guard against the test becoming vacuous if a future refactor stops routing--isolateentrypoints throughBunTranspiledModule. - I confirmed
prebuiltUrlalready special-casesautobuild-prefixes (uses the value verbatim as the release tag) andprebuiltDestDirslices pastautobuild-for the cache key, so the non-sha version string works with the existing download machinery. - No prior reviews on the PR; nothing outstanding to address.
inspect.test.ts has pre-existing localhost-based websocket cases that are environment-sensitive (and the file is already [ASAN] [TIMEOUT] in test/expectations.txt); running it end to end fails on those unrelated cases. The new cases live in debugger-buntranspiledmodule.test.ts so the regression guard runs clean on its own.
There was a problem hiding this comment.
No bugs found, but this is a WebKit version bump — it points at a temporary autobuild-preview-pr-345-* release (which the description notes will be deleted once oven-sh/WebKit#345 merges) and pulls in four other WebKit PRs (#317, #328, #331, #332) alongside the debugger fix. Worth a human sign-off before landing.
What was reviewed
- The new inspector test: port-0,
tempDir, pipes drained, error/close wired to reject pending requests,test.concurrent, and theisolatedModuleCacheSourceTypeself-check that pins the--isolatecase to an actualBunTranspiledModuleprovider — all look solid. prebuiltUrl/prebuiltDestDirinscripts/build/deps/webkit.tsalready handleautobuild-*tags, so the preview version string resolves correctly.
Extended reasoning...
Overview
Two files: scripts/build/deps/webkit.ts (repoints WEBKIT_VERSION from a main-branch sha to the preview tag autobuild-preview-pr-345-64b7e437) and a new ~225-line test at test/cli/inspect/debugger-buntranspiledmodule.test.ts. The behavioral fix itself lives in oven-sh/WebKit#345 — this PR is the version bump plus the regression test that proves it.
Security risks
None identified. The change is a JSC debugger/inspector switch-case fallthrough fix in the WebKit fork; the test drives a local 127.0.0.1:0 inspector WebSocket against a spawned child. No auth, crypto, or untrusted-input parsing is touched in this repo.
Level of scrutiny
High. WEBKIT_VERSION controls which JavaScriptCore build every Bun binary links against. The bump range (549170099226..64b7e4374ab0) carries four unrelated WebKit changes (LiteralParser OOM, injected-script throw-scope, Windows VEH/ASAN, a new Heap JSC option) in addition to the targeted fix — those need a maintainer's eye even if each is small. The version is also explicitly temporary: the PR description says the preview release is deleted once the upstream PR merges, so a human should decide whether to land against the preview tag now or wait for the merged sha.
Other factors
The test is well-constructed for this repo's conventions: it awaits real observable conditions (stderr line for the inspector URL, Debugger.paused event), rejects all pending waiters on WebSocket error/close, drains stdout to avoid backpressure, self-checks that --isolate actually produced a BunTranspiledModule provider via bun:internal-for-testing, and pins the no---isolate baseline alongside. My earlier test.concurrent nit was applied in 639852a. I don't see anything blocking in the test itself; the deferral is purely because engine bumps and temporary dependency pins are outside the auto-approve envelope.
There was a problem hiding this comment.
No bugs found in the test itself, but this is a WebKit version bump — it repoints the JS engine to an ephemeral autobuild-preview-pr-345-* tag (the description notes it must be repointed to a main sha before/after oven-sh/WebKit#345 merges, since the preview release is deleted) and pulls in four additional WebKit changes (#328, #317, #331, #332) beyond the one under test. That plus the unresolved CI status on Build #81417 warrants a maintainer sign-off.
What was reviewed:
- The new inspector probe test — port-0 inspector, stderr/stdout drained concurrently, error/close wired to reject, self-check that
--isolateactually yields aBunTranspiledModuleprovider, exact-shape assertions onsetBreakpoint/setBreakpointByUrl. The earliertest.concurrentnit was applied in 639852a. prebuiltUrl/prebuiltDestDirinscripts/build/deps/webkit.ts— both already handleautobuild-*version strings, so the preview tag resolves and caches correctly.- Checked that
isolatedModuleCacheSourceTypeis exported frombun:internal-for-testingso the fixture import resolves.
Extended reasoning...
Overview
This PR is the bun-side half of a fix that lives in oven-sh/WebKit#345: four sourceType() switch sites in JSC (DebuggerParseData, InspectorDebuggerAgent, CachedTypes, Completion) don't recognize SourceProviderSourceType::BunTranspiledModule, so ESM sources loaded via bun test --isolate or bun build --compile report module: false in Debugger.scriptParsed and reject all breakpoints. The bun repo change is (a) a one-line WEBKIT_VERSION bump to a preview build of that WebKit PR, and (b) a ~225-line inspector-protocol regression test that drives bun test --isolate under --inspect-wait and asserts the fixed behavior.
Security risks
None identified. The test binds the inspector to 127.0.0.1:0, spawns only the local debug bun, and touches no auth/crypto/permissions paths. The WebKit-side change adds fall-through case arms behind USE(BUN_JSC_ADDITIONS).
Level of scrutiny
High — not because the diff in this repo is complex, but because WEBKIT_VERSION controls which JavaScriptCore build every bun binary links against. Per the repo's own guidance, dependency bumps (especially WebKit) are a situational section in .claude/docs/landing-prs.md and warrant maintainer review. This particular bump:
- Points at an ephemeral preview tag (
autobuild-preview-pr-345-64b7e437). The PR description itself says the preview release is deleted once oven-sh/WebKit#345 merges andWEBKIT_VERSIONmust then be repointed at the merged main sha. Merging this to bun main before that repoint would leave main referencing a release that can vanish. - Bundles four additional WebKit PRs in the range 549170099226..64b7e4374ab0 (#328 injected-script throw-scope, #317 LiteralParser OOM RangeError, #331 SignalsWin VEH/ASAN ordering, #332
minEdenToOldGenerationRatioas a JSC option). These are listed but not exercised by this PR's test, and a maintainer should confirm they're intended to ride along.
Other factors
- Test quality: the new test is well-constructed against REVIEW.md's checklist —
tempDir/bunEnv/bunExe, port 0, concurrent stdout+stderr drain to avoid pipe back-pressure, every WebSocketerror/closewired to reject pending waiters, aproviderSourceTypeself-check so the premise (that--isolateyields aBunTranspiledModuleprovider) can't silently evaporate, and a paired non---isolatebaseline. The priortest.concurrentnit was applied. - CI: robobun flagged failures in Build #81417 on 639852a; the latest commit (92f2315) is a CI retrigger with no green status posted in the timeline yet.
- Build tooling: verified
prebuiltUrl()already special-casesversion.startsWith("autobuild-")andprebuiltDestDir()uses the full tag for non-sha versions, so the preview tag won't collide in the cache or produce a malformed download URL.
Given the engine-level dependency bump to a temporary tag and the outstanding CI status, deferring to a human.
|
CI status (build #82245, finished 193/196 passed): the diff is green.
Earlier builds #81159/#81417/#82091 hit CI agent congestion ( All review threads resolved. Ready for review; |
…s unreliable debian-13 x64-asan in build 82091 hit "WebSocket closed (1006)" before Debugger.paused. This is the same WebSocket-inspector-under-ASAN flakiness that test/expectations.txt quarantines inspect.test.ts for and that test/regression/issue/21654 skips on. The JSC switch-arm fix being tested is in C++ and behaves identically with or without ASAN; every release lane still runs it.
There was a problem hiding this comment.
Actionable comments posted: 3
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@test/cli/inspect/debugger-buntranspiledmodule.test.ts`:
- Around line 56-59: Update the stderr decoding loop around the TextDecoder in
the debugger test to call decode with streaming enabled for each chunk,
preserving incomplete multibyte sequences across chunk boundaries before
appending to stderrBuf.
- Around line 210-212: Update the setBreakpointByUrl assertion to validate the
full CDP reply message, including its error details, instead of only
result.locations. Follow the existing setBreakpoint assertion convention nearby
and preserve the expected breakpoint location within the complete response.
- Around line 171-183: Strengthen the debugger evaluation assertions around
sourceTypeEval: require paused.callFrames[0].callFrameId before calling
Debugger.evaluateOnCallFrame, verify the reply has no CDP error and wasThrown is
false, and assert the returned result shape directly instead of collapsing
failures with ?? null. Update the combined expectation so the baseline and
isolate cases can fail when evaluation is unavailable or unsuccessful.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: ASSERTIVE
Plan: Pro
Run ID: 7f893a55-a207-43cc-8209-b79f97822a00
📒 Files selected for processing (2)
scripts/build/deps/webkit.tstest/cli/inspect/debugger-buntranspiledmodule.test.ts
- TextDecoder.decode({stream: true}) so multi-byte sequences split across
stderr chunks don't corrupt the diagnostic buffer.
- Assert the full evaluateOnCallFrame / setBreakpoint / setBreakpointByUrl
reply objects instead of projecting into result.value / result.locations.
The no-isolate baseline expects the null-value CDP shape (type:object,
subtype:null, wasThrown:false), so a CDP error or thrown evaluation can no
longer collapse to the same null the baseline expects.
- Require paused.callFrames[0].callFrameId before evaluating.
skipIf(isASAN) also skips under a local `bun bd` (debug profile defaults ASAN on Linux/arm64-macOS), so the regression guard was invisible to the default local verification workflow even though it passes there. Gate on isCI && isASAN instead, matching test/cli/hot/watch-many-dirs.test.ts and test/js/bun/spawn/spawn-pipe-leak.test.ts.
There was a problem hiding this comment.
I didn't find any bugs, but this is a WebKit version bump — deferring to a maintainer.
The WEBKIT_VERSION pin is to a preview release tag (autobuild-preview-pr-345-64b7e437) that, per the PR description, is deleted once oven-sh/WebKit#345 merges — so a maintainer should decide whether to land this now and track the repoint, or wait for #345 to merge first and pin to the resulting main sha. The range also carries four unrelated WebKit changes (#328 throw-scope release in injected-script host functions, #317 LiteralParser OOM RangeError, #331 Windows VEH/ASAN handler ordering, #332 minEdenToOldGenerationRatio as a JSC option) that a human should sign off on.
What was reviewed
- The new test: awaits real inspector events (URL from stderr,
Debugger.paused), wires WSerror/closeto reject all pending waiters, drains both pipes, uses port 0 /tempDir, and asserts full CDP reply objects soerror/wasThrownsurface — the earlier vacuous-baseline concern is fixed. .skipIf(isCI && isASAN)matches thewatch-many-dirs.test.ts/spawn-pipe-leak.test.tspattern; localbun bdstill runs it.webkit.ts: only the version constant + a TODO comment changed;prebuiltUrl/prebuiltDestDiralready handleautobuild-*tags.
Extended reasoning...
Overview
Two files: scripts/build/deps/webkit.ts bumps WEBKIT_VERSION from a main-branch sha to the preview tag autobuild-preview-pr-345-64b7e437, and test/cli/inspect/debugger-buntranspiledmodule.test.ts is a new 255-line regression test that drives bun test --isolate under --inspect-wait, connects over the WebSocket inspector protocol, and asserts that a BunTranspiledModule source provider reports module: true in Debugger.scriptParsed and that Debugger.setBreakpoint / Debugger.setBreakpointByUrl resolve. The actual behavioural fix lives in oven-sh/WebKit#345 (four USE(BUN_JSC_ADDITIONS)-gated case ::BunTranspiledModule: fall-throughs in JSC C++), which this PR only pulls in via the version bump.
Security risks
None identified. The test is hermetic (127.0.0.1, port 0, tempDir, no external hosts). The WebKit range does touch a Windows VEH handler (#331) and a JSON-parse OOM path (#317), but those are upstream C++ changes I cannot audit from this repo — which is part of why a human should look.
Level of scrutiny
High. This is a vendored-dependency bump of the JavaScript engine itself, and the repo's own guidance calls out "Dependencies & vendoring" as a section requiring extra care. Beyond the targeted fix, the bumped range carries four other WebKit PRs (#328, #317, #331, #332) whose correctness I cannot verify here. More importantly, the pin is to a preview release that the PR body says will be deleted once oven-sh/WebKit#345 merges; landing this as-is commits main to a follow-up repoint before the preview artifact disappears (otherwise fresh clones would 404 on the WebKit download). That is a release-management call for a maintainer, not something to auto-approve.
Other factors
The test file has been through two rounds of bot review (my test.concurrent nit and the over-broad isASAN gate; CodeRabbit's streaming-decode, vacuous-baseline, and full-reply-assertion comments) and all threads are resolved in the current diff. I re-checked each: the sourceTypeEval assertion now matches the full {id, result: {result, wasThrown: false}} shape so the no---isolate baseline can no longer pass on a failed evaluation; setBreakpointByUrl asserts the whole reply; TextDecoder uses {stream: true}; the skip is isCI && isASAN. The test wires WebSocket error/close into failAll so no waiter can hang, drains both stdout and stderr concurrently to avoid pipe backpressure, and uses await using proc / using dir for cleanup. The webkit.ts change is just the constant plus a comment; prebuiltUrl() already special-cases autobuild- tags and prebuiltDestDir() slices the prefix, so the preview tag flows through the existing machinery. CI is reported green on the lanes that ran; the ASAN-lane WS flake is documented and gated.
|
For anyone landing here: the WebKit side of this went in as oven-sh/WebKit#405 (merged, 723cea6c). The |
|
Superseded by #37352 (same test, WebKit change landed as oven-sh/WebKit#405). |
|
Confirmed: oven-sh/WebKit#405 landed the same four switch-arm additions and #37352 carries the test from this branch against the merged sha. Nothing further needed here. |
Problem
bun test --isolate(andbun build --compilestandalone executables) attach a pre-computed module record to each ESMSourceProviderand tag itSourceProviderSourceType::BunTranspiledModuleso JSC'sJSModuleLoadercan skip re-parsing. FoursourceType()branch sites in JSC only match::Module, so aBunTranspiledModuleprovider falls through:The same file without
--isolate(plain::Moduleprovider) reportsmodule: trueand the breakpoint resolves. #35605 would route every runtime ESM provider through this type and is blocked on this.Cause
debugger/DebuggerParseData.cppgatherDebuggerParseDataForSource: falls todefault: return false,Debugger::resolveBreakpointgets empty pause positions,Debugger.setBreakpointreplies"Could not resolve breakpoint"for every line andDebugger.setBreakpointByUrlsilently returnslocations: [].inspector/agents/InspectorDebuggerAgent.cppdidParseSource:Debugger.scriptParsedsendsmodule: falseinstead oftrue.runtime/CachedTypes.cppCachedSourceProvider::encode/decode: wouldRELEASE_ASSERT_NOT_REACHED()if JSC's bytecode cache ever encoded one of these providers.runtime/Completion.cppgetSourceType: returnsScriptFetchParameters::Type::Noneinstead ofJavaScript.Fix
oven-sh/WebKit#345 adds a
USE(BUN_JSC_ADDITIONS)-gatedcase SourceProviderSourceType::BunTranspiledModule:at each site that falls through to the existingModulearm. These are the only four== ::Module/case ::Module:comparison sites on the enum; the remaining references construct providers of that type (jsc.cpp, JSScript.mm, WebCore) or already handle it (ModuleProgramExecutable.cpp,JSModuleLoader.cpp).This PR bumps
WEBKIT_VERSIONto theautobuild-preview-pr-345-64b7e437preview build and addstest/cli/inspect/debugger-buntranspiledmodule.test.tsthat drivesbun test --isolateunder--inspect-wait, assertsDebugger.scriptParsedreportsmodule: true, and assertsDebugger.setBreakpoint/Debugger.setBreakpointByUrlresolve on the user's ESM source. A paired no---isolatecase pins the baseline.Also in this range (549170099226..64b7e4374ab0)
minEdenToOldGenerationRatioa JSC option (same default; behaviour unchanged)Verification
Also ran
isolation.test.ts,test-reporter.test.ts,node/inspector/inspector.test.tsandregression/issue/21654with no failures.Once oven-sh/WebKit#345 merges,
WEBKIT_VERSIONshould be repointed at the merged main sha (the preview release is deleted at that point).Unblocks #35605.
[decide:webkit] gate passed · iteration 6 · 2 files touched
passes on PR (with fix)
diff hotspot
gate history · 6 passed · 1 rejected · iteration 6
evidence per changed file