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
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
Context: GitHub's hosted runners stalled on 2026-09-07, so the PR gates were replayed locally (perrymaster, Linux x86_64, Ubuntu-like; plus macOS arm64 for some) from .github/workflows verbatim, with main 8b7dc33 as the baseline. The replay found the following on main itself. Fix PRs exist for the first three.
warnings job red — 7 dead-code errors in the product build.RUSTFLAGS="-D warnings" cargo check -p perry --bins compiles perry-runtime without regex-engine, so newborn_parent_needs_barrier and the six REGEXP_PROTOTYPE_* statics in object/regex_proto_thunks.rs are dead there. Fix: fix(runtime): gate the seven regex-engine/test-only items so the product-scope -D warnings check compiles again #9970 (cfg-gated any(test, feature = "regex-engine"); ladder-verified: warnings green, runtime suite 3247/0).
test_gap_webcrypto_async_threadpool hangs on Linux main. Alone, PERRY_RUN_TIMEOUT=60, Node 26.5.1, fast mode: 3/3 "TIMEOUT (killed after 60s)" at 64.5–64.7 s wall on main's build (and identically on an unrelated PR's build). The gap snapshot records it as passing.
Gap snapshot drift under Node 26.5.1 (Linux):test_gap_iterator_prototype_next_patch (node itself exits 1 inside node:internal/per_context/primordials:449 while perry prints the expected output — oracle-side), test_gap_9616_readable_to_web_fs, test_gap_crypto_scrypt_options, test_gap_disposablestack_2875, test_gap_promisify_pipeline_custom_6692 — all "pass → parity_fail" against the snapshot; identical sets on every PR head tested, so they are main's.
Intermittent SIGSEGV in perry-runtime's single-threaded lib suite (Linux, dev profile). Under RUST_TEST_THREADS=1 cargo test --lib -p perry-runtime the binary died 3/3 at async_hooks::test_support::tests::native_async_resource_accepts_string_and_symbol_expandos while a release build ran alongside, 0/18 without that load, never under gdb. Load-sensitive race; a native AsyncResource with string/symbol expandos is a headerless pointer-tagged receiver with side-table expandos.
lint's public-baseline step fails on every host: "public artifact benchmark inputs changed; regenerate it with ./benchmarks/run_public_baseline.sh" (the workflow's own comment dates it to 2026-07-29).
Local-replay notes: gc_ratchet.py check is hard-locked to darwin-arm64 (run measure only on Linux); the gap harnesses refuse an unpinned Node (26.5.1 pinned); cargo test --workspace --lib is not CI's shape (it links ext-crate lib tests CI never builds).
Context: GitHub's hosted runners stalled on 2026-09-07, so the PR gates were replayed locally (perrymaster, Linux x86_64, Ubuntu-like; plus macOS arm64 for some) from
.github/workflowsverbatim, with main 8b7dc33 as the baseline. The replay found the following on main itself. Fix PRs exist for the first three.warningsjob red — 7 dead-code errors in the product build.RUSTFLAGS="-D warnings" cargo check -p perry --binscompilesperry-runtimewithoutregex-engine, sonewborn_parent_needs_barrierand the sixREGEXP_PROTOTYPE_*statics inobject/regex_proto_thunks.rsare dead there. Fix: fix(runtime): gate the seven regex-engine/test-only items so the product-scope -D warnings check compiles again #9970 (cfg-gatedany(test, feature = "regex-engine"); ladder-verified: warnings green, runtime suite 3247/0).cargo-testred — one perry unit test.commands::compile::build_cache::tests::codegen_env_vars_are_build_cache_inputs:PERRY_SEGVIEW/PERRY_SEGVIEW_DIAG(segment-view lowering, perf(intl): take the view mode's canonicality proof and UTF-8 re-validation off the per-grapheme path #9893) are read by codegen but registered neither as build-cache inputs nor as exclusions — a stale cached object can be served across a lowering-knob change. Fix: fix(cache): PERRY_SEGVIEW keys the build cache, PERRY_SEGVIEW_DIAG is a recorded diagnostic exclusion — fixes codegen_env_vars_are_build_cache_inputs on main #9971 (input + reasoned exclusion + a real cache test).scripts/run_lint_gates.shwas green by omission. Its extractor accepted onlypython3 scripts/,./scripts/andcargo fmtcommands, silently dropping the "Public benchmark evidence freshness" step; its compile tier never ran the product-scope-D warningscheck. Fix: tooling(lint): run_lint_gates.sh fails loudly when a lint step yields no command — it silently dropped the public-baseline step #9969 (derives everyrun:step, fails loudly on an empty derivation, compile tier derived from thewarnings/checkjobs).scripts/gc_instrument_smoke.sharm 5b is obsolete by design.git bisect runwith the script as predicate names 9f790a5 (Add a bridge for SolidJS as on-ramp which maps to perry/ui underneath #4644, "allow retained array-growth aliases in copying verification") as the first commit where the reproducer stops panicking, on Linux and macOS alike; arm 5a stays live (3,894 objects copied under the verifier). Add a bridge for SolidJS as on-ramp which maps to perry/ui underneath #4644 reclassifies gc: PERRY_GC_ZEAL + PERRY_GC_VERIFY_EVACUATION reports a stale forwarded pointer in shadow-stack roots (10/10, pre-existing, no CI arm sets the pair) #7254's Ptr growth alias from "stale forwarded pointer" to a retained alias (its changelog: a false abort). The script's own instruction applies: retire the pinned block and run the file under an ordinary arm — with the reproducer's output checked against node under the pairing. PR in preparation. Note for the smoke's readers: the script exportsPERRY_GC_SCHEDULE_ALLOC_KB=0andPERRY_NO_AUTO_OPTIMIZE=1globally; a hand-copied arm-5 recipe without them is silent everywhere.test_gap_webcrypto_async_threadpoolhangs on Linux main. Alone,PERRY_RUN_TIMEOUT=60, Node 26.5.1, fast mode: 3/3 "TIMEOUT (killed after 60s)" at 64.5–64.7 s wall on main's build (and identically on an unrelated PR's build). The gap snapshot records it as passing.test_gap_iterator_prototype_next_patch(node itself exits 1 insidenode:internal/per_context/primordials:449while perry prints the expected output — oracle-side),test_gap_9616_readable_to_web_fs,test_gap_crypto_scrypt_options,test_gap_disposablestack_2875,test_gap_promisify_pipeline_custom_6692— all "pass → parity_fail" against the snapshot; identical sets on every PR head tested, so they are main's.RUST_TEST_THREADS=1 cargo test --lib -p perry-runtimethe binary died 3/3 atasync_hooks::test_support::tests::native_async_resource_accepts_string_and_symbol_expandoswhile a release build ran alongside, 0/18 without that load, never under gdb. Load-sensitive race; a native AsyncResource with string/symbol expandos is a headerless pointer-tagged receiver with side-table expandos.lint's public-baseline step fails on every host: "public artifact benchmark inputs changed; regenerate it with ./benchmarks/run_public_baseline.sh" (the workflow's own comment dates it to 2026-07-29).Local-replay notes:
gc_ratchet.py checkis hard-locked to darwin-arm64 (runmeasureonly on Linux); the gap harnesses refuse an unpinned Node (26.5.1 pinned);cargo test --workspace --libis not CI's shape (it links ext-crate lib tests CI never builds).https://claude.ai/code/session_011dhBmdn4vGgNibjo3oZqTo