Repository navigation
ci: windows-known-failing - #940
Conversation
The Windows row's Run tests step, on merge_group only, runs through scripts/ci-known-failing.sh with .github/known-failing-windows.txt. The step passes on a failing run only when every failure is a listed `<binary>: <test name>` pair; anything else (an unlisted test, a compile error, a runner error, no Build Summary) keeps the command's status. A listed test that passed is reported in the job summary so the list shrinks. scripts/test-ci-known-failing.sh checks it on the real output of run 40559487600 and variants, on Linux and on Windows' own awk. Agent-Team: macos Worker: claude Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PM note: how this PR will be handledWhat it is for: ci: windows-known-failing Rules that apply: touches CI or workflows. Things to watch (checked by rule):
What happens next:
A living status comment below is kept current. Nothing here is a merge decision. |
Where this PR standsStage: Author's turn What the PM needs before approving (ticks as it is met; the full CI runs only at the end, after the reviews are clean):
Rules that apply: touches CI or workflows. Reviews at the current commit (
Updated 2026-10-28 00:09 UTC by the PM. This comment is edited in place. |
Part of fizzyedit/work#549
Goal
Stop the merge queue ejecting PRs on Windows' intermittent
fizzy-control-server-testscrash, which fails on main too, without hiding any other failure. This changes a required check: the maintainer's yes is the card windows-flaky (2026-10-27), recorded on fizzyedit/work#549.ci-okandpm-approvalare untouched.What changed and why
.github/known-failing-windows.txt: one known failure per line,<test binary>: <test name> | work#N(owner). Today Ops' one line; it names work#549 until the PM files an owner for the fix.scripts/ci-known-failing.sh <list> <command...>: runs the command unchanged; on a non-zero exit it passes only when the output proves every failure is listed, fail-closed: aBuild Summary:exists; its failed-step count equals therun teststeps reporting failing tests (so a compile error or any other failed step fails); everyerror: '<name>' ...in those steps' blocks is a listed<bin>: <name>, at least one per failing test, with no othererror:line there; and the summary's failed/crashed/timed-out totals match. A listed test whose binary ran clean is a::notice::and a line in the step summary, so the list shrinks; a tolerated one is a::warning::naming its owner. Bash + awk only (no Python on the Windows runner).ci.yml: only the Windows row's Run tests onmerge_groupgoes through the wrapper (insideci-retry.sh, so each retry is judged on its own output). The wrapper's test runs in the Format job (Linux awk) and on the Windows row (Git Bash's awk).How it was verified
scripts/test-ci-known-failing.sh(13 cases) on the real Windows output of run 40559487600 and edits of it: the listed crash passes (with the warning and step summary); an unlisted name in the same binary, the listed name in another binary, a second failure beside the listed one, an unnamed failing test, a runner error in the listed block, a compile error beside it, an unlisted leak, a missing Build Summary, and an ownerless list line all fail with the command's status; a green run reports the listed test as passing.terminated with signal ABRT) → 0; listed assertion failure → 0; unlisted failure → 1; listed crash + unlisted failure → 1; a compile error → 1.bash -non both scripts. The repo has no workflow linter, and actionlint/shellcheck could not be installed on this Mac.Not done / follow-ups
changes).Changes (5 files, +490/-1)
Gates: 6 of 6 passed
scripts/check-fmt.sh(exit 0)scripts/zb build --summary all(exit 0)scripts/zb build test --summary all(exit 0)scripts/zb build test-integration --summary all(exit 0)scripts/zb build check-web --summary all(exit 0)scripts/zb build test-sdk-version --summary all(exit 0)