Skip to content

libmsquic in the Debian container, and a SKIP in CI is a failure - #1

Merged
ahzf merged 1 commit into
masterfrom
ci/libmsquic-debian
Oct 29, 2026
Merged

ahzf merged 1 commit into
masterfrom
ci/libmsquic-debian

Conversation

@ahzf

@ahzf ahzf commented Oct 29, 2026

Copy link
Copy Markdown
Member

The Debian 13 leg never ran h3semantics: the bare container has no libmsquic, so System.Net.Quic reports 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.

  • ci.yml and both nightly jobs: install libmsquic from packages.microsoft.com, using Microsoft's Debian 13 configuration package. Debian itself does not package it.
  • nightly against-hermod-master: now the same two-leg matrix as full-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.
  • tests/README.md: says what the legs actually run.

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

Copilot AI balanced review requested due to automatic review settings October 29, 2026 03:38
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>
@ahzf
ahzf force-pushed the ci/libmsquic-debian branch from bc88419 to 2aee18e Compare October 29, 2026 03:44

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 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 across ci.yml, nightly full-suite, and nightly against-hermod-master.
  • Promote nightly against-hermod-master from Windows-only to the same two-leg matrix as full-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; update tests/README.md accordingly.
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

Comment thread .github/workflows/ci.yml
# 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
@ahzf
ahzf merged commit 2aee18e into master Oct 29, 2026
2 checks passed
@ahzf
ahzf deleted the ci/libmsquic-debian branch October 29, 2026 04:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants