Skip to content

Adopt the Whitaker Dylint suite in the lint gate and CI - #26

Merged
leynos merged 2 commits into
mainfrom
adopt-whitaker
Jul 9, 2026
Merged

Adopt the Whitaker Dylint suite in the lint gate and CI#26
leynos merged 2 commits into
mainfrom
adopt-whitaker

Conversation

@leynos

@leynos leynos commented Jul 8, 2026

Copy link
Copy Markdown
Owner

Summary

This pull request adopts the Whitaker Dylint suite (v0.2.5) as part of the estate-wide rollout, following the reference adoption in leynos/netsuke#410.

The Makefile previously invoked whitaker only when it happened to be on the PATH, silently skipping the suite otherwise. The lint gate now treats the suite as mandatory: a WHITAKER ?= whitaker tool variable sits alongside the other tool variables, and the lint recipe runs the suite after Clippy with warnings denied, reusing the repository's existing RUST_FLAGS and CARGO_FLAGS conventions. CI provisions the suite before the lint step by caching and installing the pinned whitaker-installer binary, with a build-from-source fallback for runners that lack cargo binstall. The repository does not use the Cranelift backend, so the default installer invocation suffices.

The suite reported no findings against this codebase, so no code fixes or dylint.toml exclusions were required.

Review walkthrough

  • Makefile: adds the WHITAKER tool variable, replaces the skip-if-absent invocation with a mandatory run after Clippy, and updates the lint help text to mention Whitaker.
  • .github/workflows/ci.yml: adds the WHITAKER_INSTALLER_VERSION job environment variable, a cache step for the installer binary and the cargo-binstall cache, and an install step (binstall with a crates.io build fallback) that runs whitaker-installer before make lint.

Validation

All gates were run from the repository root with the stray WHITAKER environment variable unset (env -u WHITAKER):

  • make check-fmt — pass
  • make lint — pass (cargo doc, Clippy, and the Whitaker suite all clean)
  • make typecheck — pass
  • make test — pass (18/18 via nextest; doc tests clean)
  • make markdownlint — pass (27 files, 0 errors)
  • make nixie — pass
  • make assets-check and make manifest-check — pass
  • whitaker --all -- --all-targets --all-features with RUSTFLAGS="-D warnings" — exit 0, no findings

The Python tests under tests/ have no declared pytest dependency in pyproject.toml (a pre-existing condition unrelated to this change), so they were not exercised.

Harden the lint target so the Whitaker Dylint suite is a mandatory
part of `make lint` rather than a soft, skip-if-absent extra. The
recipe now uses a `WHITAKER ?= whitaker` tool variable alongside the
other tool variables and reuses the existing `RUST_FLAGS` and
`CARGO_FLAGS` conventions, so warnings are denied across all targets
and features.

Wire the suite into CI before the lint step: cache the pinned
`whitaker-installer` binary and the cargo-binstall download cache,
install it via `cargo binstall` with a build-from-source fallback for
runners without binstall, and run `whitaker-installer` to provision
the suite. The repository does not use the Cranelift backend, so the
default installer invocation suffices.

The suite (v0.2.5) reports no findings on this codebase, so no code
changes were required. Part of the estate-wide Whitaker rollout; see
leynos/netsuke#410 for the reference adoption.

@sourcery-ai sourcery-ai Bot 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.

Sorry @leynos, you have reached your weekly rate limit of 500000 diff characters.

Please try again later or upgrade to continue using Sourcery

@coderabbitai

coderabbitai Bot commented Jul 8, 2026

Copy link
Copy Markdown

Warning

Review limit reached

You’ve reached a temporary PR review limit under our Fair Usage Limits Policy.

Your recent review volume is higher than typical usage, so adaptive limits are currently applied.

Next review available in: 59 minutes

Your organization has reached its usage spending cap. Adjust your spending cap in the billing tab.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 7b1e531d-eae1-456a-96e2-bf3820fff660

📥 Commits

Reviewing files that changed from the base of the PR and between fa89f71 and 9a47e14.

📒 Files selected for processing (2)
  • .github/workflows/ci.yml
  • Makefile
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch adopt-whitaker

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

codescene-access[bot]

This comment was marked as outdated.

@chatgpt-codex-connector chatgpt-codex-connector Bot 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 59e6aadb72

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread .github/workflows/ci.yml
Replace inline `${{ env.WHITAKER_INSTALLER_VERSION }}` interpolation in the
run block with the plain shell variable `"${WHITAKER_INSTALLER_VERSION}"`;
the job-level `env:` already exports it, and zizmor flags run-block template
interpolation as a template-injection hazard. Add `--locked` to the
cargo-binstall invocation so that binstall's compile fallback resolves
dependencies from the published lockfile, keeping fallback builds
reproducible.
@leynos
leynos merged commit 32e3d5d into main Jul 9, 2026
6 checks passed
@leynos
leynos deleted the adopt-whitaker branch July 9, 2026 18:15
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