Repository navigation
libmsquic in the Debian container, and a SKIP in CI is a failure - #1
Conversation
h3semantics drives our server with msquic, through .NET's HttpClient, and
System.Net.Quic loads libmsquic at run time. The bare debian:13 container never
had it, so on the Linux leg h3semantics reported SKIP on every run since August.
The MAX_STREAMS check, the Hermod#129 upload guard and the other 24 semantics
checks ran on Windows alone. The same reason kept the nightly referee job
against Hermod master on Windows only. A SKIP counts as a pass, so none of this
ever showed.
Debian does not package libmsquic; Microsoft publishes it for trixie at
packages.microsoft.com. The container now installs it through Microsoft's
repository configuration package, in ci.yml and in both nightly jobs, and
against-hermod-master gets the same two-leg matrix as full-suite.
tests/run-tests.sh gains --require-all, which counts a SKIP as a failure. CI
passes it on every leg. Without it, a container in which libmsquic quietly
stopped loading would go back to the two green months above, and this commit
would have changed nothing anyone could see. --help now prints the usage block,
too; it stopped at the history above it.
MEASURED (PR CI and a manual nightly on this branch, at pin 311cda6f):
libmsquic in the container 2.6.3, from packages.microsoft.com
ci.yml, debian-13-container h3semantics 26/26 (was SKIP), h3attack
13/13, 39/39; #129 guard 16/16
ci.yml, windows-latest 39/39, unchanged
nightly full-suite, both legs 39/39
nightly against-hermod-master 39/39 on Windows, and 39/39 on the new
Debian leg
--require-all SKIP/PASS/FAIL table exercised locally;
only a SKIP changes meaning under it
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
bc88419 to
2aee18e
Compare
There was a problem hiding this comment.
🟡 Changes recommended
An unresolved finding remains, flagging a CI workflow comment whose subject incorrectly states Debian rather than libmsquic is absent from the archive.
1 open issue
What changed in this PR
This PR closes a long-standing CI blind spot: the Debian 13 container leg never actually exercised the h3semantics harness because the bare container lacks libmsquic, so System.Net.Quic reported no QUIC support and the harness exited SKIP (exit code 2) — which the runner counted as a pass. As a result, every msquic-dependent check (including the Hermod#129 upload guard) had only ever run on Windows while the Debian leg stayed silently green. The fix installs libmsquic from packages.microsoft.com on the Debian legs and adds a --require-all flag that treats a SKIP as a failure, so a container where libmsquic stops loading now goes red instead of green.
Changes:
- Install
libmsquic(via Microsoft's Debian 13 config package) in the Debian container prerequisites acrossci.yml, nightlyfull-suite, and nightlyagainst-hermod-master. - Promote nightly
against-hermod-masterfrom Windows-only to the same two-leg matrix asfull-suite, with per-leg trx/artifact names. - Add
tests/run-tests.sh --require-all, which converts a harness SKIP into a failure, and wire it into every CI/nightly harness invocation; updatetests/README.mdaccordingly.
| File | Description |
|---|---|
tests/run-tests.sh |
Adds --require-all flag, help text, and exit-code-2 handling that marks SKIP as a failure when the flag is set. |
.github/workflows/ci.yml |
Installs libmsquic on the Debian leg and runs the harnesses with --require-all. |
.github/workflows/nightly.yml |
Installs libmsquic in both nightly jobs, converts against-hermod-master to a two-leg matrix with per-leg trx/artifact names, and adds --require-all. |
tests/README.md |
Documents that both harnesses now run on both legs and that CI uses --require-all. |
One low-severity documentation nit was flagged: a newly added comment in ci.yml has an incorrect subject ("Debian is not in the distribution's own archive" should refer to libmsquic).
Review effort: Balanced
| # run time and reports no QUIC support without it. Until 2026-10-29 this | ||
| # leg went without, so h3semantics skipped here and every msquic check - | ||
| # the MAX_STREAMS check, the Hermod#129 upload guard - ran on Windows | ||
| # alone. Debian is not in the distribution's own archive; Microsoft |

The Debian 13 leg never ran h3semantics: the bare container has no libmsquic, so
System.Net.Quicreports no QUIC support and the harness exits SKIP. That counts as a pass, so the leg stayed green since August. Every msquic check, including the Hermod#129 upload guard, has been Windows-only all along. The same reason kept the nightly referee job (against-hermod-master) on Windows only.libmsquicfrom packages.microsoft.com, using Microsoft's Debian 13 configuration package. Debian itself does not package it.against-hermod-master: now the same two-leg matrix asfull-suite.tests/run-tests.sh --require-all: a SKIP counts as a failure. CI passes it on every leg, so a container where libmsquic stops loading goes red instead of silently green.This PR's CI run is the verification: the Debian leg should report h3semantics 26/26 instead of SKIP. The nightly changes get a manual dispatch on this branch before merging.
🤖 Generated with Claude Code