feat(config): add minimum release age excludes#10277
Conversation
📝 WalkthroughWalkthroughThis PR introduces a new ChangesMinimum Release Age Excludes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
612d99c to
6d86509
Compare
Greptile SummaryAdds
Confidence Score: 5/5Safe to merge — the change only narrows when the global minimum_release_age cutoff is applied and cannot bypass per-tool or CLI-supplied cutoffs. All three call sites are updated consistently, the precedence order (CLI flag → per-tool option → excludes → global setting) is enforced by the function's early-return structure, and the new logic is covered by seven unit tests plus an e2e test. No auth, install-path, or data-mutation logic is touched. The one unit test that claims to verify 'exclude does not override tool option' actually exercises a non-matching exclude entry, so the exact scenario (tool IS excluded AND has its own per-tool setting) lacks an explicit test — worth a quick look before merging if strict coverage is important. Important Files Changed
Reviews (3): Last reviewed commit: "feat(config): add minimum release age ex..." | Re-trigger Greptile |
6d86509 to
2910ace
Compare
|
Addressed the review feedback:
Tests run:
This comment was generated by an AI coding assistant. |
2910ace to
30e79bd
Compare
Hyperfine Performance
|
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.1 x -- echo |
17.7 ± 2.5 | 15.7 | 32.2 | 1.00 |
mise x -- echo |
17.9 ± 1.0 | 16.2 | 24.5 | 1.01 ± 0.16 |
mise env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.1 env |
17.1 ± 0.9 | 15.6 | 21.6 | 1.00 |
mise env |
17.8 ± 1.0 | 16.1 | 23.5 | 1.04 ± 0.08 |
mise hook-env
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.1 hook-env |
17.7 ± 0.8 | 16.1 | 24.1 | 1.00 |
mise hook-env |
18.3 ± 0.8 | 16.6 | 22.8 | 1.03 ± 0.07 |
mise ls
| Command | Mean [ms] | Min [ms] | Max [ms] | Relative |
|---|---|---|---|---|
mise-2026.6.1 ls |
15.7 ± 3.1 | 13.0 | 38.8 | 1.00 |
mise ls |
17.2 ± 3.1 | 14.0 | 37.5 | 1.09 ± 0.29 |
xtasks/test/perf
| Command | mise-2026.6.1 | mise | Variance |
|---|---|---|---|
| install (cached) | 134ms | 135ms | +0% |
| ls (cached) | 59ms | 60ms | -1% |
| bin-paths (cached) | 65ms | 66ms | -1% |
| task-ls (cached) | 121ms | 122ms | +0% |
Summary
minimum_release_age_excludesto skip the global minimum release age policy for matching tools/backendsjq), full backend IDs (npm:prettier), and backend wildcards (npm:*)--minimum-release-ageand per-toolminimum_release_ageprecedence intactTests
cargo test install_beforecargo test test_settings_toml_is_sortedmise run test:e2e e2e/cli/test_install_beforeThis PR was generated by an AI coding assistant.
Note
Medium Risk
Changes fuzzy/latest version resolution for installs and upgrades when a global minimum release age is set; mistakes in exclude patterns could allow newer versions than intended for excluded tools.
Overview
Adds
minimum_release_age_excludesso a global supply-chain age cutoff can skip selected tools or whole backends while everything else still honorsminimum_release_age.Resolution now goes through
resolve_before_date_for_tool, which only bypasses the global setting when an exclude entry matches the tool shorthand (e.g.jq), full backend id (e.g.npm:prettier), or backend wildcard (e.g.npm:*). Per-toolminimum_release_ageand--minimum-release-ageare unchanged and still win over exclusions.Documented in tips/settings, exposed in
settings.toml/MISE_MINIMUM_RELEASE_AGE_EXCLUDES, and added toschema/mise.json. Covered byinstall_beforeunit tests and an e2e case where excludingjqinstalls a newerlatestthan the global cutoff would allow.Reviewed by Cursor Bugbot for commit 30e79bd. Bugbot is set up for automated code reviews on this repo. Configure here.