Skip to content

fix: 書き換え不要の指定でも --max-change で除外した版があれば max-change と報告する - #133

Merged
owayo merged 1 commit into
mainfrom
fix/issue-106-max-change-unchanged-specs
Nov 6, 2026
Merged

owayo merged 1 commit into
mainfrom
fix/issue-106-max-change-unchanged-specs

Conversation

@owayo

@owayo owayo commented Nov 6, 2026

Copy link
Copy Markdown
Owner

概要

--max-change で新しい版を除外した結果、書き換えの必要がない指定 (ワイルドカードや部分版) は、max-change=<LEVEL> ではなく latest と報告されていました。package.json の "lodash": "4.x" で公開版が 4.17.21 と 5.0.0、--max-change minor のとき、結果は latest (JSON の理由は already_latest) になり、同じ候補で "^4.17.21" なら max-change=minor と報告していました。RubyGems の ~> 7.1 (7.1.4, 7.2.0、--max-change patch) や mise の node = "22" (22.11.0, 24.0.0、--max-change minor) も同じでした。マニフェストへの書き込みは正しく (何も書かない)、報告の理由だけが違っていました。

原因

update/mod.rs の select_latest_candidate は、書き換え後の表記が今の表記と同じとき (何も変わらない更新の防止) に AlreadyLatest を返し、この分岐では --max-change で除外した新しい版の有無を見ていませんでした。ChangeLevelLimited を返していたのは、許された最新の候補が現在版以下の分岐だけでした。

変更内容

  • --max-change で除外した、現在版より新しい候補の判定を excluded_by_max_change にまとめ、現在版が許された最新以上の分岐と、書き換え後の表記が同じ分岐の両方で使う。除外した版があれば ChangeLevelLimited を返す。
  • docs/usage (英語・日本語) と AGENTS.md に書いた。

検証

  • 回帰テスト (修正前のコードでは失敗することを確認済み): update::tests::unchanged_specs_report_versions_excluded_by_max_change (npm の 4.x・RubyGems の ~> 7.1・mise の 22 で、--max-change で除外した版があれば max-change=<LEVEL>、なければこれまでどおり latest)
  • cargo fmt --all -- --check: pass
  • cargo clippy --locked --all-targets -- -D warnings: pass
  • cargo test --locked (Windows): pass

Closes #106

🤖 Generated with Claude Code

--max-change で新しい版を除外した結果、書き換えの必要がない指定
(ワイルドカードや部分版) は、max-change=<LEVEL> ではなく latest と報告されて
いた。package.json の "lodash": "4.x" で公開版が 4.17.21 と 5.0.0、
--max-change minor のとき、結果は latest (JSON の理由は already_latest) に
なり、同じ候補で "^4.17.21" なら max-change=minor と報告していた。
RubyGems の ~> 7.1 (7.1.4, 7.2.0、--max-change patch) や mise の
node = "22" (22.11.0, 24.0.0、--max-change minor) も同じだった。マニフェスト
への書き込みは正しく (何も書かない)、報告の理由だけが違っていた。

update/mod.rs の select_latest_candidate は、書き換え後の表記が今の表記と
同じとき (何も変わらない更新の防止) に AlreadyLatest を返し、この分岐では
--max-change で除外した新しい版の有無を見ていなかった。ChangeLevelLimited を
返していたのは、許された最新の候補が現在版以下の分岐だけだった。

- --max-change で除外した、現在版より新しい候補の判定を excluded_by_max_change
  にまとめ、現在版が許された最新以上の分岐と、書き換え後の表記が同じ分岐の
  両方で使う。除外した版があれば ChangeLevelLimited を返す。
- docs/usage (英語・日本語) と AGENTS.md に書いた。

テスト: npm の 4.x・RubyGems の ~> 7.1・mise の 22 で、--max-change で除外
した版があれば max-change=<LEVEL>、なければこれまでどおり latest になること。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@owayo owayo self-assigned this Nov 6, 2026
@coderabbitai

coderabbitai Bot commented Nov 6, 2026

Copy link
Copy Markdown

Important

  • Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 962b5954-e94a-4bcd-9344-40a212256624
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@owayo
owayo merged commit a559338 into main Nov 6, 2026
8 checks passed
@owayo
owayo deleted the fix/issue-106-max-change-unchanged-specs branch November 6, 2026 11:51
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.

--max-change で除外した新しい版があっても、書き換え不要のワイルドカード指定を latest と報告する

1 participant