Skip to content

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

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

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

Conversation

@leynos

@leynos leynos commented Jul 8, 2026

Copy link
Copy Markdown
Owner

Summary

This change standardizes catnap on the released Whitaker Dylint suite as
part of the estate-wide rollout (see leynos/netsuke#410). The repository
already ran Whitaker in its make lint gate from a pinned git revision of
the installer; continuous integration now installs the published
whitaker-installer 0.2.5 from crates.io via cargo binstall, with a
source-build fallback for runners without binstall. The cache keys on the
installer version and stores only the installer binary and the binstall
cache, matching the pattern used across the estate. The lint target's
help text now mentions Whitaker so make help reflects the gate's full
scope.

The suite reports no findings on this codebase, so no code changes were
required and no dylint.toml exclusions were added.

Review walkthrough

  • .github/workflows/ci.yml
    replaces the git-revision installer pin with
    WHITAKER_INSTALLER_VERSION: '0.2.5', narrows the cache to the installer
    binary and the binstall cache keyed on that version, and installs via
    cargo binstall with a cargo install --locked fallback.
  • Makefile
    updates the lint target's help text to mention the Whitaker suite,
    which the recipe already runs after Clippy.

Validation

  • make check-fmt — passed.
  • make lintcargo doc, Clippy, and the Whitaker suite
    (whitaker --all -- --all-targets --all-features with
    RUSTFLAGS="-D warnings") all passed with no findings.
  • make typecheck — passed.
  • make test — 25 tests run, 25 passed.
  • make markdownlint — 13 files linted, 0 errors.
  • make nixie — all Mermaid diagrams validated.
  • mbake validate Makefile — valid syntax.

Standardize catnap on the released Whitaker suite as part of the
estate-wide rollout (see leynos/netsuke#410). The repository already
ran Whitaker from a pinned git revision of the installer; this change
moves CI to the published whitaker-installer 0.2.5 from crates.io,
installed via cargo binstall with a source-build fallback for runners
without binstall. The cache now keys on the installer version and
stores only the installer binary and the binstall cache, matching the
pattern used across the estate.

The Makefile lint target already ran the suite; its help text now
mentions Whitaker so `make help` reflects the gate's full scope.

The suite reports no findings on this codebase, so no code changes
were required.

@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

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review

Walkthrough

The CI workflow replaces git-revision-based Whitaker installer setup with a fixed version variable, narrows caching to the installer binary and Cargo-binstall cache, and changes install logic to try cargo binstall before falling back to cargo install. The Makefile lint description is updated to mention the Whitaker Dylint suite.

Changes

Whitaker installer CI update

Layer / File(s) Summary
Fixed installer version configuration
.github/workflows/ci.yml
WHITAKER_INSTALLER_REV is replaced with a fixed WHITAKER_INSTALLER_VERSION: '0.2.5' environment variable.
Caching and install fallback logic
.github/workflows/ci.yml
Caching narrows to the whitaker-installer binary and Cargo-binstall cache keyed by OS/arch and version; install steps now try cargo binstall (locked, versioned) first, falling back to cargo install from crates.io, replacing the prior revision-based cache-miss install.
Lint target description update
Makefile
The lint target's help text now mentions "Clippy and the Whitaker Dylint suite with warnings denied" instead of just Clippy.

Sequence Diagram(s)

sequenceDiagram
  participant CIWorkflow
  participant Cache
  participant CargoBinstall
  participant CargoInstall

  CIWorkflow->>Cache: Check cached whitaker-installer binary
  alt PATH missing whitaker-installer
    CIWorkflow->>CargoBinstall: Attempt install (locked, versioned)
    alt binstall unavailable
      CIWorkflow->>CargoInstall: Install from crates.io (locked, versioned)
    end
  end
  CIWorkflow->>CIWorkflow: Run whitaker-installer --cranelift
Loading

Possibly related PRs

  • leynos/weaver#107: Overlaps directly with this PR's .github/workflows/ci.yml changes to WHITAKER_INSTALLER_VERSION and the conditional whitaker-installer installation/caching logic.

Suggested labels: Roadmap

Poem

A rabbit hops past git revisions old,
Pins a version, crisp and bold.

Cache trimmed down to just one place.
Lint now guards with Dylint's eye —
🐇 Ship it clean, and wave goodbye!

Caution

Pre-merge checks failed

Please resolve all errors before merging. Addressing warnings is optional.

  • Ignore

❌ Failed checks (1 error, 2 warnings)

Check name Status Explanation Resolution
Testing (Overall) ❌ Error The PR changes CI installer selection and fallback logic, but adds no test or scripted check that would fail if the pin, fallback, or --cranelift call were removed. Add a testable script or validation job that exercises the binstall path, the cargo-install fallback, and the Whitaker invocation, then wire it into CI.
Title check ⚠️ Warning The title matches the Whitaker lint and CI changes but omits the rollout reference required by the brief. Add the required roadmap or issue reference, for example leynos/netsuke#410, to the title.
Testing (Unit And Behavioural) ⚠️ Warning The PR only changes CI/Makefile text and adds no unit, behavioural, or workflow-level tests for the new Whitaker install path. Add a workflow-lint or integration check for the Whitaker install step, and cover any user-visible Makefile help output if it matters.
✅ Passed checks (17 passed)
Check name Status Explanation
Description check ✅ Passed The description clearly matches the Whitaker CI and lint-gate changes.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
User-Facing Documentation ✅ Passed The user guide already documents make lint as running rustdoc, Clippy, and Whitaker, and this PR only changes CI/install mechanics plus Makefile help text.
Developer Documentation ✅ Passed Accept it: docs already cover Whitaker in the developer and user guides, and this PR only hardens CI installer handling without changing documented boundaries.
Module-Level Documentation ✅ Passed Only .github/workflows/ci.yml changed; no modules were added or edited, so the module-docstring rule is not implicated.
Testing (Property / Proof) ✅ Passed Do not add property or proof tests; the diff only hardens CI installer setup, with no new invariant, state transition, or proof assumption.
Testing (Compile-Time / Ui) ✅ Passed Mark this pass: the diff only alters CI provisioning and a Makefile help comment, with no new Rust/TS compile-time path or UI surface needing trybuild or snapshot coverage.
Unit Architecture ✅ Passed PASS: The PR only adjusts CI orchestration in .github/workflows/ci.yml; no application units, dependencies, or query/command boundaries were changed.
Domain Architecture ✅ Passed The patch only changes CI workflow infrastructure; no domain, adapter, repository, transport, or persistence code is touched.
Observability ✅ Passed No production observability gap exists: the patch only alters CI installer provisioning, and the lone runtime-facing change is a Makefile help comment.
Security And Privacy ✅ Passed The diff only hard-codes a Whitaker installer version and tweaks lint help text; it adds no secrets, wider permissions, auth gaps, or unsafe data handling.
Performance And Resource Use ✅ Passed Only CI install logic and a Makefile help string changed; the new shell branch is bounded and cached, with no hot-path or runtime resource regression.
Concurrency And State ✅ Passed PASS: the diff only adjusts CI installer caching and a Makefile help-text line; it introduces no shared mutable state, locks, async tasks, or ordering-sensitive code.
Architectural Complexity And Maintainability ✅ Passed Introduce no new abstractions or layers; only CI install plumbing and Makefile help text changed, keeping complexity flat.
Rust Compiler Lint Integrity ✅ Passed PASS: The PR only changes .github/workflows/ci.yml; no Rust files, lint suppressions, or clone-related edits appear in the diff.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 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.

leynos added 2 commits July 8, 2026 12:47
This project builds with the Cranelift debug backend, so the Dylint
driver's pinned nightly needs `rustc-codegen-cranelift` installed.
Restore the installer's `--cranelift` flag, which the standardized
install step had dropped.
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.
@coderabbitai coderabbitai Bot added the Roadmap label Jul 8, 2026
@leynos
leynos merged commit 77419e9 into main Jul 9, 2026
6 checks passed
@leynos
leynos deleted the adopt-whitaker branch July 9, 2026 18:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant