Skip to content

ci.yml resolves an unpinned nightly with -D warnings, breaking cargo clippy on every branch since 22 Aug #476

Description

@decrypto21

Summary

.github/workflows/ci.yml resolves the Rust toolchain at run time:

- uses: dtolnay/rust-toolchain@5b842231ba77f5c045dba54ac5560fed2db780e2 # nightly
  with:
    toolchain: nightly

and runs clippy with -D warnings, so any lint a future nightly introduces fails the workspace with no change in the repository. A recent nightly added recursion_depth_exceeding_limit, and truapi-server trips it:

error: overflow evaluating the requirement
  --> rust/crates/truapi-server/src/runtime/pairing_host.rs:2423:5
   = help: consider increasing the recursion limit by adding a
           `#![recursion_limit = "256"]` attribute to your crate (`truapi_server`)
   = note: `-D recursion-depth-exceeding-limit` implied by `-D warnings`
   = warning: this was previously accepted by the compiler but is being phased out

Proving request_login's boxed trait future Send recurses through SsoPairingFlow::request_session and exceeds the default 128-step budget. The chain is not recursive, only deeper than the default allowance; the compiler previously accepted the give-up silently.

Every CI run repo-wide since 22 Aug has failed. There are three:

run branch result
2026-08-22 11:13 rfc/spa-worker-calls (#468) failure
2026-08-24 07:26 nidish/debug-host-port (#295) failure
2026-08-24 07:33 nidish/debugger-rfc (#315) failure

Other open PRs show a green Rust workspace from runs between 04 and 21 Aug, predating the lint; they turn red on their next run. main last ran 21 Aug. #315 is the control: its entire diff is one markdown file and it fails identically, so main is affected.

Fix

#![recursion_limit = "256"] in truapi-server, as the diagnostic suggests.

Options — toolchain pinning

The lint is the symptom; the unpinned toolchain is why it lands as a failure rather than an upgrade. There is no rust-toolchain.toml today.

  • Add a dated rust-toolchain.toml, so nightly moves only when the pin is bumped.
  • Or pin toolchain: in ci.yml to a dated nightly.
  • Or keep nightly floating and drop -D warnings for the nightly job, reporting new lints without failing the build.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions