Skip to content

Commit 986f4fc

Browse files
authored
Merge pull request #52 from frstrtr/ci-steward/seedpin-pplns-parse
ci: PPLNS parse seed-pin regression guard (seed -1679627146)
2 parents 8b50ef9 + dc01e65 commit 986f4fc

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
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"
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
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 });

0 commit comments

Comments
 (0)