Skip to content

Harden the Whitaker CI install step and bump the suite to 0.2.5#141

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

Harden the Whitaker CI install step and bump the suite to 0.2.5#141
leynos merged 2 commits into
mainfrom
adopt-whitaker

Conversation

@leynos

@leynos leynos commented Jul 10, 2026

Copy link
Copy Markdown
Owner

Summary

This change aligns corbusier's existing Whitaker Dylint integration with the
estate-wide rollout pattern established in leynos/netsuke#410. The repository
already runs the suite in its make lint target and CI, but the install step
predated the hardened pattern and pinned an older suite.

  • Bumps WHITAKER_INSTALLER_VERSION from 0.2.1 to 0.2.5.
  • References the version via a plain shell variable inside the run block
    instead of inlining a GitHub Actions expression, which zizmor flags as
    template injection.
  • Passes --locked to cargo binstall so the published lockfile is honoured.
  • Adds a cargo install --locked fallback for runners where cargo-binstall
    is unavailable; several repositories in the estate pin setup-rust
    revisions that do not provide it.
  • Updates the lint target's help text to mention the Whitaker suite.

The suite exits cleanly at v0.2.5 over --all-targets --all-features, so no
source changes or dylint.toml exclusions were required.

Review walkthrough

  • .github/workflows/ci.yml
    — version bump and hardened install step with the binstall-or-build
    fallback.
  • Makefile
    lint help text now mentions the Whitaker Dylint suite; the recipe
    itself is unchanged.

Validation

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

  • make check-fmt — pass.
  • make lint — pass; cargo doc, Clippy with -D warnings, and
    whitaker --all -- --all-targets --all-features all clean.
  • make test — pass; 902 tests run via nextest, 901 passed, 1 skipped.
  • make markdownlint — pass (59 files).
  • make nixie — pass.
  • make frontend-install, frontend-lint, frontend-typecheck,
    frontend-test, frontend-test-a11y, frontend-localizability,
    frontend-semantic, frontend-e2e — all pass.

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

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

Please try again later or upgrade to continue using Sourcery

codescene-access[bot]

This comment was marked as outdated.

@coderabbitai

coderabbitai Bot commented Jul 10, 2026

Copy link
Copy Markdown
Contributor

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

Update CI to install Whitaker 0.2.6 with conditional tooling, and extend the Makefile lint target to run spelling checks alongside Clippy and Whitaker Dylint.

Changes

CI Whitaker installer

Layer / File(s) Summary
Whitaker installer bootstrap
.github/workflows/ci.yml
Update the installer to version 0.2.6, skip installation when already available, prefer cargo binstall, and fall back to cargo install.

Lint workflow

Layer / File(s) Summary
Lint and spelling checks
Makefile
Update the lint help text and run the spelling target after Whitaker Dylint.

Possibly related PRs

  • leynos/limela#17: Updates the same Whitaker installer version and CI installation configuration.

Poem

Whitaker climbs to six,
Cargo finds its chosen fix.
Clippy calls, Dylint sings,
Spelling checks take flight on wings.
CI hums through every trick.


Caution

Pre-merge checks failed

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

  • Ignore

❌ Failed checks (1 error, 1 warning)

Check name Status Explanation Resolution
Testing (Overall) ❌ Error No new test guards the Whitaker install-path change; the only touched file is .github/workflows/ci.yml, and existing tests cover spelling helpers, not the CI branch. Add a targeted workflow test or shell harness that exercises both cargo binstall and cargo install branches and asserts the Whitaker install step behaves correctly.
Testing (Unit And Behavioural) ⚠️ Warning The patch only changes .github/workflows/ci.yml; it adds no unit, behavioural, or end-to-end coverage for the Whitaker install path or lint workflow. Add a smoke/E2E test or scripted workflow exercise that covers the installer branch (binstall and fallback) and validates the make lint path.
✅ Passed checks (18 passed)
Check name Status Explanation
Title check ✅ Passed The title matches the PR’s main goal, though the version number lags the final bump to 0.2.6.
Description check ✅ Passed The description clearly covers the Whitaker CI hardening and lint target update.
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 Only CI install logic and contributor lint help text changed; no end-user/API behaviour changed, and existing docs already cover Whitaker.
Developer Documentation ✅ Passed Keep the docs unchanged: they already cover make lint and Whitaker installation, and no roadmap/ADR/execplan item changed.
Module-Level Documentation ✅ Passed Only .github/workflows/ci.yml and Makefile changed; no modules were added or edited, so the module docstring rule is unaffected.
Testing (Property / Proof) ✅ Passed No product invariant or lemma was introduced; only CI/install scripting and Makefile help text changed, so property/proof testing is not warranted.
Testing (Compile-Time / Ui) ✅ Passed Mark this PASS: the PR only changes CI shell/YAML and Makefile help text; no Rust/TS compile-time surface or meaningful UI snapshot target appears.
Unit Architecture ✅ Passed Accept: the only effective change is a CI installer version bump in .github/workflows/ci.yml; no query, command, dependency, or state-boundary units were altered.
Domain Architecture ✅ Passed PASS: The PR only changes CI and Makefile lint plumbing; no domain or persistence code is touched, and no transport or storage concerns leak into the model.
Observability ✅ Passed PASS: The patch only hardens CI installation; it adds a clear fallback echo at the failure boundary and no production runtime behaviour, metrics, tracing, or alerts were altered.
Security And Privacy ✅ Passed Only a Whitaker installer version bump landed in CI; no new secrets, permissions, auth paths, or unsafe input handling were introduced.
Performance And Resource Use ✅ Passed PASS: The change is a bounded CI install branch; it adds no new unbounded loops, large allocations, repeated per-item I/O, or hot-path work.
Concurrency And State ✅ Passed PASS: The patch only adjusts CI install steps and Makefile help; it introduces no shared mutable state, async tasks, locks, or ordering-sensitive code.
Architectural Complexity And Maintainability ✅ Passed The patch only adjusts CI shell logic and Makefile help text; it adds no new abstraction, layer, dependency edge, or hidden lifecycle.
Rust Compiler Lint Integrity ✅ Passed Treat as pass: the diff touches only .github/workflows/ci.yml and Makefile; no Rust files, lint suppressions, or clone-appeasement code were added.
✨ 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.

codescene-access[bot]

This comment was marked as outdated.

codescene-access[bot]

This comment was marked as outdated.

codescene-access[bot]

This comment was marked as outdated.

leynos added 2 commits July 19, 2026 13:54
The repository already wires the Whitaker Dylint suite into the
Makefile lint target and CI, but the install step predated the
estate-wide hardening pattern established in leynos/netsuke#410.

Bump WHITAKER_INSTALLER_VERSION from 0.2.1 to 0.2.5 and harden the
install step:

- Reference the version via a plain shell variable inside the run
  block rather than inlining a GitHub expression, which zizmor flags
  as template injection.
- Pass --locked to cargo binstall so the published lockfile is
  honoured.
- Fall back to `cargo install --locked` when cargo-binstall is
  unavailable; several repositories pin setup-rust revisions that do
  not ship binstall, and this fallback has already rescued four
  broken CI runs across the estate.

Update the lint target's help text to mention the Whitaker suite,
which it has run since adoption. The suite exits cleanly over
--all-targets --all-features at v0.2.5, so no source changes or
dylint.toml exclusions are required.
Installer 0.2.5 provisions cargo-dylint 4.1.0, whose dylint driver cannot
build on the suite's new nightly-2026-05-28 pin; 0.2.6 provisions
cargo-dylint 6.0.1.
codescene-access[bot]

This comment was marked as outdated.

@codescene-access codescene-access 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.

No quality gates enabled for this code.

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