fix: #797 — restructure known_failures.json with audit metadata#819
Merged
Conversation
`test-parity/known_failures.json` was a flat string-to-string map. The issue (#797) asked for per-entry provenance: an issue reference and the date the test was skip-listed, so stale entries can be closed and orphans can be filed. Restructures each entry as an object: "test_name": { "issue": "793" | null, # open tracker, or null for ci-env / pending triage "added": "YYYY-MM-DD", # date skip-listed "category": "ci-env | module-inventory | bug-open | bug-stale | gap-categorical | gap-bisect", "reason": "..." } Adds a top-level `_schema` key that documents the format inline (we'd otherwise need a separate README; per project convention we don't add those without an explicit ask). The CI gate in `.github/workflows/test.yml` is updated to: - Filter `_schema` out of the keys it diffs against test failures, so it isn't treated as a phantom known test. - Validate that every other entry is an object with non-empty `category` and `reason` — fails the build on malformed entries so the format doesn't silently drift back to the legacy flat-string shape. All historical entries inherit `added: 2026-05-15` (the audit date). All cross-referenced issues were checked: closed ones (#233, #422, #462, #510, #561, #616, #654, #685, #91) are flagged as `bug-stale` and rolled under the parity roadmap meta (#793) until a Linux-specific tracking issue is filed for the surviving sub-case. Net tests that need a fixture (`test_net_min`, `test_net_socket`, `test_net_upgrade_tls`, `test_issue_422_socket_connect`, `test_sock_write_map`) are tagged `ci-env` with `issue: null` — those need a CI fixture, not a Perry fix. Module-inventory trackers point at #789 (async_hooks) or #793 (rest).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
test-parity/known_failures.jsonmoves from a flat string-to-string map to per-entry structured records withissue,added(date skip-listed),category, andreason._schemablock at the top of the file (we don't generally add free-standing READMEs without an explicit ask, so the schema lives in the file it documents)..github/workflows/test.ymlto filter_schemaout of the test-name set and to validate every other entry has non-emptycategory+reason— fails the build on malformed entries so the format can't silently drift back.Audit findings (relayed in the entry
reasonstrings)connectanderrorevents never fire;net.connect()factory returns undefined #422, Runtime: throw TypeError on property access against undefined / null #462, Runtime: throw TypeError on property access against primitive receivers (number, boolean, raw f64) #510, Web Crypto: implement crypto.subtle.digest / importKey / sign (HMAC-SHA-256, SHA-256) #561, TypeError stack-trace output diverges from Node — Perry's 'Uncaught exception:' prefix + missing file:line header (regression from v0.5.702 #596) #616, AOT: Float64Array typeof === 'number' and methods (.sort, .at) don't dispatch #654, perry-runtime: Effect framework throwsTypeError: (number).slice is not a functionduringSchema.tsmodule init (Effect end-to-end blocker, post-#671) #685, AOT: sock.write() via Map-retrieved object silently drops ~100-byte packets inside 'data' callback (closure sock.write works) #91 are all CLOSED. Their entries are now taggedbug-staleand parked under the parity roadmap meta (Roadmap: Node.js + TypeScript compatibility & stability #793) until a Linux-specific tracking issue is filed for the surviving sub-case in each.test_net_min,test_net_socket,test_net_upgrade_tls,test_issue_422_socket_connect,test_sock_write_map) are nowci-envwithissue: null— they pass locally with an echo server; CI just lacks the fixture.test_parity_path,test_parity_tty) appear to currently PASS after the recent landings — entries retained until the next sweep confirms they can be removed, so the diff stays focused on format/provenance.Test plan
jq -r 'keys[] | select(. != \"_schema\")' test-parity/known_failures.json | wc -l→ 58 (matches original 59 minus the new_schemakey).Closes #797.