Skip to content

chore(lint): make tool warnings fatal - #6145

Merged
kixelated merged 8 commits into
mainfrom
claude/non-null-assertion-warnings-8f0f61
Oct 22, 2026
Merged

kixelated merged 8 commits into
mainfrom
claude/non-null-assertion-warnings-8f0f61

Conversation

@kixelated

@kixelated kixelated commented Oct 21, 2026 •

Copy link
Copy Markdown
Collaborator

Several tools in just check printed warnings and still exited 0, so the warnings piled up. This PR fixes each one at the source and makes it fatal where the tool allows.

  • Biome: its recommended rules default to warn, and biome check exits 0 on warnings. Fixed the 15 that had crept into js/net (13 non-null assertions, one catch-parameter reassignment, one optional chain). sh/js/workspace.py now passes --error-on-warnings.
  • clippy.toml: the wasm32 clippy lane builds tokio without time, so the tokio::time::* entries in rs/moq-mux and rs/moq-ffi didn't resolve (10 warnings). Marked those entries allow-invalid. These are config diagnostics, not lints, so neither -D warnings nor build.warnings = "deny" can gate them. A regression here prints again but won't fail.
  • Sphinx: moq/json.py annotated tracks with bare TrackProducer / TrackConsumer, which match three documented classes each, so the doc links were ambiguous. They are now qualified by module, as flate.py already does. just py docs now builds with -W --keep-going, and Read the Docs with fail_on_warning.
  • OBS (C++): the source test #includes moq-source.cpp, so GCC treated it as a header and warned (-Wsubobject-linkage) that moq_source holds anonymous-namespace types. moq_source moved into the anonymous namespace, since only that TU uses it and OBS sees it as void *. sh/obs/compile.sh and sh/obs/unit.sh now build with -Werror.
  • Vite: every vite.config.ts now uses import.meta.dirname and explicit .ts extensions, which Vite's upcoming native config loader requires. Vite has no switch to make this notice fatal.
  • sh/js/workspace.test.py: moq-dev/moq#6086 calls just.chmod before the stub is written, so test_dispatcher_passes_only_js_impact_paths fails on main. That fix is in the merge commit, which also resolves the conflict on the Biome expectations.

Left alone on purpose: uniffi's "old-style --config" notice (maturin passes uniffi.toml explicitly; the file only holds a Kotlin rename, which the Kotlin build applies), the Dart 0.0.0-dev version hint, and Vite's chunk-size advisories.

Public API / wire impact: none. The Python change only touches annotations.

Checks: MOQ_STRICT=1 just check passes on the final head. MOQ_STRICT=1 just check --all passed on the Biome/clippy commit, before the Sphinx/OBS/Vite one. Also ran sh/obs/unit.sh (with -Werror), just obs compile, and the wasm32 clippy lane. vite build loads every changed config.

(Written by Opus 5.5)

🤖 Generated with Claude Code

kixelated and others added 4 commits October 20, 2026 17:48
Biome's recommended rules default to warn and `biome check` exits 0 on
warnings, so 15 crept into js/net. Fix them and pass --error-on-warnings.

The wasm32 clippy lane builds tokio without `time`, so the tokio::time
entries in moq-mux and moq-ffi clippy.toml did not resolve. Mark them
allow-invalid.

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

Sphinx: json.py annotated tracks with bare TrackProducer/TrackConsumer,
which match three documented classes. Qualify them by module like flate.py,
and build with -W --keep-going locally and fail_on_warning on Read the Docs.

OBS: the source test includes moq-source.cpp, so GCC treated it as a header
and flagged moq_source holding anonymous-namespace types. Move moq_source
into the namespace, and compile the plugin and tests with -Werror.

Vite: use import.meta.dirname and explicit .ts extensions in every config,
which the native config loader requires.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…tion-warnings-8f0f61

# Conflicts:
#	sh/js/workspace.test.py
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 21, 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 9 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
  • Configuration used: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 0e76307b-3f28-40f4-ab41-6588040d9f7e
