From b12dedc1ff356b071c180efe1c54dccefbd78386 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ralph=20K=C3=BCpper?= Date: Wed, 26 Aug 2026 07:01:27 +0200 Subject: [PATCH] ci: restore parity release margin --- .github/workflows/test.yml | 9 +++++++-- changelog.d/8841-release-parity-budget.md | 1 + scripts/ci_plan.py | 11 +++++++---- test-parity/known_failures.json | 9 +++++++++ 4 files changed, 24 insertions(+), 6 deletions(-) create mode 100644 changelog.d/8841-release-parity-budget.md diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 17717e9e46..b518a5fedf 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -2401,7 +2401,9 @@ jobs: # # Sharded 2026-08-16: the unsharded job was killed by GitHub's 6-hour job # cap (run 31935729773, 11:44 -> 17:45) — the release gate could not - # complete even in principle. Each shard runs `run_parity_tests.sh + # complete even in principle. Increased 8 -> 12 shards after release run + # 32922022811 reached only 152/173 tests in shard 8 before the old + # 150-minute cap. Each shard runs `run_parity_tests.sh # --shard N/M` (round-robin partition, same mechanism as gap-suite) plus # `parity_known_failures.py`, which is shard-safe by design ("not in this # shard is never flagged"). The AGGREGATE gates — the threshold minimums @@ -2426,7 +2428,10 @@ jobs: matrix: shard: ${{ fromJSON(needs.plan.outputs.plan).parity.shards }} runs-on: ubuntu-latest - timeout-minutes: 150 + # A healthy shard must finish well below this cap after the 12-way split. + # 210 is a hang backstop with cold-cache/host-contention margin, not a + # performance budget; a cancelled shard makes full-suite-gate fail. + timeout-minutes: 210 steps: - uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7 - name: Install Rust toolchain diff --git a/changelog.d/8841-release-parity-budget.md b/changelog.d/8841-release-parity-budget.md new file mode 100644 index 0000000000..92247d1c99 --- /dev/null +++ b/changelog.d/8841-release-parity-budget.md @@ -0,0 +1 @@ +- Keep release-grade parity CI viable as the corpus grows by spreading it over twelve shards, adding timeout margin, and tracking the Linux Parcel watcher facade mismatch surfaced by the v0.5.1519 candidate. diff --git a/scripts/ci_plan.py b/scripts/ci_plan.py index 5fd6a5d296..aff1ebdc54 100755 --- a/scripts/ci_plan.py +++ b/scripts/ci_plan.py @@ -121,10 +121,13 @@ } # Parity: full tier only, sharded. The unsharded job was killed by GitHub's -# 6-hour job cap on 2026-08-16 (run 31935729773) — 8 shards puts each around -# 45-75 min. `parity-aggregate` (not in JOBS: it keys off `jobs.parity`) -# merges the shard reports and runs the aggregate-only gates. -PARITY_SHARDS = 8 +# 6-hour job cap on 2026-08-16 (run 31935729773). The corpus subsequently +# outgrew the original 8-way split: release run 32922022811 reached only +# 152/173 tests in shard 8 before its 150-minute cap. Twelve shards restore +# wall-time margin without exceeding the org's 20-runner pool once the other +# full-tier jobs drain. `parity-aggregate` (not in JOBS: it keys off +# `jobs.parity`) merges the shard reports and runs the aggregate-only gates. +PARITY_SHARDS = 12 EXTENDED_LABEL = "run-extended-tests" diff --git a/test-parity/known_failures.json b/test-parity/known_failures.json index 9345305746..f8a2143273 100644 --- a/test-parity/known_failures.json +++ b/test-parity/known_failures.json @@ -745,6 +745,15 @@ "linux" ] }, + "test_parcel_watcher_facade": { + "issue": "8841", + "added": "2026-08-26", + "category": "ci-env", + "reason": "Release run 32922022811: the Linux Node oracle exits in package_json_reader while Perry's native watcher sees events but times out waiting for the nested create event. Track the CI-dependent facade mismatch without weakening the dedicated Parcel watcher integration tests.", + "platforms": [ + "linux" + ] + }, "test_parity_cluster": { "issue": "8271", "added": "2026-08-17",