Repository navigation
Refresh the Node island conformance list to what main gives - #3293
Conversation
The list was recorded for #3176 at 7dbcdc9. The island crossing changes that merged around it changed what several of its programs do, and the lane has not run on main since: pushes to main do not run it, and #3159 and #3176 were selected by a base revision that predates the lane, so their own island jobs were skipped. At main's head the lane fails on eleven entries with nothing applied. Regenerated with SCRIPTC_ISLAND_CONFORMANCE=update at 4935b78 (Linux x64, a libnode pack built from that commit), and the same list came out at dfa7753: - new text of a failed crossing ("…, got Object from a Node island (an island object stays an island value: …"), same failure otherwise: corpus/7037-js-var-open-writes, npm/hono-zod-default-hook, npm/typed-callbacks, and the default builds of packages/lodash and packages/yaml; - npm/zod3-infer fails at another member, with that text, and npm/any-chaining now stops at "this native object cannot cross into a Node island yet"; - refused at build time with SC8010 instead of failing or diverging when they run: npm/island-json-stringify and npm/zod3-adoption; and npm/zod4-boundary reports SC8010 beside its SC1090; - npm/decl-pass-through with ref-marks in an island matches Node and leaves the list. 86 entries become 85. Only the list changes. Co-Authored-By: Claude Code <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Check of the eleven re-pinned entries: none of them pins a regressionTwo of the entries change category to How it was measured. Each program ran under Node, as its default build and with the package forced into an island, on three built trees (Linux x64 Sandboxes, Node 24.22.1, each tree with a libnode pack from its own bridge):
The two entries that became
|
main refreshed the island conformance list (#3293); nothing conflicts. Co-Authored-By: Claude Code <noreply@anthropic.com>
…with main Value matrix, 3,680 to 3,668 pinned observations: the 12 that go are `.constructor` reads of a class value that main no longer refuses with SC2020 and that match Node now (`class.*` and `error-class.control`, one of them a control program without an island). main's table still pins them, so the matrix test fails there. Island conformance, 85 to 82 known failures. Two are this branch: `corpus/7531-buffer-constructor-dependency` (island:legacy-buf) and `corpus/7748-npm-any-bytes-receiver` (island:chunk-buffers) match Node now. The third is main's: `packages/semver` (island:semver, build SC2013) matches Node on main 50bcfe1 without this branch as well, and the refreshed list of #3293 still has it. Everything else in the list is what #3293 put there: the list regenerated on main 50bcfe1 alone and on this tree differ by the two entries above only. Co-Authored-By: Claude Code <noreply@anthropic.com>
#3293 refreshed tests/harness/island-conformance/known-failures.json on main. The earlier merge of main into this branch had regenerated the same list inside the merge commit; the two differ in one entry (npm/hono-zod-default-hook, which #3293 corrected). main's list is taken as it is: this PR changes the native compiler, and the lane builds with the Node-hosted one, so it moves no entry of its own. Co-Authored-By: Claude Code <noreply@anthropic.com>
Main's #3293 refreshes the island conformance list. Nothing conflicted. Co-Authored-By: Claude Code <noreply@anthropic.com>
Regenerated on top of main's refreshed list (#3293), with a libnode pack built from this tree's bridge: 85 entries become 67. Eighteen programs now match Node, most of them through JSON.stringify of an island value and a value an island made passing the checked conversions; six fail at a later point than before. None is new. Co-Authored-By: Claude Code <noreply@anthropic.com>
What is wrong
tests/harness/island-conformance/known-failures.jsonno longer matchesmain. The Node island conformance lane (tests/harness/island-conformance.test.ts) passes only when exactly the listed failures occur, and onmainit fails on eleven entries with nothing applied. Every pull request that touches island code, the npm fixtures or the lane itself runs the lane (scripts/ci-lanes.mjs,islands), so each of them is red for a reason that ismain's.How it went stale
The list was recorded for #3176 at
7dbcdc9dc. Nothing in CI has run the lane since:maindo not run it (islands=falsein the lanes step of.github/workflows/ci.yml).islandslane, so their own island jobs were skipped (onb181fc78cthe check "test (Linux, Node island conformance …)" isskipped).mainthat had no lane yet.The nightly sweep runs every lane, this one included, so it would have shown this at its next run; today's started before #3176 merged.
The eleven entries, by cause
corpus/7037-js-var-open-writes,island:scalar-marksexpected object at $, got Objectfrom a Node island (an island object stays an island value: declare the island's type or 'unknown' for it, …npm/hono-zod-default-hook,island:zod[TypeError: expected object at $, got Object]npm/typed-callbacks,island:typedcbexpected object at $[0], got Objectpackages/lodash,default(lodash runs in an island by itself)expected array at $[0], got Objectpackages/yaml,default(yaml runs in an island by itself)expected object at $, got Objectnpm/zod3-infer,island:zodexpected string at $.name, got undefinedexpected array at $.tags, got Object from a Node island (…npm/any-chaining,island:mediakitexpected object | undefined at $, got Objectthis native object cannot cross into a Node island yet (scope-B NI-5 exports native values by reference)npm/island-json-stringify,island:arrpackJSON.stringify of a runtime handle is not supported yetSC8010npm/zod3-adoption,island:zodSC8010npm/zod4-boundary,island:zodSC1090SC1090,SC8010npm/decl-pass-through,island:ref-marksexpected object at $, got Object86 entries become 85 (
node tests/harness/island-conformance/scoreboard.mjs: 83 forced in 77 programs, 2 automatic). No entry is new.What changes
Only the list, regenerated by the lane itself (
SCRIPTC_ISLAND_CONFORMANCE=update). No source, test or CI change.Proof
Linux x64 Sandbox, 32 vCPU, Intel Xeon @ 2.90GHz, Node 24.22.1, a libnode pack built from the commit under test.
4935b7869: 413 tests pass in update mode. The same list, byte for byte, came out of an independent run atdfa7753d3.SCRIPTC_ISLAND_CONFORMANCE=1) against the regenerated list, same commit: 413 tests pass. Before the change the lane fails on exactly the eleven entries above (measured atdfa7753d3).mainhas merged commits since4935b7869; none of them changes a path theislandslane is selected by (scripts/ci-lanes.mjs). This pull request changes the list, so its own CI runs the lane against the merge withmain's head.Follow-up, not in this change
How to keep the list from going stale again is written up for the maintainers of the lane (the lane on pushes to
mainthat change island code, selected from the push's own diff; or the merge queue #3119 prepares). It would edit the lines of the lanes step that #3119 and #3121 also edit, so it is left until those merge.🤖 Generated with Claude Code