Repository navigation
test262 remaining failures — single worklist (1,543 cases @ 95.8%, grind to 100%) #5815
Description
Single worklist for the entire remaining test262 gap
1,543 failing cases · parity 95.8% (snapshot: 2026-06-30 full sweep, perry 0.5.1208, node v26.3.0). This is a self-contained umbrella so one worker can grind the whole tail without re-measuring — every current failing case (path → reason) is enumerated in the linked worklist.
📋 Complete worklist (all 1,543 cases, grouped by area)
https://gist.github.com/proggeramlug/fd9092312edbdeeda2a61711cc954fcc
That gist is the worklist. Each area section has a count, a reason histogram, and the full list of failing test paths with their failure reason. Work area-by-area; pick the cluster with the clearest single root.
Setup (any box)
git clone https://github.com/PerryTS/perry && cd perry
cargo build --release -p perry -p perry-runtime-static -p perry-stdlib-static
git clone --depth 1 https://github.com/tc39/test262 vendor/test262 # checkout test-compat/test262/pinned-sha.txt
# node on PATH (the differential oracle). See test-compat/test262/README.md.Measure / verify any slice:
scripts/test262_subset.py --root vendor/test262 --dir <area> --jobs 8The .failures.txt sidecar lists every failing case; diff before/after to confirm zero regressions.
Biggest pools (full per-area breakdown in the gist; 82 areas total)
| Cases | Area (--dir) |
Notes |
|---|---|---|
| 338 | language/expressions |
mostly expressions/class; bulk is async-gen yield* — overlaps #5745, scope to non-async-gen |
| 229 | language/statements |
mostly statements/class; same async-gen caveat |
| 91 | built-ins/RegExp |
property-escapes \p{Script_Extensions}, v-flag (unimpl), exec internals |
| 62 | intl402/NumberFormat |
formatToParts/notation/rounding/validation |
| 61 | built-ins/Array |
exotic length/index, non-array receivers |
| 51 | intl402/DateTimeFormat |
option-validation + formatRange |
| 44 | built-ins/Object |
ToObject/assign/descriptors (overlaps #3986) |
| 38 | built-ins/Promise |
real class X extends Promise subclass support |
| 38 | built-ins/String |
non-generic receivers, normalize |
| 37 | intl402/Temporal |
Temporal.toLocaleString formatting edges |
| 33 | built-ins/Proxy |
invariant checks |
| 30 | language/eval-code |
Annex B.3.3 global-eval hoisting (partly a genuine AOT limit) |
| 23 each | annexB/language, built-ins/Function, built-ins/JSON |
|
| 20 | intl402/Segmenter |
|
| … | (Intl/RelativeTimeFormat, TypedArrayConstructors, Collator, Date, Locale, Temporal self-validate, …) | see gist |
How to work it
- Pick an area from the gist (start with a coherent single-root subcluster, not the whole area).
- Localize with
cargo run --release -- file.ts --trace hir --focus <fn>/--trace llvm. - Fix; verify the listed cases pass and re-run the slice for zero regressions.
- Code-only PR per area/subcluster: no
Cargo.toml/Cargo.lockversion bump, noCLAUDE.mdCurrent-Version edit, noCHANGELOGentry (maintainer folds metadata at merge).cargo fmt --all -- --checkandbash scripts/check_file_size.shmust pass (keep files < 2000 lines; split topically if needed). - Reference this issue in each PR. Never reference internal infrastructure hostnames in commits/PRs/docs.
Relationship to existing tickets
Consolidates the per-area tails: open #5592 #5591 #5582 #5588 #5590 #5579 #5587, and the closed-but-residual #5586 #5581 #5589 #5580 #5800. (#5735 / #5745 are owned separately — the async-gen yield* class cases belong to #5745, leave them.)
Refresh the worklist by re-running the full sweep (--dir built-ins language intl402 annexB) and regenerating the gist; not required to start.
Activity
fix(runtime,codegen): bitnot ToNumber coercion + modulus zero/sign-of…
proggeramlug commentedon Jul 1, 2026
Superseded by self-contained per-area worklist tickets — each has the complete current failing-test list inline (2026-07-01 sweep), so an agent can open one and work immediately (no history, no re-measure):
#5832 language/class · #5833 language-misc · #5834 built-ins-misc · #5835 intl-small · #5836 RegExp · #5837 NumberFormat · #5838 Array · #5839 Temporal · #5840 DateTimeFormat · #5841 eval-code · #5842 Object · #5843 String · #5844 Proxy · #5845 intl402-misc · #5846 Function · #5847 JSON · #5848 annexB-misc · #5849 Promise.