Skip to content

fix(deps): hold both windows names, not just windows-core majors - #652

Merged
InstaZDLL merged 1 commit into
mainfrom
chore/windows-pair-both-names
Sep 15, 2026
Merged

InstaZDLL merged 1 commit into
mainfrom
chore/windows-pair-both-names

Conversation

@InstaZDLL

@InstaZDLL InstaZDLL commented Sep 15, 2026

Copy link
Copy Markdown
Owner

Follow-up to #650, which landed one revision early. The rule it merged holds back windows-core majors only, and leaves windows free — which is not enough, and in one scenario is worse than nothing.

What #650 got wrong

I argued there that the rule already reached a lone windows-core 0.63, because Dependabot classifies a 0.x minor-position bump as semver-major, and I offered this repository's history as proof: no 0.x bump of that shape has ever landed inside cargo-patch-and-minor — quick-xml 0.41 → 0.42, lofty 0.24 → 0.25, wasapi 0.23 → 0.24, resvg 0.47 → 0.48, rtrb 0.3 → 0.4, rfd 0.16 → 0.17.

That evidence is real but it is about groups, and the conclusion was about ignore. The two keys are not obliged to classify alike. GitHub documents SemVer as plain major.minor.patch, which makes 0.62 → 0.63 a minor, and nothing authoritative settles the 0.x case either way. The claim was an inference presented as a fact.

The worse half

Leaving windows out of the rule was justified as keeping a signal: the day it offers a major is the day the pair can move. Under the documented reading that backfires. A coordinated 0.63 would classify as minor for both names, windows-core would be ignored, and windows would be swept into cargo-patch-and-minor on its own — desynchronising the pair in the other direction and reproducing #642 with the two crates swapped. The guard would have caused the defect it was written to prevent.

What this does instead

Stops betting on the classification. Both names are held back from semver-major and semver-minor alike, which is correct under either reading, and the pair is bumped by hand in one commit when windows-rs realigns.

Patches stay automatic and are safe by construction: both names remain inside 0.62.x, which Cargo unifies onto a single version regardless of what Dependabot proposes.

Accepted cost, written at the rule so it is not rediscovered as a surprise: an ignore can also hold back a security update that needs a minor bump. Patch-level advisories still flow, and a desync is a build failure on every Windows job, which a slightly stale binding is not.

Still not solved

This suppresses a proposal; it does not verify the invariant. A windows / windows-core desync reaching Cargo.lock by any other route still surfaces as a wall of trait errors on the Windows job rather than as a named failure. The thing that would enforce it is an offline Cargo.lock check in CI, in the shape of check-toolchain-pin.py and check-sources.py — deliberately not in this PR, and worth its own issue.

Validation

Local CodeRabbit pass: 0 findings. YAML parses; the rule reads back as two entries, each carrying both update types.

Summary by CodeRabbit

  • Maintenance
    • Les mises à jour majeures et mineures de windows et windows-core sont désormais effectuées manuellement et conjointement.
    • Les mises à jour correctives restent automatiques.
    • La documentation précise les règles appliquées aux versions 0.x et les éventuels risques pour certaines mises à jour de sécurité mineures.

I claimed the rule already reached a lone 0.63 because Dependabot
classifies a 0.x minor-position bump as semver-major, and cited this
repository's history as proof. That inference was too strong. What the
history shows is how `groups` behaves — no 0.x bump of that shape has ever
landed inside cargo-patch-and-minor — and `groups` and `ignore` are not
obliged to classify alike. GitHub documents SemVer as plain
major.minor.patch, which makes 0.62 -> 0.63 a minor, and nothing
authoritative settles the 0.x case either way.

So stop betting on the classification. Both names are now held back from
major and minor alike, which is correct under either reading, and the
mirrored failure the previous rule risked is gone with it: `windows` was
left free, so a paired 0.63 would have bumped `windows` alone and
desynchronised in the other direction — the same defect as #642 with the
two crates swapped.

Patches stay automatic and are safe by construction: both names remain
inside 0.62.x, where Cargo unifies them onto one version regardless.
Accepted cost, written at the rule: an ignore can also hold back a
security update needing a minor bump.
@InstaZDLL InstaZDLL added scope: backend Rust/Tauri backend (src-tauri/) scope: ci CI/CD, workflows type: fix Bug fix labels Sep 15, 2026
@InstaZDLL InstaZDLL added the size: s 10-50 lines label Sep 15, 2026
@coderabbitai

coderabbitai Bot commented Sep 15, 2026

Copy link
Copy Markdown

Review Change StackReview Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: dd14f004-4d5e-40df-94e1-9d35f5f542c2

📥 Commits

Reviewing files that changed from the base of the PR and between 0f6aead and 346fd6d.

📒 Files selected for processing (2)
  • .github/dependabot.yml
  • src-tauri/crates/app/Cargo.toml

Limit details: You’ve used the included review currently available. Your 89 included PR review attempts over the past 7 days set your current allowance at 1 review per hour.


📝 Walkthrough

Walkthrough

La configuration Dependabot bloque les mises à jour majeures et mineures de windows et windows-core. Les mises à jour de correctifs restent automatiques. Le commentaire Cargo documente la mise à niveau manuelle et coordonnée des deux dépendances.

Changes

Alignement des dépendances Windows

Layer / File(s) Summary
Politique de mise à jour et documentation Cargo
.github/dependabot.yml, src-tauri/crates/app/Cargo.toml
Dependabot limite windows et windows-core aux mises à jour de correctifs. Le commentaire Cargo indique que les deux dépendances doivent rester alignées et être mises à jour ensemble manuellement.

Priority: ⬇️ Low

Estimated code review effort: 1 (Trivial) | ~5 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 346fd

The dependency update policy now consistently requires coordinated manual minor and major upgrades for both Windows crates. No actionable merge risk remains.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed Le titre est concis, spécifique et décrit le changement principal : bloquer les mises à jour de windows et windows-core, et corriger la règle précédente.
Description check ✅ Passed La description est détaillée et couvre le contexte, le risque de désynchronisation, la solution retenue, le coût accepté et la validation effectuée. Elle ne reprend pas tous les titres ni toutes les c…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch chore/windows-pair-both-names

Usage-based review receipt

Note

This review was completed with usage-based billing: files reviewed beyond your plan's included limits are billed at $0.25/file. View usage-based billing.


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

@InstaZDLL InstaZDLL self-assigned this Sep 15, 2026
@InstaZDLL
InstaZDLL merged commit 4475bde into main Sep 15, 2026
16 checks passed
@InstaZDLL
InstaZDLL deleted the chore/windows-pair-both-names branch September 15, 2026 17:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

scope: backend Rust/Tauri backend (src-tauri/) scope: ci CI/CD, workflows size: s 10-50 lines type: fix Bug fix

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant