Skip to content

chore(deps): batch 16 open Renovate PRs (#19-#38) - #39

Merged
fredclausen merged 18 commits into
mainfrom
chore/renovate-batch
Aug 3, 2026
Merged

chore(deps): batch 16 open Renovate PRs (#19-#38)#39
fredclausen merged 18 commits into
mainfrom
chore/renovate-batch

Conversation

@fredclausen

@fredclausen fredclausen commented Aug 3, 2026

Copy link
Copy Markdown
Member

Consolidates the 16 open Renovate PRs into a single branch so they can be verified together and land as one merge.

Closes #19
Closes #20
Closes #21
Closes #22
Closes #23
Closes #24
Closes #25
Closes #26
Closes #27
Closes #28
Closes #32
Closes #33
Closes #34
Closes #35
Closes #37
Closes #38

What landed

Each bump is its own commit so the range stays bisectable. Cargo.lock was regenerated per-crate with cargo update -p <crate> --precise <version> rather than by merging 12 conflicting lockfiles, so the lock contains exactly the versions the PRs proposed with no incidental transitive drift.

PR Change
#23 anyhow -> 1.0.104
#24 clap -> 4.6.5
#26 serde -> 1.0.229
#27 serde_json -> 1.0.151
#28 toml -> 1.1.4
#32 proc-macro2 -> 1.0.107
#33 quote -> 1.0.47
#38 syn -> 3.0.3
#25 libc -> 0.2.189
#37 base64 -> 0.23.0
#35 trybuild -> 1.0.120
#19 actions/checkout -> 3d3c42e
#20 DeterminateSystems/determinate-nix-action -> 61cbfe2
#21 dtolnay/rust-toolchain -> 2c7215f
#22 nixpkgs-reference -> aec71e3

syn: #38 supersedes #34

#38 (syn 3.0.3) and #34 (syn 2.0.119) both rewrite the same dependency line and are mutually exclusive. #38 is taken; #34 is closed as superseded. syn 3.0.3 was already entering the tree transitively via clap_derive 4.6.4, and fredshell-spec-macros compiles against the 3.0 API unchanged. syn 2.0.118 remains in the lock for wasm-bindgen-macro-support and zerocopy-derive, which is expected.

Two fixes needed to make the batch land

Neither is a dependency bump; both are consequences of the batch and are separate commits.

fix(nix): devShell buildInputs ordering

The nixpkgs 26.05 deprecation warning on shell entry —

Dependency of package 'nix-shell' uses a nested list in attribute 'buildInputs'.

— came from chk.passthru.devPackages (itself a list) being an element of extraRustTools. Removing it looks like deleting a pure duplicate, since the same list is spliced in again as extraDev. It is not: the nested entry was first, so flattening put the rust toolchain first on PATH and the ordering was correct by accident. Removing it preserves the package set but changes the order, letting corePkgs' standalone cargo/clippy shadow the toolchain:

rustc          1.97.1 (8bab26f4f)   <- rust-default
cargo          1.97.0               <- corePkgs
clippy-driver  0.1.97 (2d8144b78)   <- corePkgs

A clippy-driver built by a different rustc than the one that compiled the dependency rlibs breaks every workspace crate with error[E0514]: found crate 'quote' compiled by an incompatible version of rustc.

Fixed by dropping the nested element and reordering to extraDev ++ corePkgs ++ extraRustTools, matching freminal's flake. All four binaries now resolve from a single rust-default-1.97.1 (8bab26f4f), and the warning is gone. The ordering is now documented as load-bearing.

chore(spec): REFERENCE.md pin sync

#22 moves the spec oracle from bash 5.3p9 / coreutils 9.10 to bash 5.3p15 / coreutils 9.11.

Renovate force-updated #22 from 52eeb0a to aec71e3 while this batch was being assembled, so the branch was re-pointed at the newer digest; flake.nix and the flake.lock entry now match #22's head commit exactly. Both digests provide the same bash 5.3p15 / coreutils 9.11, so the oracle does not move and no fixture is affected. Per the upgrade policy in tests/spec/REFERENCE.md, the [reference] block moves with the rev, as does on_disk_reference_doc_parses, which deliberately hardcodes the pin so a bump cannot land silently.

cargo xtask compat reports 0 regressions against bash 5.3p15, so no fixture needed re-recording.

This also clears drift that predates the batch: REFERENCE.md recorded rev d233902 / coreutils 9.10 while flake.nix pinned 536c906 / coreutils 9.11, so cargo xtask spec versions was already failing on main. It passes again.

Worth noting for a future change: spec versions compares only the bash and coreutils versions, not nixpkgs_rev. That is why the rev drifted unnoticed on main. Tightening it to also compare the rev would have caught this, but that is a behavior change and is out of scope here.

Verification

Full suite on a cold cargo clean, rust 1.97.1:

Check Result
cargo fmt --all -- --check pass
cargo clippy --all-targets --all-features -- -D warnings pass
cargo test --all pass, 493 tests, 0 failures
cargo-machete pass
cargo xtask check pass
cargo xtask compat pass, 55 cases, 0 regressions
cargo xtask spec versions pin matches devshell, no drift
nix flake check pass
nested-list deprecation warnings 0

Every commit in the range was gated by the xtask-check pre-commit hook, so each leaves the tree green.

Known unrelated failure

cargo xtask check-specs reports 21 orphan violations. This is pre-existing on main and unrelated: PLAN_07 has 5 of 10 spec sheets written, so corpus cases are not yet all owned by a sheet. check_specs reads only Documents/specs/ and tests/spec/, and this branch touches no file in either, so the result is identical to main. It is not a CI gate — CI runs xtask check and xtask compat.

Summary by CodeRabbit

  • Chores

    • Updated development and build tooling to newer pinned revisions.
    • Refreshed workspace dependency versions.
    • Improved development shell toolchain selection and package ordering.
    • Updated continuous integration workflow action revisions.
  • Tests

    • Updated reference checks for newer Bash, coreutils, and Nixpkgs versions.
  • Documentation

    • Refreshed documented toolchain versions, Nixpkgs revision, and pin date.

fredclausen and others added 17 commits August 3, 2026 15:42
The preceding commit bumped `nixpkgs-reference` to 52eeb0a, moving the
spec-harness oracle from bash 5.3p9 / coreutils 9.10 to bash 5.3p15 /
coreutils 9.11. The `[reference]` block in tests/spec/REFERENCE.md and
the `on_disk_reference_doc_parses` test must move with it — the test
deliberately hardcodes the pin so a bump cannot land silently.

Verification against the new oracle:

  - `cargo xtask compat` — 55 cases, 0 regressions. No fixture needed
    re-recording, so the "bumps re-record fixtures" clause of the
    upgrade policy is satisfied with no fixture changes.
  - `cargo xtask spec versions` — now reports "pin matches devshell:
    ok" and no floating drift.

This also clears drift that predates the bump: REFERENCE.md recorded
rev d233902 / coreutils 9.10 while flake.nix pinned 536c906 /
coreutils 9.11, so `cargo xtask spec versions` was already failing on
main. It passes again as of this commit.

Deviation from the REFERENCE.md upgrade policy: that policy asks for
the `[reference]` block and the `nixpkgs-reference.url` rev to change
in one commit. They are split here because the rev bump is Renovate's
authored commit (cherry-picked from #22) and folding this content into
it would misattribute authorship. Both land in the same PR, and every
commit in the range leaves `cargo test --all` green.
Two related problems in the `default` devShell.

1. Nested list. `chk.passthru.devPackages` is itself a list, and it was
   included as an *element* of `extraRustTools`. Nixpkgs 26.05 warns on
   this and will drop support:

       Dependency of package 'nix-shell' uses a nested list in
       attribute 'buildInputs'. This is deprecated as of Nixpkgs
       release 26.05.

2. Toolchain shadowing. `devPackages` carries the mkCheck rust
   toolchain (rustc + cargo + clippy-driver + rustfmt all from one
   release), while `corePkgs` carries git-hooks.nix's own standalone
   `cargo` / `clippy` / `rustfmt` derivations, which can come from a
   different rustc release. Both land on PATH and earlier entries win.

These interact: because the nested list happened to be the first
element of `extraRustTools`, flattening put the toolchain first and the
ordering was correct *by accident*. Simply deleting the nested entry —
which looks like removing a pure duplicate, since `devPackages` is also
spliced in as `extraDev` — preserves the package set but changes the
order, letting corePkgs' cargo/clippy shadow the toolchain:

    rustc          1.97.1 (8bab26f4f)   <- rust-default
    cargo          1.97.0               <- corePkgs
    clippy-driver  0.1.97 (2d8144b78)   <- corePkgs

A clippy-driver built by a different rustc than the one that compiled
the dependency rlibs makes every workspace crate fail to build:

    error[E0514]: found crate `quote` compiled by an incompatible
    version of rustc

Fixed by dropping the nested element and reordering to
`extraDev ++ corePkgs ++ extraRustTools`, matching the ordering used in
freminal's flake. All four binaries now resolve from a single
`rust-default-1.97.1` built from 8bab26f4f, and the deprecation warning
is gone. Comments record why the order is load-bearing.
Copilot AI review requested due to automatic review settings August 3, 2026 21:59
@coderabbitai

coderabbitai Bot commented Aug 3, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

The pull request refreshes GitHub Actions, Rust workspace dependencies, and Nix inputs. It changes development-shell package ordering and updates pinned Bash, coreutils, nixpkgs, and reference test values.

Changes

Maintenance refresh

Layer / File(s) Summary
Workflow action pin updates
.github/workflows/ci.yml, .github/workflows/update-flakes.yaml
CI and flake-update jobs use newer pinned revisions for checkout, Nix, and Rust toolchain actions.
Rust dependency pin updates
Cargo.toml
Workspace pins are refreshed for application, proc-macro, system, encoding, and test dependencies. syn moves from 2.x to 3.x.
Nix toolchain and reference updates
flake.nix, tests/spec/REFERENCE.md, xtask/src/spec/mod.rs
The nixpkgs pin and development-shell input ordering are updated. Reference documentation and regression-test expectations use the new Bash, coreutils, and nixpkgs values.

Estimated code review effort: 3 (Moderate) | ~20 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The pull request updates the requested Rust crates, GitHub Actions, nixpkgs pin, and related Syn compatibility and validation changes.
Out of Scope Changes check ✅ Passed The devShell ordering and spec synchronization changes support the stated dependency and validation objectives; no unrelated changes are shown.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately identifies the pull request as a consolidated batch of dependency and tooling updates from 16 Renovate updates.
✨ 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 chore/renovate-batch

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

Copilot AI 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.

Pull request overview

Batches 16 Renovate dependency/action updates into one PR, while also fixing two follow-on maintenance issues (Nix devShell PATH/toolchain ordering and the spec oracle pin sync) so the full workspace can be verified and merged in one shot.

Changes:

  • Updates a set of Rust workspace dependencies (including syn to v3) and refreshes Cargo.lock accordingly.
  • Fixes Nix devShell buildInputs ordering to avoid mixed toolchains on PATH (and removes deprecated nested buildInputs list usage).
  • Syncs the spec reference pin across flake.nix, flake.lock, tests/spec/REFERENCE.md, and the xtask pin assertion test.

Reviewed changes

Copilot reviewed 6 out of 8 changed files in this pull request and generated no comments.

Show a summary per file
File Description
xtask/src/spec/mod.rs Updates the hardcoded pin assertions to match the new reference versions/rev.
tests/spec/REFERENCE.md Bumps the pinned reference bash/coreutils/nixpkgs rev and updates the pin date.
flake.nix Updates nixpkgs-reference rev and reorders devShell inputs to keep the mkCheck toolchain first on PATH.
flake.lock Updates the locked nixpkgs-reference metadata (rev/hash/lastModified).
Cargo.toml Bumps workspace dependency versions (anyhow/clap/serde*/toml/proc-macro2/quote/syn/libc/base64/trybuild).
Cargo.lock Regenerates the lockfile to reflect the dependency bumps (including syn 3.0.3 plus retained syn 2.0.118 for transitive users).
.github/workflows/update-flakes.yaml Updates actions/checkout digest used by the scheduled flake update workflow.
.github/workflows/ci.yml Updates action digests for checkout, Determinate Nix setup, and rust-toolchain installation in CI.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci.yml:
- Around line 22-24: Update all three actions/checkout steps in the CI workflow
to set persist-credentials to false, including the visible checkout step and its
two counterparts. Preserve the existing fetch-depth and checkout configuration.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: ca904c7f-a46a-49f0-99f7-5bb754a91162

📥 Commits

Reviewing files that changed from the base of the PR and between f0819df and 291c728.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • flake.lock is excluded by !**/*.lock
📒 Files selected for processing (6)
  • .github/workflows/ci.yml
  • .github/workflows/update-flakes.yaml
  • Cargo.toml
  • flake.nix
  • tests/spec/REFERENCE.md
  • xtask/src/spec/mod.rs

Comment thread .github/workflows/ci.yml
Comment on lines +22 to 24
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
fetch-depth: 0

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔒 Security & Privacy | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

while IFS=: read -r line _; do
  sed -n "${line},$((line + 5))p" .github/workflows/ci.yml
done < <(rg -n 'uses: actions/checkout@' .github/workflows/ci.yml)

Repository: fredsystems/fredshell

Length of output: 211


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail
printf '%s\n' '--- checkout locations ---'
rg -n -C 8 'uses:\s*actions/checkout@' .github/workflows/ci.yml
printf '%s\n' '--- workflow triggers and permissions ---'
sed -n '1,130p' .github/workflows/ci.yml
printf '%s\n' '--- repository-controlled commands ---'
rg -n -C 3 'pre-commit|cargo xtask|nix ' .github/workflows/ci.yml

Repository: fredsystems/fredshell

Length of output: 151


🏁 Script executed:

#!/usr/bin/env bash
set -u
printf '%s\n' '--- workflow size ---'
wc -l .github/workflows/ci.yml
printf '%s\n' '--- checkout lines ---'
grep -n -A5 -B2 'actions/checkout@' .github/workflows/ci.yml
printf '%s\n' '--- relevant commands ---'
grep -n -A3 -B3 -E 'pre-commit|cargo xtask|nix ' .github/workflows/ci.yml
printf '%s\n' '--- top-level workflow ---'
sed -n '1,110p' .github/workflows/ci.yml

Repository: fredsystems/fredshell

Length of output: 151


🌐 Web query:

fredsystems/fredshell .github/workflows/ci.yml actions/checkout persist-credentials

💡 Result:

In the context of a GitHub Actions workflow using actions/checkout, the persist-credentials input is a boolean setting that determines whether the authentication token or SSH key used to check out the repository is configured in the local Git configuration [1][2]. When set to true (which is the default behavior), the action persists credentials into the environment [1][3]. This enables subsequent steps in the same job to run authenticated Git commands (such as git fetch, git push, or git pull) without requiring additional authentication [1][4]. For security reasons, the action removes these credentials during the post-job cleanup [1][3]. In newer versions of actions/checkout, these credentials are stored in a separate file under $RUNNER_TEMP rather than directly in.git/config, enhancing security by isolating the credentials [1][4]. If you set persist-credentials: false, the action will not store the authentication token or SSH key in the local Git configuration, preventing subsequent steps from using those credentials for Git operations [1][5]. This is often recommended for security-conscious workflows where you wish to limit the potential exposure of the token to other steps [5]. Regarding fredsystems/fredshell, a search of the provided repositories under the fredsystems organization did not reveal a specific project named fredshell [6][7][8]. It is possible this refers to a private repository, a typo, or a project that is not indexed publicly. The organization fredsystems is primarily known for the personal projects of Fred Clausen, including NixOS configurations and terminal utilities [7][8][9].

Citations:


🌐 Web query:

site:github.com/fredsystems/fredshell ".github/workflows/ci.yml"

💡 Result:

Found it: fredsystems/fredshell/.github/workflows/ci.yml on the main branch. (github.com)

Citations:


🌐 Web query:

https://github.com/fredsystems/fredshell/blob/main/.github/workflows/ci.yml "actions/checkout"

💡 Result:

The actions/checkout action is a standard, official GitHub Action used in GitHub Actions workflows to clone a repository into the workflow runner's environment [1][2][3]. When used in a CI/CD configuration file like.github/workflows/ci.yml (such as the one referenced in your query), this action allows the runner to access the source code of the repository [3][4]. Without this step, the runner environment would be empty, preventing it from performing tasks like building, testing, or linting the code [4]. Key functions of actions/checkout include: - Cloning the Repository: By default, it clones the repository where the workflow is running, but it can be configured to clone different repositories or specific branches/tags/commits using the with keyword [3][5][4]. - Setting Up the Environment: It sets the $GITHUB_WORKSPACE environment variable to the directory where the code is placed [4]. - Configuration Options: It supports various configurations such as: - fetch-depth: Controls how much history is fetched (default is 1) [1][2][5]. - submodules: Allows for the recursive checkout of git submodules [1][2]. - persist-credentials: Determines whether to configure the git token/SSH key with the local git configuration [1][2]. - sparse-checkout: Enables checking out only specific files or directories [1][2][3]. In the context of the fredsystems organization—which focuses on NixOS configurations and developer tools maintained by Fred Clausen—this action is typical for ensuring that automated CI pipelines have the necessary access to project files to execute defined tasks [6][7][8].

Citations:


🌐 Web query:

site:github.com/fredsystems/fredshell/blob/main/.github/workflows/ci.yml "persist-credentials"

💡 Result:

The matching GitHub Actions setting is:

persist-credentials: false

It disables persistence of the checkout token for later workflow steps. (github.com)

Citations:


🌐 Web query:

site:github.com/fredsystems/fredshell/blob/main/.github/workflows/ci.yml "pull_request" OR "pre-commit" OR "cargo xtask" OR "nix"

💡 Result:

The workflow contains all four requested terms:

  • pull_request trigger
  • pre-commit run --all-files
  • cargo xtask check
  • Multiple Nix setup and nix develop commands

It also runs cargo xtask compat --json target/compat.json. [1] (github.com)

Citations:


Disable checkout credential persistence in all CI jobs.

The workflow runs on pull_request and executes repository-controlled commands. Set persist-credentials: false on all three actions/checkout steps so later commands cannot access the checkout token.

🧰 Tools
🪛 zizmor (1.28.0)

[warning] 22-24: credential persistence through GitHub Actions artifacts (artipacked): does not set persist-credentials: false

(artipacked)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In @.github/workflows/ci.yml around lines 22 - 24, Update all three
actions/checkout steps in the CI workflow to set persist-credentials to false,
including the visible checkout step and its two counterparts. Preserve the
existing fetch-depth and checkout configuration.

Source: Linters/SAST tools

Renovate force-updated #22 from 52eeb0a to aec71e3 while this batch was
being assembled, so the earlier cherry-pick of that PR was already
stale. This moves the pin to the digest #22 currently proposes;
flake.nix and the flake.lock entry now match its head commit exactly.

The oracle versions do not move: both 52eeb0a and aec71e3 provide bash
5.3p15 and coreutils 9.11. No fixture needed re-recording.

Because the rev is recorded in three places, all three move together:

  - flake.nix / flake.lock  — the pin itself
  - tests/spec/REFERENCE.md — the [reference] block
  - xtask/src/spec/mod.rs   — on_disk_reference_doc_parses

Verified in a devshell built from the new pin:
`cargo xtask spec versions` reports "pin matches devshell: ok" with no
drift, `cargo xtask compat` reports 55 cases / 0 regressions, and
`cargo xtask check` passes.
@fredclausen
fredclausen merged commit 930e915 into main Aug 3, 2026
8 checks passed
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.

2 participants