Skip to content

Adopt SpiderMonkey official test harness#697

Open
brandonpayton wants to merge 43 commits into
mainfrom
integration/kad-165-spidermonkey-tests
Open

Adopt SpiderMonkey official test harness#697
brandonpayton wants to merge 43 commits into
mainfrom
integration/kad-165-spidermonkey-tests

Conversation

@brandonpayton

Copy link
Copy Markdown
Member

Summary

This opens the single epic-level PR for kad-165 from integration/kad-165-spidermonkey-tests to main.

The branch adopts the useful SpiderMonkey official JS-shell harness work from external PR #1 and finishes the Kandelo-specific validation and classification work around it. The supported product gate for this PR is Mozilla js/src/tests jstests on both Kandelo hosts.

PR #1 provenance and adoption boundary

Source PR: brandonpayton#1

Reviewed source state:

  • External PR title: feat: add SpiderMonkey official test harness
  • Head ref: feat/spidermonkey-official-tests
  • Head commit: 9147efd908bddb87afd63d7b6c1e0263f054b985
  • Local review ref recorded by kad-165.1: pr1/feat-spidermonkey-official-tests

Adopted from PR #1:

  • Official SpiderMonkey shell wrapper shape for Mozilla jstests.py / jit_test.py.
  • Persistent Node and browser JS-shell bridge/client/server scripts.
  • Exhaustive resumable chunk runner with inventory.tsv, summary.tsv, per-chunk logs, resume support, and result directories.
  • Firefox/SpiderMonkey source helper pinned through the package manifest.
  • Browser-only SpiderMonkey test page and VFS image builder for Playwright-driven harness runs.
  • Narrow VFS exception for the intentionally non-fork-instrumented /usr/bin/js artifact.

Changed or reworked for current main:

  • Reconciled browser demo input selection with the current Vite/browser-demo structure.
  • Implemented Node stdout/stderr PID attribution without changing browser behavior.
  • Added browser bridge retry/recycle behavior for execution-context loss, guest timeouts, and browser memory pressure.
  • Added exact known-skip/resource classification layers for the final supported jstest scope.
  • Rewrote docs/spidermonkey-official-test-report.md from current Kandelo evidence rather than copying the PR feat: centralized multi-process kernel #1 snapshot.

Intentionally not adopted from PR #1:

  • No global SDK --max-memory=2147483648 default change.
  • No broad kernel memory.rs brk-limit semantic change.
  • No SpiderMonkey package patch import or package revision bump.
  • No mozglue interposer or wasm32 64-bit atomics patch import.

Those broader runtime/package changes need separate diagnosis before they can be treated as product fixes.

Supported coverage and hard counts

Full details are committed in docs/spidermonkey-official-test-report.md.

Host Suite Epic status Final evidence
Node js/src/tests jstests Completed; residual unexpected rows classified 738 selected chunks, 50,503 pass, 1,932 known skip, 237 historical unexpected rows. The 237 rows are classified as 61 wasm32 BigInt Atomics limitations, 158 non-Atomics timeout/resource rows, 2 recursion stack/resource rows, and 16 mozglue timezone/env interposer crashes.
Browser js/src/tests jstests Completed; supported residual failure count is 0 after known-skip fixes Final long tail: 11,670 pass, 418 known skip, 4 browser-only staging outliers. Superseding tail-skipfix rerun: 464 pass, 49 known skip, 0 unexpected.
Node js/src/jit-test/tests Skipped/out of scope for this epic Exploratory artifact preserved: 70 chunks, 8,634 upstream files, 10,371 pass, 45,386 unexpected under --jitflags=all; not a product gate while the package is built with --disable-jit.
Browser js/src/jit-test/tests Skipped/out of scope for this epic Inventory scope preserved at 8,634 upstream files. Partial continuation evidence recorded 108 pass and 180 fail before the scope correction interrupted the run; not a product gate while the package is built with --disable-jit.

WPT jsshell is out of scope for this epic per kad-165.9. This PR does not claim WPT validation.

Artifact paths

Authoritative Node jstest segments:

/Users/brandon/gt/kandelo/polecats/toast/kandelo/test-results/spidermonkey-official/kad-165.4-node-jstests-*

Authoritative browser jstest tail and superseding tail-skipfix rerun:

/Users/brandon/gt/kandelo/polecats/rictus/kandelo/test-results/spidermonkey-official/kad-165.7-browser-jstests-resume11-20260614T131756Z
/Users/brandon/gt/kandelo/polecats/rictus/kandelo/test-results/spidermonkey-official/kad-165.7-browser-jstests-tail-skipfix-20260614T192700Z

Preserved exploratory Node jit-test artifact:

test-runs/spidermonkey-official-node-jit-kad-165.5/

Preserved exploratory browser jit-test artifact:

/Users/brandon/gt/kandelo/polecats/morsov/kandelo/test-results/spidermonkey-official/kad-165.8-browser-jit-tests-gc4-continuation-20260614T131641Z

Known blockers and follow-up beads

Residual work is tracked rather than hidden:

  • kad-crh: Node SpiderMonkey mozglue timezone/env interposer crashes in Date/Intl jstests.
  • kad-165.18 / kad-165.12: wasm32 BigInt Atomics limitation and browser known-skip coverage.
  • kad-165.19 / kad-165.21: Node jstest timeout/resource cluster classification and exact-match expected-resource layer.
  • kad-165.20 / kad-6wx: SpiderMonkey recursion and browser stack/resource-envelope follow-ups.
  • kad-2tp: browser default-locale follow-up.

Verification

Recorded by kad-165.14 on the rebased integration branch:

  • cargo test -p kandelo --target aarch64-apple-darwin --lib passed: 882 passed, 0 failed.
  • cd host && npm run build && npx vitest run passed after rebuilding stale ignored host/dist: 79 files passed, 19 skipped; 668 tests passed, 58 skipped.
  • scripts/run-libc-tests.sh passed: 302 PASS, 0 FAIL, 20 XFAIL, 2 FLAKY, 0 TIMEOUT, total 324.
  • scripts/run-posix-tests.sh passed: 174 PASS, 0 FAIL, 3 XFAIL, 2 SKIP, total 179.
  • scripts/dev-shell.sh bash scripts/check-abi-version.sh passed with snapshot/header/TS bindings in sync.

This PR is intentionally opened as the one final epic PR; it does not directly land to main.

…m5' into HEAD

# Conflicts:
#	scripts/run-spidermonkey-official-all.sh
…bamt' into HEAD

# Conflicts:
#	scripts/run-spidermonkey-official-all.sh
@github-actions

github-actions Bot commented Jun 15, 2026

Copy link
Copy Markdown

Phase B-1 matrix build status — pr-697-staging

ABI v15. 66 built, 0 failed, 66 total.

Package Arch Status Sha
libcurl wasm32 built 129824e6
libcxx wasm32 built 17d026a9
libcxx wasm64 built 413d38cf
libpng wasm32 built deab09dd
libxml2 wasm32 built e29b87b9
libxml2 wasm64 built 2ca44317
openssl wasm32 built a7d4a86e
openssl wasm64 built 5982c611
sqlite wasm32 built f937eb28
sqlite wasm64 built f4756963
zlib wasm32 built d5185b1e
zlib wasm64 built 3a00a158
bc wasm32 built c42352a7
bzip2 wasm32 built 0a0434c8
coreutils wasm32 built 0f84c7e1
curl wasm32 built 08a54d6d
dash wasm32 built 69f1b1b2
diffutils wasm32 built b360a34a
dinit wasm32 built 7ef70141
fbdoom wasm32 built c8920ab5
file wasm32 built 0316255d
findutils wasm32 built 4d895a7f
gawk wasm32 built 1cafe372
git wasm32 built edd2fc0c
grep wasm32 built ca470f11
gzip wasm32 built ccb9c568
kandelo-sdk wasm32 built ede3141f
kernel wasm32 built ffb12c6a
less wasm32 built d98bc30d
lsof wasm32 built 59f73b7a
m4 wasm32 built 94ccf14a
make wasm32 built d0d024f9
mariadb wasm32 built 913779d2
mariadb wasm64 built 86471909
msmtpd wasm32 built 82f06d73
nano wasm32 built 177d5236
ncurses wasm32 built 0aa74d54
netcat wasm32 built 73cdeac7
nginx wasm32 built 8666e54f
php wasm32 built 409411e2
posix-utils-lite wasm32 built 1beff1db
sed wasm32 built 3ba2950d
spidermonkey wasm32 built 6122cea3
tar wasm32 built c3f115f6
tcl wasm32 built 2915911a
unzip wasm32 built 27113bf0
userspace wasm32 built e50c9ad6
vim wasm32 built b9fc24dd
wget wasm32 built 440e6b3e
xz wasm32 built 0d7a38a6
zip wasm32 built e98930e6
zstd wasm32 built 1c9f9548
bash wasm32 built da89d506
mariadb-test wasm32 built d52d9e8c
mariadb-vfs wasm32 built 9dcf48e7
mariadb-vfs wasm64 built 15b92c82
nethack wasm32 built 0884092a
node wasm32 built 6f9abe33
spidermonkey-node wasm32 built 9e59d17f
vim-browser-bundle wasm32 built 6b1dba8d
nethack-browser-bundle wasm32 built 149ca534
rootfs wasm32 built 54f5d679
shell wasm32 built e2b9918e
lamp wasm32 built d9c9fa46
node-vfs wasm32 built fbd7e78c
wordpress wasm32 built 6ce03e2f

Auto-generated; replaced on each push. Raw data in the publish-status workflow artifact.

… into HEAD

# Conflicts:
#	host/test/centralized-test-helper.ts
#	packages/registry/wordpress/test/wordpress-boot.test.ts
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant