Skip to content

ci: run PR workflows when a PR's base branch changes - #4022

Merged
larseggert merged 3 commits into
mainfrom
codspeed/setup-base-change-trigger
Sep 24, 2026
Merged

larseggert merged 3 commits into
mainfrom
codspeed/setup-base-change-trigger

Conversation

@codspeed

@codspeed codspeed Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor

Follow-up to the discussion in #3989.

Problem

When jj-stack reorders a stack, it force-pushes each PR's head and retargets the base about 8 s later. If the new head conflicts with the old base, GitHub skips the synchronize run because pull_request workflows don't run on conflicting PRs. The retarget that follows is an edited event, and none of our pull_request workflows listen for it. That commit then gets no CI checks, benchmarks, QNS or CodSpeed runs, and the PR stacked on top of it is compared against an older base. This happened to #3988 @ 49a9494 and #3989 @ 00c69c0: GitHub shows 0 Actions runs for either SHA.

Changes

All pull_request workflows (actionlint, bench, check, check-mtu, clippy, codspeed, deny, dependency-review, firefox, fuzz-bench, machete, mutants-pr, perfcompare, qns-pr, readme, rustfmt, sanitize, semver):

  • Add edited to the pull_request types, next to the existing types (the default opened, synchronize, reopened, plus ready_for_review in qns-pr.yml).
  • Run only on base changes. Every root job checks github.event.action != 'edited' || github.event.changes.base. Editing a title or description skips every job. Jobs that would otherwise run after skipped dependencies (!cancelled() / always(): bench-variants and results in bench.yml, results in perfcompare.yml, report in qns-pr.yml, crap in check.yml, check-bindings in check-mtu.yml) also check it.
  • Keep other edits from cancelling runs. Each concurrency group is per PR and uses cancel-in-progress: true, which applies even when all of the new run's jobs get skipped. Edits that don't change the base now get a unique group (suffixed with run_id), so they cancel nothing. Base changes and pushes still share the per-PR group.
  • A run whose jobs are all skipped ends with the conclusion skipped, so pr-comment.yml (which only acts on success/failure) leaves existing bot comments alone.

codspeed.yml only:

  • benchmarks also requires needs.bench-matrix.result == 'success'. Its !cancelled() condition would otherwise start it after a skipped or failed bench-matrix (with an empty matrix output).
  • Check that the merge commit is of the PR head into the PR base. Results are filed under pull_request.head.sha, but the job benchmarks refs/pull/N/merge. bench-matrix fails unless GITHUB_SHA is a two-parent merge whose second parent is the head and whose first parent is pull_request.base.sha, or a descendant of it in case the base branch moved on (checked via the compare API only on a mismatch). A retarget leaves the head SHA unchanged, so checking only the head would accept a stale merge against the old base. Parents are read with git cat-file, because HEAD^2 isn't resolvable in the shallow checkout. perfcompare now also needs: bench-matrix.

Another benefit: when a PR in the stack merges and its branch is deleted, GitHub retargets the next PR to main. That retarget is also an edited event with changes.base, so the next PR now gets a fresh CI run against main.

Not changed

  • claude.yml uses pull_request_target, which runs on the base branch's context even when the PR conflicts. pr-comment.yml runs on workflow_run. Neither is affected.
  • Having jj-stack retarget the base before pushing the head would avoid the problem at the source.

Validation

  • actionlint passes. zizmor --offline reports no findings, the same as before.
  • Tested the merge-commit check against a shallow clone of this PR's real merge ref: it passes for the actual base and for an older base on main, and fails for a base that isn't an ancestor of the first parent or a wrong head.

When a stacked PR is reordered, its head is pushed before its base is
retargeted. The push can conflict with the old base, so GitHub skips the
`synchronize` run, and the retarget is an `edited` event, which the
workflow did not listen to. The commit then never gets a CodSpeed run,
and PRs stacked on it are compared against an older base.

Also listen to `edited`, but only run on base changes, and keep other
edits out of the concurrency group so they can't cancel a run. Check
that the test merge commit contains the PR head before uploading
results filed under it.
@codecov

codecov Bot commented Sep 24, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.84%. Comparing base (f40c8d6) to head (cacde7d).
⚠️ Report is 2 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4022      +/-   ##
==========================================
- Coverage   96.98%   96.84%   -0.14%     
==========================================
  Files         113      118       +5     
  Lines       39657    40002     +345     
  Branches    39657    40002     +345     
==========================================
+ Hits        38461    38740     +279     
- Misses       1182     1236      +54     
- Partials       14       26      +12     
Flag Coverage Δ
freebsd 94.27% <ø> (-0.15%) ⬇️
linux 97.04% <ø> (ø)
macos 95.15% <ø> (+<0.01%) ⬆️
windows 95.27% <ø> (+0.02%) ⬆️

Flags with carried forward coverage won't be shown. Click here to find out more.

Components Coverage Δ
neqo-common 99.31% <ø> (ø)
neqo-http3 95.33% <ø> (ø)
neqo-qpack 96.97% <ø> (ø)
neqo-transport 97.81% <100.00%> (+0.03%) ⬆️
neqo-udp 95.37% <ø> (ø)
mtu 89.13% <ø> (ø)
🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@codspeed

codspeed Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor Author

Merging this PR will regress 4 benchmarks

⚠️ Different runtime environments detected

Some benchmarks with significant performance changes were compared across different runtime environments,
which may affect the accuracy of the results.

Open the report in CodSpeed to investigate

⚡ 11 improved benchmarks
❌ 4 regressed benchmarks
✅ 84 untouched benchmarks

Warning

Please fix the performance issues or acknowledge them on CodSpeed.

Performance Changes

Mode Benchmark BASE HEAD Efficiency
❌ Simulation coalesce_acked_from_zero 1 ranges 2.8 µs 3 µs -5.51%
❌ Simulation simulated/pacing-false/varying-seeds 72.7 ms 76.6 ms -5.06%
❌ Simulation coalesce_acked_from_zero 3 ranges 3.8 µs 4 µs -4.11%
❌ Simulation simulated/pacing-false/same-seed 75.6 ms 77.6 ms -2.57%
⚡ WallTime walltime/pacing-true/same-seed 2.1 ms 2 ms +5.31%
⚡ WallTime quiche-neqo 51.2 ms 48.7 ms +5.21%
⚡ WallTime walltime/1000-streams/each-1000-bytes 11.6 ms 11.1 ms +4.58%
⚡ WallTime walltime/1000-streams/each-1-bytes 3.8 ms 3.6 ms +4.5%
⚡ WallTime 1-conn/1-1b-resp (aka. HPS) 3 ms 2.9 ms +4.31%
⚡ WallTime walltime/1-streams/each-1000-bytes 131.5 µs 126.7 µs +3.83%
⚡ WallTime walltime/10-streams/each-1048576-bytes 28.3 ms 27.2 ms +3.79%
⚡ WallTime walltime/1-streams/each-4194304-bytes 10.6 ms 10.2 ms +3.6%
⚡ WallTime walltime/pacing-false/varying-seeds 2.1 ms 2 ms +3.1%
⚡ WallTime walltime/pacing-true/varying-seeds 2.1 ms 2 ms +2.71%
⚡ WallTime walltime/pacing-false/same-seed 2 ms 2 ms +2.28%

Tip

Investigate this regression by commenting @codspeedbot fix this regression on this PR, or directly use the CodSpeed MCP with your agent.


Comparing codspeed/setup-base-change-trigger (cacde7d) with main (e9c87f3)

Open in CodSpeed

@larseggert

Copy link
Copy Markdown
Collaborator

@codspeedbot fix all workflows affected by this in this PR

@codspeed

codspeed Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor Author

@codspeedbot fix all workflows affected by this in this PR

I applied the same base-change fix to every other pull_request workflow and pushed it as 3388b1e. actionlint passes and zizmor --offline finds nothing new. None of this has run on GitHub yet: no base change or title edit has happened on this PR since the push.

Workflows changed (17): actionlint, bench, check, check-mtu, clippy, deny, dependency-review, firefox, fuzz-bench, machete, mutants-pr, perfcompare, qns-pr, readme, rustfmt, sanitize, semver.

Each one got the same three changes as codspeed.yml:

  • Trigger: edited is added to the pull_request types, alongside the existing ones (qns-pr keeps ready_for_review).
  • Job condition: every root job checks github.event.action != 'edited' || github.event.changes.base, so jobs only run when the base changed. Jobs that would otherwise start after a skipped dependency get the same check:
    • bench-variants and results in bench.yml
    • results in perfcompare.yml
    • report in qns-pr.yml
    • crap in check.yml
    • check-bindings in check-mtu.yml
  • Concurrency: edits that don't change the base get a concurrency group ending in run_id, so renaming a PR doesn't cancel CI that's already running. Pushes and base changes still share the per-PR group and cancel as before.

