You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
parity: 2026-08-17 dark-debt audit — 93 parity + 27 compile failures unlisted after six dark weeks (90.7% aggregate) #8271
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:
npm-package parity (~15): 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.
fastify (4 crashes + several parity) — companion crash issue.
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.
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.
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:
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.
Activity
test(parity): baseline the six-week dark debt — 136 triaged entries, …
test(parity): threshold floors ratchet from the measured 2026-08-17 b…
test(parity): make class field layout fixture valid for Node 26 (#8271)…
proggeramlug commentedon Aug 18, 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:test_lodash_max_min,test_lodash_sum,test_parity_lodashtest_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_fnsThese 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.
test(parity): ratchet the matrix-trend baseline over the #8271 dark d…
refactor(stdlib): remove uuid native binding
refactor(stdlib): remove uuid native binding
refactor(stdlib): remove uuid native binding
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
chore: regenerate ledgers/baselines/docs; fix dead-code warning; drop…
test-parity: allowlist test_issue_10155_textfield_singleline on linux…
fix(hir): new.target member reads keep the optional-chain guard (#449)