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
The r32 release failed on every platform before publishing, while main also had CI and runtime correctness blockers. This stack fixes the shared release infrastructure failures, clears the reproduced main reds, and addresses root causes found for #9942 and #9983.
Release and CI
Build all 40 extension archives in one Cargo feature union so they share one coherent Tokio runtime.
Fix the macOS Tokio archive checker: a valid CPU-only archive previously made grep return 1 under set -euo pipefail, aborting both macOS jobs.
Refresh the Linux release container snapshots after the Bullseye package URLs used by both Linux jobs began returning 404.
Build the Node compatibility matrix from the same coherent archive set.
Repair the GC ratchet artifact receipt/retry paths and accept the measured deltas from run 34219151426.
Remove the stale GC_INIT_DONE root-holder pin and serialize process-global runtime/native-registry tests.
Record the provider handle stack’s intentional cold TLS initialization fallback in the thread-local ratchet.
Scope the zizmor workflow_run exception to the gate-failure observer, whose privileged job checks out and executes only trusted main.
Honor patched Array, Map, Set, and String iterator next methods in eager spread, Array.from, collection-constructor, and Promise-combinator paths. The gap-suite oracle failure masked a real product bug: bulk materializers returned raw elements while manual iteration used the patch. Push-spread now keeps the boxed iterable family, roots both operands across user callbacks, preserves Set/Map/typed-array/custom-iterable sources, and normalizes holes to undefined.
Investigation coverage
The landed Drizzle probe is strengthened for exact Drizzle 0.44.7 behavior and checks the lazy-typing transition after every mergeQueries mutation (#9935). It remains a measured negative rather than a claimed fix: 1,000 iterations matched Node, and a hostile one-iteration run survived 7,448 copying minors with the mark verifier clear. The exact production-boundary capture request is posted on #9935.
Validation
Coherent 40-extension build completed; the checker found 11 Tokio-using archives and one Tokio build ID.
Thread-local policy passed: 415 hot declarations and 274 recorded cold declarations; all seven self-test directions passed. zizmor 1.28.0 reported no high-severity findings.
Patched iterator-prototype regression: all 41 Node-oracle lines passed normally and under forced evacuation (PERRY_GC_SCHEDULE_RATE=1, evacuation verification, and protected from-space). The allocation-free canonical-prototype probe passed 3/3.
The exact coherent release build of perry, perry-runtime-static, and perry-stdlib-static completed after the final source edit; the release-helper coherence test passed. Raw-handle debt is 955 versus the 963 baseline, with all 112 per-module ceilings satisfied.
Compiler-output captures, test registration, file-size, formatting, diff, native-result, and workflow YAML gates passed.
The public baseline artifact is stale. Regeneration built successfully, but the host stayed above the CPU-quiet threshold for the full 15-minute preflight, so no measurement was published. This is still a main gate blocker.
The latest branch CI also hit the process-global typed-feedback environment race fixed independently by test(codegen): isolate the default feedback lane #9999; that failure reproduces on main and is outside this stack.
Full Linux Docker builds were not run locally because Docker was unavailable; the repaired snapshot endpoints were verified directly.
The retained Claude-bundle verifier runs cleared the GC invariant, then exited on an unpublished text-loader experiment shim looking for a missing bundled Markdown asset.
Final CI classification for head 369d2772c (run 34256962396):
Passed:cargo-test, check, warnings, build-and-freshness, gap-suite-build, gap shards 1/4/5/6, gc-stress-build, the GC/representation-selection matrix, and the final gc-stress fan-in. In particular, shard 1 now passes the repaired iterator-prototype oracle and implementation.
Failures already independent of this branch:
e2e-scoped: only typed_feedback_guards_direct_closure_call_specialization failed (assertion failed: !ir.contains("call void @js_typed_feedback_record_fallback_call"); 19 sibling tests passed). This is the process-global/concurrent test race fixed by test(codegen): isolate the default feedback lane #9999, whose corresponding e2e check passes.
lint: only Public benchmark evidence freshness failed. Every other lint step, including formatting, release coherence, raw-handle ratchets, and test registration, passed. The available host could not meet the benchmark's quiet-host precondition, so no noisy artifact was substituted.
gap-suite (2): 124 passed, one failed: test_gap_json_nested_records. The exact 18-line comparison differs only at the inherited root-array toJSON case:
Root cause: stringify_array_depth calls array_get_to_json, which checks only the array's own named-property side table and never performs ordinary prototype-chain Get through Array.prototype / Object.prototype. PR perf(json): streamline parse and stringify construction #9849 introduced the exposing fixture and landed it on current main after this PR's base; its benchmark notes explicitly recorded this mismatch. There is no complete fix in flight.
gap-suite (3): 124 passed, one failed: test_gap_2899_2779_2777_static_helpers. Node and Perry both exit 0 and share the first line; the runner truncates the later differing line. PR perf(json): streamline parse and stringify construction #9849's own final JSON-head run also had this shard red, so it is current-main JSON fallout rather than a fix(release): clear publishing and runtime blockers #9998 regression. A local attempt rebuilt the coherent runtime but stalled compiling the isolated fixture, so the later line/root cause remains unmeasured.
pr-gate is only the aggregate failure from those upstream rows. Current main's push run 34252807132 independently shows both JSON gap fixtures red.
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
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.
The r32 release failed on every platform before publishing, while
mainalso had CI and runtime correctness blockers. This stack fixes the shared release infrastructure failures, clears the reproducedmainreds, and addresses root causes found for #9942 and #9983.Release and CI
grepreturn 1 underset -euo pipefail, aborting both macOS jobs.GC_INIT_DONEroot-holder pin and serialize process-global runtime/native-registry tests.workflow_runexception to the gate-failure observer, whose privileged job checks out and executes only trustedmain.Runtime fixes
randomBytescallbacks and scrypt state, install named stream exports, and add missingasync_hooksprototype methods (main health 2026-09-08: what the local CI replay found (7 reds on main, 3 with fix PRs, the obsolete #7254 pin, a Linux hang, a load-sensitive SIGSEGV) #9974, async_hooks prototype-metadata test fails on Linux main: compiled fixture sees AsyncLocalStorage/AsyncResource prototype methods as missing #9980).Symbol.speciesarray-copy state across moving GC, a second independently reproduced pointer-layout bug found while investigating GC: a 12-element array persistently holds a pointer at index 10 that the slot enumeration never visits (UNENUMERATED, reserved=0x8020) #9983.nextmethods in eager spread,Array.from, collection-constructor, and Promise-combinator paths. The gap-suite oracle failure masked a real product bug: bulk materializers returned raw elements while manual iteration used the patch. Push-spread now keeps the boxed iterable family, roots both operands across user callbacks, preserves Set/Map/typed-array/custom-iterable sources, and normalizes holes toundefined.Investigation coverage
The landed Drizzle probe is strengthened for exact Drizzle 0.44.7 behavior and checks the lazy-typing transition after every
mergeQueriesmutation (#9935). It remains a measured negative rather than a claimed fix: 1,000 iterations matched Node, and a hostile one-iteration run survived 7,448 copying minors with the mark verifier clear. The exact production-boundary capture request is posted on #9935.Validation
tests/release_tokio_test.py: 10/10 passed.PERRY_GC_SCHEDULE_RATE=1, evacuation verification, and protected from-space). The allocation-free canonical-prototype probe passed 3/3.perry,perry-runtime-static, andperry-stdlib-staticcompleted after the final source edit; the release-helper coherence test passed. Raw-handle debt is 955 versus the 963 baseline, with all 112 per-module ceilings satisfied.Remaining release blockers and limits
maingate blocker.mainand is outside this stack.