File tree Expand file tree Collapse file tree
web-static/sharechain-explorer Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ name : PPLNS parse seed-pin guard
2+
3+ # Permanent regression guard for the PPLNS parse property suite.
4+ #
5+ # The random-seeded web-static job (build.yml) can pass even when a specific
6+ # fast-check sequence still reproduces a bug, because it never replays that
7+ # sequence. This job pins seed -1679627146 — the counterexample that found
8+ # the non-finite legacy bare-number regression (input [Infinity] ->
9+ # totalPrimary Infinity, fixed in PR #51) — so the exact failing path is
10+ # re-exercised deterministically on every change to the parser or its tests.
11+
12+ on :
13+ push :
14+ branches : [master]
15+ paths :
16+ - " web-static/sharechain-explorer/**"
17+ - " .github/workflows/pplns-parse-seedpin.yml"
18+ pull_request :
19+ branches : [master]
20+ paths :
21+ - " web-static/sharechain-explorer/**"
22+ - " .github/workflows/pplns-parse-seedpin.yml"
23+
24+ jobs :
25+ seedpin :
26+ name : PPLNS parse seed-pin replay
27+ runs-on : ubuntu-24.04
28+ defaults :
29+ run :
30+ working-directory : web-static/sharechain-explorer
31+ steps :
32+ - uses : actions/checkout@v6
33+
34+ - uses : actions/setup-node@v5
35+ with :
36+ node-version : " 22"
37+ cache : npm
38+ cache-dependency-path : web-static/sharechain-explorer/package-lock.json
39+
40+ - name : Install dependencies
41+ run : npm ci
42+
43+ - name : Replay pinned seed -1679627146 against PPLNS parse property suite
44+ run : |
45+ node --import tsx --import ./.ci-seed-pin.mjs \
46+ --test "tests/unit/pplns-parse-properties.test.ts"
Original file line number Diff line number Diff line change 1+ // CI-only fast-check seed pin for the PPLNS parse property suite.
2+ //
3+ // Replays seed -1679627146 — the counterexample that surfaced the
4+ // non-finite legacy bare-number regression (shrunk input [Infinity],
5+ // totalPrimary -> Infinity). Fixed in PR #51 (parseLegacyShape now routes
6+ // the bare-number branch through num()); this preload makes that exact
7+ // path part of permanent CI, so a random-seeded run can never again pass
8+ // while the pinned sequence still fails.
9+ //
10+ // Loaded via: node --import ./.ci-seed-pin.mjs (see pplns-parse-seedpin.yml)
11+ import fc from "fast-check" ;
12+ fc . configureGlobal ( { ...fc . readConfigureGlobal ( ) , seed : - 1679627146 } ) ;
You can’t perform that action at this time.
0 commit comments