Skip to content

fix(ci): report independent Nightly failures together - #7667

Merged
moq-bot[bot] merged 10 commits into
mainfrom
quest/m0/nightly/README
Nov 5, 2026
Merged

moq-bot[bot] merged 10 commits into
mainfrom
quest/m0/nightly/README

Conversation

@kixelated

@kixelated kixelated commented Nov 3, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

Nightly's first failed feature check hides every later check. Early audio benchmark failures also skip the later benchmarks. Inside Platform's Rust step, a failed compile hides every platform test: on 2026-11-05, run 42050683248 stopped just rs macos on an E0277 compile error and never ran just rs macos-test. So each scheduled run reveals only the next failure.

Approach

  • Run independent checks throughout just rs features and its nested recipes (including main's new crypto-key), collect failed commands, and fail each suite after reporting them. Share the runner with the existing benchmark groups and announce each command.
  • Continue Audio quality's independent checks after a failure once setup succeeds. Keep step failures visible, so the job finishes red; cancellation still stops it.
  • Split each Platform job's Rust compile and tests step into Rust compile and Rust tests, and run just rs macos-test and just rs windows-test through the shared runner. Step-level continuation for Swift, OBS, and installer checks already landed in moq-dev/moq#7666; run 42050683248 confirms they ran and passed after macOS Rust failed.
  • Rewrite the quest to its remaining own work: a green scheduled Nightly on main, after its children.

Impact

  • Public API: none.
  • Wire: none.
  • CI: later independent checks run after a failure; a partially failed run still fails. Platform's Rust step names change to Rust compile and Rust tests.

Alternatives

No continue-on-error, which could turn the job green. No extra matrix runners, which would split builds and caches. Existing benchmark groups already collect failures. Dependent setup, packaging, and publishing stay sequential.

Choices made without asking

  • The feature checks keep their commands, arguments, ordering, and build environment. Invalid feature shapes are still refused before their checks, and dependent work such as generating MIR before inspecting it still stops when its prerequisite fails. Audio checks require successful setup.
  • Merging main: took main's moq-tokio feature set (crypto providers moved to rind in moq-dev/moq#7873) and main's coroutine list without moq-net's old allowances, wrapped in the runner; refreshed the tooling test stub to match.
  • Platform continuation extends into the Rust step (compile vs. tests, and each platform test) because that is where the latest scheduled run hid checks; Platform's other steps were already independent on main.
  • windows-test becomes a bash shebang recipe. just runs those on Windows through Git Bash's cygpath; Platform runs only on Nightly, release pushes, and dispatch, so the first Windows run of it is the next scheduled Nightly.

Validation

On head e508079dd9, quest gate just ci origin/main passed every selected module: Rust compile/lint and all 11,800 tests (138 skipped), workflow lint (actionlint, zizmor) and tooling tests, Biome, Markdown, shell, formatting, and quest validation. The same run passed earlier on c40e4d0fbb, before the conflict-free main merge.

The Nightly tooling suite passes all 20 tests. It covers early, middle, and final failures in just rs features; nested compiler failures across six packages (including crypto-key); media dependency-contract failures followed by later checks; and a first-test failure in just rs macos-test and just rs windows-test that still runs the rest. The Windows recipe path itself is not exercised before the next scheduled Nightly, since Platform does not run on PRs.

Review

mechanical fix by codex / Codex: Merged base; re·solved rs/justfile conflicts preserving base kio coverage and PR failure aggregation; passed python3 sh/gh/nightly.test.py (20 tests), just --summary, just --dry-run rs windows-test, just --dry-run rs macos-test, bash -n sh/checks.sh sh/gh/nightly.sh sh/rs/net-features.sh sh/rs/media-features.sh sh/rs/tokio-features.sh, shellcheck sh/checks.sh sh/gh/nightly.sh sh/rs/net-features.sh sh/rs/media-features.sh sh/rs/tokio-features.sh, and git diff --cached --check. (head 050c935)

quest review --base origin/main: Codex / GPT-6.1 Sol (gpt-6.1-sol), medium effort, session 01a1ad62-7c03-7512-97b9-3a4f8c6abe3e, round 1. Reviewed c40e4d0fbb against c0888cfefb: no findings. It covers head e508079dd9 under the conflict-free base merge exemption: its merge-base is still c0888cf, and git diff origin/main...e508079dd9 is byte-identical to git diff c0888cfefb...c40e4d0fbb. No new round.

Decisions

Maintainer, 2026-11-05 (/quest-unblock): does this PR wait for a green scheduled Nightly on main? A scheduled run can include this PR's changes only after it lands.

  • ✅ Drop the wait and mark the PR ready. The quest README keeps the green-run check as its remaining work, after its Required children (including those moq-dev/moq#7975 adds). Latest inspected run: 42050683248 (2026-11-05, 419b799c75), red.
  • Keep the PR a draft until a green scheduled run, which cannot happen before it lands.

Follow-ups

Run 42050683248 also failed Firefox media, the browser benchmark smoke, Moxygen IETF conformance, the Rust shared and supplemental bench thresholds, relay session benchmarks, and the fmp4 fuzz target, alongside failures already owned: the macOS E0277 in rs/moq-audio/src/capture.rs (macOS), ingest fuzz, OBS and resume-model (moq-dev/moq#7975's new children), and bench thresholds (bench CI). Recommend a /quest-plan triage of the unowned ones (Firefox media, browser bench smoke, Moxygen conformance, fmp4 fuzz) against current source.

(Written by Claude Opus 5.5)

kixelated and others added 6 commits November 2, 2026 21:16
Quest-Claim: b9898834c4d549d2
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
Co-Authored-By: GPT-6.1 Sol <noreply@openai.com>
@kixelated

Copy link
Copy Markdown
Collaborator Author

Design change: failure collection now reaches the nested feature checks through one shared runner, also used by the benchmark groups. It announces commands before running them and reports accumulated failures at the end. Invalid feature-shape prerequisites still refuse the shape before its dependent checks; the existing net dependency-refusal test stays unchanged and passes. Platform continuation remains Waiting under the task's explicit hakari ownership restriction.

(Written by GPT-6.1 Sol)

kixelated and others added 3 commits November 5, 2026 12:16
# Conflicts:
#	quest/m0/nightly/README.md
#	rs/justfile
#	sh/rs/tokio-features.sh
Split each Platform job's Rust step into compile and test steps, and run
the macOS and Windows test recipes through the shared check runner, so a
compile error or one failing test no longer hides the remaining tests.
Refresh the Nightly tooling stub for main's coroutine and crypto changes.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Nov 5, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 2 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used all 4 included reviews currently available.

Learn how review limits work.

Review configuration:

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 228c79a4-769c-4fbb-9166-7d674268d688
Commits

Reviewing files that changed from the base of the PR and between 6b00852 and 050c935.

Files selected for processing: 10

  • .github/workflows/nightly.yml
  • .github/workflows/platform.yml
  • quest/m0/nightly/README.md
  • rs/justfile
  • sh/checks.sh
  • sh/gh/nightly.sh
  • sh/gh/nightly.test.py
  • sh/rs/media-features.sh
  • sh/rs/net-features.sh
  • sh/rs/tokio-features.sh
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@kixelated kixelated left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

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

Automated review by review (OpenAI)

Reviewed head e508079 against base c0888cf.

Findings: No actionable defects found in the full 10-file diff. Checked failure accumulation and propagation, nested feature checks, platform compile/test separation, setup/cancellation conditions, and the added regression coverage. No earlier published review findings were present.

Direction: Keep the shared failure collector and independent-step approach. Verify actual macOS/Windows execution in the first scheduled Nightly after landing.

Verification limits: GitHub-only static review; no local builds or tests run. The head's Check run is still in progress. Platform execution remains unverified here.

@pullfrog pullfrog Bot 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.

✅ No new issues found.

Reviewed changes — the full 10-file diff at e508079dd9 against main (c0888cfefb), including the conflict-free main merge:

  • Shared failure runner — new sh/checks.sh whose run records failures and finish prints one checks: failed: line per failure before returning non-zero; sh/gh/nightly.sh drops its private copy and now delegates to it.
  • Feature matrix — just rs features, coroutines, crypto-key, quic-features wrap every independent command in run and end with finish; media's require_crate/forbid_crate accumulate instead of exiting, and tokio's driver_dependencies becomes a run-wrapped function.
  • Platform recipes — macos-test and windows-test became bash shebang recipes using the runner, with windows-test moving off plain recipe lines.
  • Nightly audio job — Rust cache gains id: setup and each check now carries if: ${{ !cancelled() && steps.setup.outcome == 'success' }}.
  • Platform workflow — each job's single Rust step splits into Rust compile and Rust tests, both under shell: bash on Windows, so a compile failure no longer hides the test suite.
  • Regression coverage — FeaturesTest in sh/gh/nightly.test.py stubs just/cargo on PATH and asserts that early, middle, and final failures still let every later command run, including nested compiler failures across six packages and media contract leaks.
  • Quest — quest/m0/nightly/README.md drops the now-completed multi-step bullet, leaving the green scheduled run as its own work.

I verified the load-bearing assumptions rather than taking them on faith: platform.yml really does carry shell: bash on both new Windows steps, steps.setup is unique per job, no caller parses the old nightly: prefix, and just's documented Windows behavior translates /usr/bin/env through cygpath for shebang recipes, so just rs windows-test has a plausible path on the Windows runner. The reverted net-features contract checks (commit 5f357f8) are deliberate — the comment there explains why a green test run must not follow an async-enabled dependency graph.

ℹ️ The audio job's setup is the Rust cache, so a cache failure skips every audio check

The setup guard mirrors platform.yml, where steps.setup is a synthetic "Setup complete" step that only runs after toolchain and generator install, so the guard is load-bearing. In the audio job setup is ./.github/actions/rust-cache, and skipping a cache download is not a prerequisite for these checks — the job's own comment budgets the 90 minutes to include the relay, CLI, and shaper "built from source". A transient R2 or credential failure in that step therefore turns a night into "cache failed, nothing else ran" rather than reporting the audio results, which is the outcome this PR is trying to avoid. Push-to-talk alone kept the bare !cancelled(), so the guard is also not uniform across the job.

No change requested — this is a semantics note, not a defect. Flagging it so the next cache outage is not read as "every audio check passed".

Technical details
# Audio job's setup guard gates on cache availability, not tool readiness

## Affected sites
- `.github/workflows/nightly.yml:469-469` — `id: setup` added to the `Rust cache` step.
- `.github/workflows/nightly.yml:479-525` — six checks plus the artifact upload require `steps.setup.outcome == 'success'`.
- `.github/workflows/nightly.yml:506` — `Push-to-talk` keeps `if: ${{ !cancelled() }}`.
- `.github/workflows/platform.yml:106-108, 160-163` — the synthetic `Setup complete` step the pattern was borrowed from, where the guard covers real tool and generator installs.

## Required outcome
- None if the guard is intended to mean "no audio checks without the cache".
- If it is intended as "the harness prerequisites are ready", the nix action and cache are both upstream of every check, so `!cancelled()` alone preserves the same behavior for a real setup failure and keeps reporting after a cache-only failure.

## Open questions for the human
- Is a cache outage meant to suppress the audio checks, or should those steps still run from a cold build within the existing 90-minute budget?

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

@kixelated
kixelated added this pull request to the merge queue Nov 5, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Nov 5, 2026
@moq-bot

moq-bot Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

quest land watch: the merge queue removed this pull request at e508079 because it conflicts with main (merge_conflict).

The land fixer works on it in the background, and the watcher re-enqueues it at the back of the queue once it is fixed or judged flaky, or hands it back here with what it needs.

(written by quest land watch)

@moq-bot
moq-bot Bot enabled auto-merge November 5, 2026 22:19
@moq-bot

moq-bot Bot commented Nov 5, 2026

Copy link
Copy Markdown
Contributor

quest land watch: armed auto-merge on this pull request at 050c935, so it joins the back of the merge queue once its required checks pass, with the land fixer's fix (codex / Codex): Merged base; re·solved rs/justfile conflicts preserving base kio coverage and PR failure aggregation; passed python3 sh/gh/nightly.test.py (20 tests), just --summary, just --dry-run rs windows-test, just --dry-run rs macos-test, bash -n sh/checks.sh sh/gh/nightly.sh sh/rs/net-features.sh sh/rs/media-features.sh sh/rs/tokio-features.sh, shellcheck sh/checks.sh sh/gh/nightly.sh sh/rs/net-features.sh sh/rs/media-features.sh sh/rs/tokio-features.sh, and git diff --cached --check..

(written by quest land watch)

@moq-bot
moq-bot Bot added this pull request to the merge queue Nov 5, 2026

@pullfrog pullfrog Bot 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.

✅ No new issues found.

Reviewed changes — the delta since the prior pullfrog review at e508079dd9:

  • Merged base and restored kio coverage — merge commit 050c9358 brings main into the branch and adds -p kio back to the windows-test and macos-test recipes in rs/justfile, matching the command lists main already runs. The PR's own patch touched no other file in this delta; main's merged commits also updated sh/gh/nightly.sh (bench list: adds the msf catalog bench, renames contributions → include) and quest/m0/nightly/README.md (drops the deleted ingest-fuzz child), both merging cleanly.

The prior informational note about the audio job's setup guard still stands, unchanged by this delta.

Pullfrog  | View workflow run | Using deepseek-v4.1-flash-1017 (free via Pullfrog for OSS) | 𝕏

Merged via the queue into main with commit bec817f Nov 5, 2026
9 of 10 checks passed
@moq-bot
moq-bot Bot deleted the quest/m0/nightly/README branch November 5, 2026 22:53
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.

1 participant