📥 Commits

Reviewing files that changed from the base of the PR and between e76b4b3 and 372805a.

📒 Files selected for processing: 22
  • .readthedocs.yaml
  • cpp/obs/src/moq-source.cpp
  • demo/boy/vite.config.ts
  • demo/web/vite.config.ts
  • js/moq-boy/vite.config.ts
  • js/net/bench/refresh.ts
  • js/net/src/connection/connect.ts
  • js/net/src/lite/refresh.test.ts
  • js/net/src/priority.test.ts
  • js/net/src/track.ts
  • js/publish/vite.config.ts
  • js/watch/vite.config.ts
  • py/justfile
  • py/moq-rs/moq/json.py
  • rs/moq-ffi/clippy.toml
  • rs/moq-mux/clippy.toml
  • sh/js/workspace.py
  • sh/js/workspace.test.py
  • sh/obs/compile.sh
  • sh/obs/unit.sh
  • test/audio-quality/clients/js/vite.config.ts
  • test/interop/clients/js/vite.config.ts
  • 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

Comment @coderabbitai help to get the list of available commands.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-21T23:49:07.133555Z 372805a New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

kixelated and others added 3 commits October 21, 2026 09:58
@moq/qmux landed alongside the doc-comment check in the package build,
so its build failed on the undocumented WebTransport members.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
# Conflicts:
#	js/qmux/src/error.ts
#	js/qmux/src/session.ts
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merged origin/main (now at a42689d). With warnings fatal, the full strict check surfaced one main-side failure: @moq/qmux's build failed the doc-comment check, a semantic conflict between #6163 and #6124. I fixed it, then main landed the same fix in #6191, so the second merge keeps main's version. The net PR diff is unchanged from the Codex-reviewed a1c7908.

The disallowed-methods "does not refer to a reachable function" warnings seen on main's merge-group runs are already covered by this PR's allow-invalid entries in rs/moq-ffi/clippy.toml and rs/moq-mux/clippy.toml. No other clippy.toml warns.

Checks: MOQ_STRICT=1 just check --all passes on 0a9771c. The only remaining tool notices are the ones the description leaves alone on purpose (uniffi old-style config, Vite chunk-size advisories).

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 21, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Oct 21, 2026
…tion-warnings-8f0f61

# Conflicts:
#	js/net/src/track.ts
@kixelated

Copy link
Copy Markdown
Collaborator Author

Merged origin/main (e76b4b3) after the merge queue dropped this as conflicting. The only conflict was in js/net/src/track.ts: main's moq-dev/moq#6143 threaded run.error through the pending drop runs, so the resolution keeps main's lines and reapplies this PR's dropped?.kind optional chain. Main introduced no new warnings that this PR now makes fatal: Biome with --error-on-warnings is clean across js bench/browser test doc demo, and main touched nothing under py/ docs, cpp/obs, the Vite configs, or the two clippy.toml files.

Checks on 372805a: just check passes through py (Sphinx -W), obs_compile (-Werror), and obs. nix flake check fails locally only on the runner-image build (unshare: write failed /proc/self/uid_map, the user-namespace limit), so I ran the remaining steps by hand: markdown, shell, taplo, justfile fmt, just gh check, JS tests, Python tests, and Rust tests all pass. One Rust test, moq-cli::integration export::redundant_importers_switch_through_bufferbloat_on_lite_07, failed in the full parallel run and passed alone; this PR changes no Rust source, so it looks load-sensitive.

The PR diff itself is unchanged from the Codex-reviewed 0a9771c, so the merge didn't get a fresh review.

(Written by Claude Opus 5.5)

@kixelated
kixelated added this pull request to the merge queue Oct 21, 2026
Merged via the queue into main with commit bd1d7ad Oct 22, 2026
9 checks passed
@kixelated
kixelated deleted the claude/non-null-assertion-warnings-8f0f61 branch October 22, 2026 04:09
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