Conformance

Cruft runs the full test262 suite: every section, zero skips. Cruft v0.0.10 passes 53,519 / 53,578 against corpus 3655e7464d (measured 2026-08-13), and every remaining failure is individually classified: none is an unresolved spec-conformance gap.

These classifications are a snapshot, not a fixed score. Which tests pass, fail, or time out depends on the test harness, the test262 corpus revision, the per-test time budget, and the machine. A different runner or a newer corpus can move tests between categories. Reproduce or re-measure it yourself with cruft-verify.

What test262 covers

test262 is the official ECMAScript conformance suite. It is organized into five areas, all of which Cruft runs:

SectionWhat it verifies
LanguageCore grammar, scoping, and execution semantics: expressions, statements, functions, classes, generators, and modules.
Built-insThe standard library: global objects, prototypes, and their methods (Object, Array, RegExp, Promise, TypedArray, Atomics, Temporal, and the rest).
Intl (intl402)ECMA-402 internationalization: locales, number and date formatting, collation, and calendars.
StagingTC39 proposals still in flight, ahead of standardization.
Annex BLegacy web-compatibility features the specification requires of browser-facing engines.

Zero spec-conformance gaps

Every residual failure is classified; none is an unresolved spec gap:

CountClassWhat these are
36Deliberate deviationLegacy Function.prototype.caller / arguments on strict-mode functions. Cruft ships the spec-pure %ThrowTypeError% poison pill by default; CRUFT_DEVIATION_LEGACY_CALLER_ARGUMENTS=1 flips all 36 to passing.
22Wall-clock budgetSpiderMonkey stress tests that exceed the runner's 10-second per-test cap; each passes given more time, so they measure interpreter dispatch cost, not a spec gap. Each is timed below.
1Deliberate deviationIntl.supportedValuesOf("calendar") enumerates orthodox, a calendar Cruft ships by design; one proposal test asserts the exact standard set and so rejects the extra member. Shown below.
The 36 legacy caller and arguments tests

Every test in the deviation row above, grouped by directory under tc39/test262 at 3655e7464d with each path shown relative to its group. All 36 flip to passing under CRUFT_DEVIATION_LEGACY_CALLER_ARGUMENTS=1.

#Test
built-ins/Function (21)
115.3.5.4_2-12gs.js
215.3.5.4_2-14gs.js
315.3.5.4_2-75gs.js
415.3.5.4_2-76gs.js
515.3.5.4_2-77gs.js
615.3.5.4_2-78gs.js
715.3.5.4_2-79gs.js
815.3.5.4_2-80gs.js
915.3.5.4_2-81gs.js
1015.3.5.4_2-82gs.js
1115.3.5.4_2-83gs.js
1215.3.5.4_2-84gs.js
1315.3.5.4_2-85gs.js
1415.3.5.4_2-86gs.js
1515.3.5.4_2-87gs.js
1615.3.5.4_2-88gs.js
1715.3.5.4_2-89gs.js
1815.3.5.4_2-90gs.js
1915.3.5.4_2-91gs.js
2015.3.5.4_2-92gs.js
2115.3.5.4_2-93gs.js
language/arguments-object (2)
2210.6-13-a-2.js
2310.6-13-a-3.js
staging/sm (13)
24Function/function-caller-restrictions.js
25extensions/arguments-property-access-in-function.js
26extensions/censor-strict-caller.js
27extensions/function-caller-skips-eval-frames.js
28extensions/function-properties.js
29regress/regress-577648-1.js
30regress/regress-577648-2.js
31regress/regress-584355.js
32regress/regress-586482-1.js
33regress/regress-586482-2.js
34regress/regress-586482-3.js
35regress/regress-586482-4.js
36regress/regress-586482-5.js
The 22 wall-clock-budget tests and their times

Run in isolation (one test, no sweep cap), all 22 pass and return the correct result. They land in the budget bucket only under the full parallel sweep, where each must finish inside a 10-second per-test slot. The times below were measured on an Apple M1 Pro (16 GB) against tc39/test262 at 3655e7464d, and are machine-dependent rather than a fixed property of the tests.

TestResult in isolationWall-clock
test/staging/sm/Date/dst-offset-caching-8-of-8.jsPASS116.2s
test/staging/sm/Date/dst-offset-caching-6-of-8.jsPASS116.1s
test/staging/sm/Date/dst-offset-caching-5-of-8.jsPASS115.5s
test/staging/sm/Date/dst-offset-caching-4-of-8.jsPASS115.2s
test/staging/sm/Date/dst-offset-caching-3-of-8.jsPASS114.7s
test/staging/sm/Date/dst-offset-caching-7-of-8.jsPASS114.5s
test/staging/sm/Date/dst-offset-caching-2-of-8.jsPASS114.1s
test/staging/sm/Date/dst-offset-caching-1-of-8.jsPASS91.3s
test/staging/sm/TypedArray/sort_large_countingsort.jsPASS64.8s
test/built-ins/decodeURIComponent/S15.1.3.2_A2.5_T1.jsPASS34.1s
test/built-ins/decodeURI/S15.1.3.1_A2.5_T1.jsPASS33.9s
test/staging/sm/regress/regress-610026.jsPASS27.5s
test/staging/sm/Array/toSpliced-dense.jsPASS24.9s
test/language/literals/regexp/S7.8.5_A1.4_T2.jsPASS23.5s
test/language/literals/regexp/S7.8.5_A2.4_T2.jsPASS22.4s
test/language/literals/regexp/S7.8.5_A2.1_T2.jsPASS21.9s
test/annexB/built-ins/RegExp/RegExp-leading-escape-BMP.jsPASS21.1s
test/annexB/built-ins/RegExp/RegExp-trailing-escape-BMP.jsPASS20.2s
test/language/literals/regexp/S7.8.5_A1.1_T2.jsPASS20.1s
test/staging/sm/expressions/nullish-coalescing.jsPASS18.5s

Two of them complete in milliseconds standalone and reach the budget bucket only under parallel-sweep contention, not because the work is slow:

TestResult in isolationWall-clock
test/built-ins/Atomics/wait/bigint/waiterlist-order-of-operations-is-fifo.jsPASS0.35s
test/built-ins/RegExp/S15.10.2.8_A3_T17.jsPASS0.03s
The 1 calendar Cruft adds to Temporal

Cruft ships the orthodox calendar (the Orthodox Paschalion) in its Temporal calendar set, with a full Intl.DisplayNames entry, so Intl.supportedValuesOf("calendar") returns it alongside the standard members. One proposal test checks that list against the exact standard set and rejects anything extra. This is Cruft offering more than the specification requires, not failing to meet it.

Testtest/intl402/Intl/supportedValuesOf/calendars-required-by-intl-era-monthcode.js
The test expectsthe exact standard set of 16 calendars
Cruft returnsthose 16 plus one: orthodox

The full list Intl.supportedValuesOf("calendar") returns in Cruft:

CalendarIn the standard set
buddhistYes
chineseYes
copticYes
dangiYes
ethioaaYes
ethiopicYes
gregoryYes
hebrewYes
indianYes
islamic-civilYes
islamic-tblaYes
islamic-umalquraYes
iso8601Yes
japaneseYes
orthodoxCruft addition
persianYes
rocYes