Skip to content

parity: 2026-08-17 dark-debt audit — 93 parity + 27 compile failures unlisted after six dark weeks (90.7% aggregate) #8271

Description

@proggeramlug

First complete parity run since 2026-07-04 (run 31964093732, the 8-shard parity job from #8244 — the suite was tag-gated + continue-on-error before #8187, and the one unsharded attempt since died at GitHub's 6-hour job cap). Against a 9-entry known_failures.json, the merged whole-suite report shows six weeks of accumulated dark debt:

kind count
aggregate parity 90.7% (1125 pass / 98 parity_fail / 27 compile_fail / 17 crash / 5 node_fail / 13 skipped)
NEW parity failures (unlisted) 93
NEW compile failures (unlisted) 27
NEW crashes (unlisted) 16 — tracked in the companion crash issue
STALE entries (listed but now pass) 3 — test_gap_zlib_4917_level, test_ramda_sum, test_sock_write_map

Recognizable families (not exhaustive):

Baseline ratchet: the companion PR triages every unlisted failure into test-parity/known_failures.json citing this issue (crashes cite the crash issue), and deletes the 3 stale entries — so from today the gate is bidirectional again: any NEW failure and any entry that starts passing both go red. Entries here are a work queue, not a suppression: fix → delete the entry in the same PR (the ratchet enforces it).

Full merged report + per-family list: artifact parity-report of the validation runs on #8244's branch.

Activity

  1. proggeramlug commented on Aug 18, 2026

    @proggeramlug
    ContributorAuthor

    npm-package parity family audit complete: all 21 scoped tests were run individually with Node 26.5.1 and rebuilt release/static artifacts, and the Linux shard artifacts from run 31964093732 were used to confirm platform-specific output.

    Genuine shared root cause (1 test)

    Broken Node oracles (11 tests; not Perry failures)

    After the repository CI-equivalent npm ci, Node exits ERR_MODULE_NOT_FOUND because these fixture packages are absent from package.json and package-lock.json:

    • lodash: test_lodash_max_min, test_lodash_sum, test_parity_lodash
    • test_parity_nanoid, test_parity_decimal (decimal.js), test_parity_dotenv, test_parity_uuid, test_parity_lru_cache, test_parity_validator, test_parity_commander, test_parity_date_fns

    These entries remain and are now classified ci-env with the broken-oracle reason. I did not add dependencies or change fixtures to paper over the oracle.

    Independent Perry fixes

    • test_parity_argon2: the expected-output oracle is intentional; JsPromise::resolve_bool encoded async booleans as numeric 1/0 instead of JS boolean tags. Fixed, unit-guarded, parity 1/1 pass, and queue entry deleted in fix: resolve FFI promise booleans as booleans #8371.
    • test_parity_test: sole mismatch was missing mock.timers[Symbol.dispose]. Added a distinct non-enumerable zero-arity disposer with reset behavior, unit-guarded, parity 1/1 pass, and queue entry deleted in fix: add mock timers dispose support #8372.

    Zlib split

    • test_parity_zlib initially did not link because perry-ext-zlib lacked js_zlib_unzip_sync and js_zlib_crc32. fix: add missing external zlib exports #8375 adds both exports plus gzip/zlib auto-detection and seeded CRC32 tests (28/28 wrapper tests pass). The full fixture now compiles and reaches runtime, but remains queued: direct zlib.gzip(..., callback) fires, while await promisify(zlib.gzip)(...) stays unsettled and Perry exits 13. That remaining failure is an independent util.promisify bridge gap, recorded in the sharpened entry.

    Unrelated existing singles (6 tests)

    All reproduce against both Node 22 and 26.5.1, so they predate the oracle-bump commit:

    • test_parity_dayjs: numeric 1/0 predicates plus ISO/default/startOf/endOf formatting differences.
    • test_parity_cluster: namespace import exposes on/addListener as functions where Node exposes undefined, despite the intended namespace/default split.
    • test_parity_cron: default import resolves validate/schedule as undefined, then fails reading task.start.
    • test_parity_crypto: algorithm inventories are incomplete on Linux (Perry 15/6/17 vs Node 134/82/52 ciphers/curves/hashes).
    • test_parity_moment: native shim stops at unimplemented moment.utc.
    • test_parity_util: independent API-shape differences in system-error-map order, transferable abort-controller inspection, MIMEParams iteration, and inspect styles/colors.

    Bottom line: there was no shared npm import regression across the family. The only shared-window regression was Buffer; the largest common group is 11 broken package oracles. The remaining implementation gaps are independent and are now described as such. Leaving #8271 open as the umbrella work queue.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions