Repository navigation
parity: 2026-08-17 dark-debt audit — 93 parity + 27 compile failures unlisted after six dark weeks (90.7% aggregate) #8271
Description
Activity
- added 3 commits that reference this issue
on Aug 17, 2026 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)
test_parity_bufferwas the only regression caused by the six-week-window oracle change. Bisecting 2026-07-04 -> 2026-08-17 found first baddb4b068d826dbb103461f467c86f3616e3fbe8a4(ci: standardize the gap-suite Node oracle on 26.5.0..., ci: standardize the gap-suite Node oracle on 26.5.0 (single .node-version pin) #6367). Node 22 reportsBuffer.poolSize = 8192; Node 26 reports65536. Fixed and removed from the queue in fix: match Node 26 Buffer pool size #8370 (merged).
Broken Node oracles (11 tests; not Perry failures)
After the repository CI-equivalent
npm ci, Node exitsERR_MODULE_NOT_FOUNDbecause these fixture packages are absent frompackage.jsonandpackage-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-envwith 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_boolencoded async booleans as numeric1/0instead 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 missingmock.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_zlibinitially did not link becauseperry-ext-zliblackedjs_zlib_unzip_syncandjs_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: directzlib.gzip(..., callback)fires, whileawait promisify(zlib.gzip)(...)stays unsettled and Perry exits 13. That remaining failure is an independentutil.promisifybridge 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: numeric1/0predicates plus ISO/default/startOf/endOf formatting differences.test_parity_cluster: namespace import exposeson/addListeneras functions where Node exposesundefined, despite the intended namespace/default split.test_parity_cron: default import resolvesvalidate/scheduleas undefined, then fails readingtask.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 unimplementedmoment.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.
- added a commit that references this issue
on Aug 20, 2026 - added 14 commits that reference this issue
on Sep 19, 2026
First complete parity run since 2026-07-04 (run 31964093732, the 8-shard
parityjob from #8244 — the suite was tag-gated +continue-on-errorbefore #8187, and the one unsharded attempt since died at GitHub's 6-hour job cap). Against a 9-entryknown_failures.json, the merged whole-suite report shows six weeks of accumulated dark debt:test_gap_zlib_4917_level,test_ramda_sum,test_sock_write_mapRecognizable families (not exhaustive):
test_perry_tui_inkcompat_*,test_issue_358_*,test_issue_679_*,test_issue_40x_*— Compileink(React-based TUI framework) end-to-end viaperry.compilePackages#348's area.test_parity_lodash/moment/dayjs/date_fns/uuid/nanoid/validator/commander/cron/dotenv/decimal/lru_cache/argon2,test_lodash_*— smells like one shared import/oracle change, worth bisecting as a family.test_issue_915_*,test_issue_927_*,test_jose_sign,test_jwt_sign_dynamic_alg,test_jose_signverify_roundtrip) — thejs_jwt_sign_dynlink family (compile-smoke: test_precompile_basic could never pass — build step omits the -static wrapper crates (+ jwt/gtk4 never skip-listed) #8224's item 2).test_ui_*/ media / canvas) — compile-smoke: test_precompile_basic could never pass — build step omits the -static wrapper crates (+ jwt/gtk4 never skip-listed) #8224's item 3 class: fixtures never skip-listed for a host withoutlibperry_ui_gtk4.a.test_parity_buffer,test_parity_crypto,test_parity_util,test_parity_cluster,test_reflect_metadata,test_issue_3580_arguments_object_semantics,test_issue_4034_object_literal_semantics,test_class_field_layout.Baseline ratchet: the companion PR triages every unlisted failure into
test-parity/known_failures.jsonciting 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-reportof the validation runs on #8244's branch.