Not changed:

  • claude.yml uses pull_request_target, which runs even when a PR has merge conflicts, so it isn't affected.
  • pr-comment.yml runs on workflow_run. It only posts on success or failure, and a run whose jobs were all skipped ends as skipped, as the Claude Code Review run on this PR's head shows. So title edits won't touch the bot comments.
  • The merge-commit guard is still only in codspeed.yml. The other workflows would need an extra gate job, mostly because the ones that call a shared workflow from mozilla/actions can't take an extra step. Whether a stale merge ref can actually happen after a retarget is unconfirmed.

Check before merging: a title or description edit now adds a new run to the head commit in which every job is skipped. Skipped jobs count as passing for required status checks. If branch protection uses the newest check of each name (I couldn't confirm this), editing a PR whose required check had failed could hide that failure. This affects single-job workflows such as Format, Deny, Machete and README. Matrix jobs aren't affected, because a skipped matrix job shows up under a different name. Please edit a PR's title once and confirm that an existing failing required check still blocks the merge.

I also updated the PR title and description to match the wider scope.

Summary
  • Warming up the performance wizard...
  • Survey pull_request workflows — 17 workflows besides codspeed.yml run on pull_request. claude.yml (pull_request_target) and pr-comment.yml (workflow_run) aren't affected.
  • Apply base-change trigger to affected workflows — Added the edited trigger, base-change job gating and the concurrency fix to all 17
  • Validate with actionlint and zizmor — actionlint clean. zizmor reports no findings, the same as before.
  • Commit and push — Pushed 3388b1e and updated the PR description
  • Handling comment — Comment handling finished successfully

Was this response helpful? React with 👍 or 👎 to help us improve CodSpeedBot.

Apply the fix from codspeed.yml to every other `pull_request` workflow.
A stack reorder can push a head that conflicts with the old base, so
GitHub skips the `synchronize` run, and the retarget that follows is an
`edited` event. These commits then got no CI checks, benchmarks or QNS
runs at all.

Listen to `edited`, run jobs only when the base changed, and give other
edits their own concurrency group so that a title or description edit
can't cancel a run in progress. Jobs that run after skipped dependencies
(`!cancelled()`, `always()`) get the same condition.
@codspeed codspeed Bot changed the title ci(codspeed): run when a PR's base branch changes ci: run PR workflows when a PR's base branch changes Sep 24, 2026
@larseggert
larseggert marked this pull request as ready for review September 24, 2026 09:31
Copilot AI balanced review requested due to automatic review settings September 24, 2026 09:31

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

CodSpeed’s validation can accept a stale merge commit containing the current head but the previous base.

Get a fresh assessment by requesting another Copilot review.

Review effort: Balanced
Findings: 1 Medium severity

Open (1)
What changed in this PR

Updates PR workflows to rerun CI after base-branch changes while ignoring unrelated edits.

Changes:

  • Adds edited triggers and base-change job guards.
  • Isolates non-base edits from active concurrency groups.
  • Adds CodSpeed merge-commit validation and dependency gating.
File Description
.github/​workflows/​actionlint.yml Handles base edits for action linting.
.github/​workflows/​bench.yml Handles base edits for benchmarks.
.github/​workflows/​check.yml Handles base edits across CI jobs.
.github/​workflows/​check-mtu.yml Handles base edits for MTU checks.
.github/​workflows/​clippy.yml Handles base edits for Clippy.
.github/​workflows/​codspeed.yml Adds edit handling and merge validation.
.github/​workflows/​deny.yml Handles base edits for cargo-deny.
.github/​workflows/​dependency-review.yml Handles base edits for dependency review.
.github/​workflows/​firefox.yml Handles base edits for Gecko vendoring.
.github/​workflows/​fuzz-bench.yml Handles base edits for fuzz/bench checks.
.github/​workflows/​machete.yml Handles base edits for Machete.
.github/​workflows/​mutants-pr.yml Handles base edits for mutation testing.
.github/​workflows/​perfcompare.yml Handles base edits for performance comparisons.
.github/​workflows/​qns-pr.yml Handles base edits for QNS runs.
.github/​workflows/​readme.yml Handles base edits for README checks.
.github/​workflows/​rustfmt.yml Handles base edits for formatting checks.
.github/​workflows/​sanitize.yml Handles base edits for sanitizer runs.
.github/​workflows/​semver.yml Handles base edits for semver checks.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/codspeed.yml
@larseggert

Copy link
Copy Markdown
Collaborator

@codspeedbot check the review comments

@codspeed

codspeed Bot commented Sep 24, 2026 •

Copy link
Copy Markdown
Contributor Author

@codspeedbot check the review comments

@codspeedbot check the review comments

Copilot left one review comment, on the merge-commit check in codspeed.yml. It was right, and I pushed a fix as cacde7d.

The problem: a retarget doesn't change the PR head SHA. So the old check, "does the merge commit have the head as a parent?", still passed when the merge had been made against the old base. CodSpeed could then benchmark against the wrong base. The HEAD == head.sha shortcut also skipped the check entirely. A pull_request run always checks out a two-parent merge, so that shortcut had no legitimate use.

The new check in bench-matrix reads the merge commit's parents with git cat-file, which works in the shallow checkout. It requires:

  • Exactly two parents, with the second one equal to pull_request.head.sha.
  • The first parent to match pull_request.base.sha. If they differ, the check calls the compare API. It passes only if the first parent is a descendant of the event's base, which covers the base branch moving on after the event. A merge against the old base, before the retarget, fails either way. This includes the stack case where the old base is an ancestor of the new one.

The error message changed too. It used to say "Re-run this workflow", but a re-run reuses the same GITHUB_SHA, so it would fail again. It now says to push to the PR, or close and reopen it, to get a fresh merge commit.

Tested: I ran the step's script against a shallow clone of this PR's real refs/pull/4022/merge:

Case Result
Correct head and base passes
Older base on main (the base branch moved on) passes
Base that isn't an ancestor of the first parent fails
Wrong head fails

actionlint passes on the workflow, and zizmor --offline finds nothing. The new step hasn't run on GitHub yet. I also updated the PR description to cover the stricter check.

One risk: if pull_request.base.sha in the event payload were ever newer than the base GitHub used for the merge commit, the step would fail and CodSpeed wouldn't run for that commit until the next push. I don't know of that happening, but it's the case to look at if this step ever fails unexpectedly.

Summary
  • Warming up the performance wizard...
  • Evaluate Copilot review comment on codspeed.yml merge check — Valid: a retarget keeps the head SHA, so a stale merge against the old base passed the check
  • Apply fix and validate — Check now requires head as 2nd parent and the base (or a descendant) as 1st parent; tested against the real PR merge ref; actionlint and zizmor clean
  • Commit and push — Pushed cacde7d and updated the PR description
  • Handling comment — Comment handling finished successfully

Was this response helpful? React with 👍 or 👎 to help us improve CodSpeedBot.

A retarget leaves the head SHA unchanged, so a stale merge commit made
against the old base still contained the PR head. Require the merge commit
to have the PR head as second parent and the PR base (or a descendant of it,
if the base branch moved on) as first parent.
@github-actions

Copy link
Copy Markdown
Contributor

Client/server transfer results

Performance differences relative to e9c87f3.

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server Mean±σ Min–Max Median±MAD MiB/s±σ ΔMedian
google-neqo-cubic 69.7 ± 0.4 68.8 – 70.5 69.7 ± 0.4 459.1 ± 2.6 💔 +0.7 (+1.1%)

Table above only shows statistically significant changes. See all results below.

All results

Transfer of 33554432 bytes over loopback, min. 100 runs. All unit-less numbers are in milliseconds.

Client vs. server Mean±σ Min–Max Median±MAD MiB/s±σ ΔMedian
google-google 133.2 ± 0.5 132.0 – 134.3 133.2 ± 0.6 240.3 ± 1.0
google-neqo-cubic 69.7 ± 0.4 68.8 – 70.5 69.7 ± 0.4 459.1 ± 2.6 💔 +0.7 (+1.1%)
neqo-google-cubic 241.7 ± 36.0 182.3 – 432.1 238.7 ± 27.4 132.4 ± 19.7 +6.2 (+2.7%)
neqo-neqo-cubic 19.5 ± 0.1 19.2 – 19.8 19.5 ± 0.1 1639.7 ± 10.2 -0.0 (-0.1%)
neqo-neqo-cubic-nopacing 19.7 ± 0.1 19.4 – 19.9 19.7 ± 0.1 1624.1 ± 9.0 -0.2 (-0.8%)
neqo-neqo-newreno 19.4 ± 0.1 19.0 – 19.8 19.4 ± 0.1 1646.5 ± 12.0 -0.1 (-0.5%)
neqo-neqo-newreno-nopacing 19.2 ± 0.1 18.9 – 19.6 19.3 ± 0.1 1663.1 ± 9.8 +0.0 (+0.0%)
neqo-quiche-cubic 33.3 ± 0.3 32.7 – 34.0 33.3 ± 0.3 961.4 ± 9.0 -0.0 (-0.1%)
neqo-s2n-cubic 39.1 ± 0.2 38.7 – 39.5 39.1 ± 0.2 818.7 ± 3.8 +0.2 (+0.4%)
quiche-neqo-cubic 37.2 ± 0.4 36.5 – 38.1 37.0 ± 0.4 860.5 ± 9.7 +0.1 (+0.3%)
quiche-quiche 40.0 ± 0.3 39.4 – 40.7 40.0 ± 0.3 799.5 ± 5.4
s2n-neqo-cubic 112.2 ± 0.4 111.5 – 113.3 112.2 ± 0.4 285.1 ± 1.1 +0.0 (+0.0%)
s2n-s2n ⚠️ 167.3 ± 26.9 136.2 – 259.1 160.5 ± 1.0 191.3 ± 30.7

Download data for profiler.firefox.com or download performance comparison data.

@github-actions

Copy link
Copy Markdown
Contributor

Benchmark results

No significant performance differences relative to e9c87f3.

All results
transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1500
       time:   [51.269 ms 51.298 ms 51.327 ms]
       thrpt:  [1.9026 GiB/s 1.9037 GiB/s 1.9048 GiB/s]
Found 1 outliers among 100 measurements (1.00%)
1 (1.00%) high mild
transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1500
       time:   [51.056 ms 51.109 ms 51.162 ms]
       thrpt:  [1.9088 GiB/s 1.9107 GiB/s 1.9127 GiB/s]
Found 3 outliers among 100 measurements (3.00%)
3 (3.00%) low mild
transfer/1-conn/1-1b-resp (aka. HPS)/mtu-1500
       time:   [2.9657 ms 2.9668 ms 2.9679 ms]
       thrpt:  [336.94   B/s 337.06   B/s 337.18   B/s]
Found 9 outliers among 100 measurements (9.00%)
2 (2.00%) low mild
4 (4.00%) high mild
3 (3.00%) high severe
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1500
       time:   [67.579 ms 67.856 ms 68.136 ms]
       thrpt:  [146.76 Kelem/s 147.37 Kelem/s 147.98 Kelem/s]
Found 3 outliers among 100 measurements (3.00%)
2 (2.00%) low mild
1 (1.00%) high mild
streams-flow-controlled/walltime/1-streams/each-4194304-bytes
       time:   [10.627 ms 10.629 ms 10.631 ms]
       thrpt:  [376.24 MiB/s 376.32 MiB/s 376.40 MiB/s]
streams-flow-controlled/walltime/10-streams/each-1048576-bytes
       time:   [28.078 ms 28.087 ms 28.095 ms]
       thrpt:  [355.93 MiB/s 356.04 MiB/s 356.15 MiB/s]
streams/walltime/1-streams/each-1000-bytes
       time:   [132.38 µs 132.91 µs 133.57 µs]
       thrpt:  [7.1396 MiB/s 7.1756 MiB/s 7.2041 MiB/s]
Found 5 outliers among 100 measurements (5.00%)
5 (5.00%) high mild
streams/walltime/1000-streams/each-1-bytes
       time:   [3.8958 ms 3.9089 ms 3.9216 ms]
       thrpt:  [249.02 KiB/s 249.83 KiB/s 250.67 KiB/s]
streams/walltime/1000-streams/each-1000-bytes
       time:   [11.169 ms 11.173 ms 11.177 ms]
       thrpt:  [85.321 MiB/s 85.353 MiB/s 85.386 MiB/s]
transfer/walltime/pacing-false/same-seed
       time:   [2.0127 ms 2.0138 ms 2.0150 ms]
       thrpt:  [1.9386 GiB/s 1.9398 GiB/s 1.9408 GiB/s]
transfer/walltime/pacing-false/varying-seeds
       time:   [2.0531 ms 2.0543 ms 2.0558 ms]
       thrpt:  [1.9001 GiB/s 1.9015 GiB/s 1.9026 GiB/s]
transfer/walltime/pacing-true/same-seed
       time:   [2.0394 ms 2.0410 ms 2.0427 ms]
       thrpt:  [1.9123 GiB/s 1.9139 GiB/s 1.9154 GiB/s]
transfer/walltime/pacing-true/varying-seeds
       time:   [2.0922 ms 2.0947 ms 2.0976 ms]
       thrpt:  [1.8622 GiB/s 1.8648 GiB/s 1.8670 GiB/s]

Instructions per cycle

Criterion reported no significant timing changes.

All benchmarks
Benchmark IPC before IPC after ΔIPC
streams-flow-controlled/walltime/10-streams/each-1048576-bytes 3.17 3.11 -1.8%
transfer/1-conn/1-100mb-resp (aka. Download)/mtu-1500 3.17 3.13 -1.2%
transfer/1-conn/1-100mb-req (aka. Upload)/mtu-1500 3.14 3.16 +0.5%
transfer/walltime/pacing-false/varying-seeds 2.90 2.90 +0.2%
streams-flow-controlled/walltime/1-streams/each-4194304-bytes 2.96 2.97 +0.2%
transfer/walltime/pacing-true/same-seed 2.88 2.88 +0.2%
transfer/walltime/pacing-false/same-seed 2.89 2.89 -0.1%
streams/walltime/1000-streams/each-1000-bytes 3.06 3.06 +0.1%
streams/walltime/1-streams/each-1000-bytes 2.52 2.52 +0.1%
transfer/1-conn/10_000-parallel-1b-resp (aka. RPS)/mtu-1500 3.21 3.21 +0.1%
streams/walltime/1000-streams/each-1-bytes 3.25 3.25 +0.1%
transfer/walltime/pacing-true/varying-seeds 2.89 2.89 -0.0%
transfer/1-conn/1-1b-resp (aka. HPS)/mtu-1500 2.24 2.24 +0.0%
Profiles for profiler.firefox.com (62)

Download data for profiler.firefox.com or download performance comparison data.

@github-actions

Copy link
Copy Markdown
Contributor

Failed Interop Tests

QUIC Interop Runner, client vs. server, differences relative to main at e9c87f3.

neqo-pr as clientneqo-pr as server
neqo-pr vs. go-x-net: BP BA
neqo-pr vs. haproxy: 🚀M BP BA
neqo-pr vs. kwik: ⚠️Z
neqo-pr vs. lsquic: L1 C1
neqo-pr vs. msquic: Z A L1 C1
neqo-pr vs. mvfst: A
neqo-pr vs. neqo: Z A
neqo-pr vs. nginx: BP BA
neqo-pr vs. ngtcp2: Z ⚠️L1 C1 CM
neqo-pr vs. picoquic: Z A
neqo-pr vs. quic-go: A
neqo-pr vs. quiche: BP BA
neqo-pr vs. s2n-quic: CM
neqo-pr vs. tquic: S BP BA
neqo-pr vs. xquic: S R Z A L1 C1
aioquic vs. neqo-pr: CM
go-x-net vs. neqo-pr: CM
kwik vs. neqo-pr: BP BA CM
msquic vs. neqo-pr: CM
mvfst vs. neqo-pr: Z L1 C1 CM
neqo vs. neqo-pr: Z A
openssl vs. neqo-pr: LR M A CM
quic-go vs. neqo-pr: CM
quiche vs. neqo-pr: CM
quinn vs. neqo-pr: V2 CM
s2n-quic vs. neqo-pr: CM
tquic vs. neqo-pr: run cancelled after 20 min
xquic vs. neqo-pr: M CM
All results

Succeeded Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

Unsupported Interop Tests

QUIC Interop Runner, client vs. server

neqo-pr as client

neqo-pr as server

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟢 Approval recommended

Base-edit filtering, concurrency isolation, and dependent-job gating are consistently applied across the affected workflows.

Review effort: Balanced
Findings: None

Resolved since last review (1)

@larseggert
larseggert merged commit 283c79d into main Sep 24, 2026
403 of 407 checks passed
@larseggert
larseggert deleted the codspeed/setup-base-change-trigger branch September 24, 2026 10:41
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.

3 participants