Skip to content

feat(renovate): scope the NUT feat: to minor/major bumps - #108

Merged
owine merged 2 commits into
mainfrom
feat/nut-version-feat-minor-major
Sep 18, 2026
Merged

owine merged 2 commits into
mainfrom
feat/nut-version-feat-minor-major

Conversation

@owine

@owine owine commented Sep 18, 2026 •

Copy link
Copy Markdown
Owner

Depends on owine/renovate-config#101, which stops the shared presets from ever typing a dependency update feat:.

What

NUT update Before After
patch feat: → minor release deps: → patch release
minor / major feat: → minor release feat: → minor release
any review gate (no automerge, needs-review) unchanged

Why this repo keeps a feat: at all

The fleet rule is now that no dependency update is ever typed feat: — that commit is release-please's minor-bump trigger, and the minor digit is the repo's promise to its consumers, which Renovate can't make on your behalf.

This repo is the sanctioned exception, and the rule's description now says so explicitly: it's a packaging shim whose entire output is NUT, built from source. The version a user runs is this dependency's version, so the question Renovate normally can't answer — "is this bump consumer-visible?" — has a fixed answer of yes, by construction.

Why minor/major only

An upstream NUT patch was cutting a minor release here, so the wrapper's version drifted a digit ahead of upstream's for no reason. Mirroring upstream's own update type keeps this repo's semver meaningful.

Shape

Split into two rules so each property has exactly one home:

  • the gate rule (nut source group, automerge: false, needs-review) covers every update type and sets no commit type, inheriting the fleet's deps: baseline;
  • the feat: rule sets no automerge.

The review gate stays deliberately wider than the feat: — building from source means even a patch bump is a rebuild worth reading before it lands.

Not feat!: on a major: an upstream major is not automatically breaking for this image's users.

Verification

renovate-config-validator .github/renovate.json → "Config validated successfully".

Note: this branch also carries the previously-unpushed local commit 27e6705 (docs(renovate): correct the apk-extraction version floor to 44.96.0), which touches the same file.

Summary by Sourcery

Align NUT dependency commit types with upstream update severity while preserving review requirements for source-built releases.

Enhancements:

  • Scope NUT dependency updates so only minor and major bumps use the release-triggering feat: type, while patch bumps retain the standard dependency type.
  • Keep review gating for all NUT updates while separating it from commit-type and automerge behavior.

owine and others added 2 commits September 17, 2026 11:30
renovatebot/renovate#45691 merged at 08:07 UTC on 2026-09-17 and 44.96.0
was cut at that commit (compare/44.96.0...9b87f8d is "identical"), so
built-in `RUN apk add` extraction has been available since 44.96.0, not
44.97.1 as this rule's description claimed.

Confirmed in production: the Mend-hosted runner extracted these pins on
44.96.3. Comment-only change; no behavior change.
owine/renovate-config now types no dependency update `feat:` — a `feat:`
commit is release-please's minor-bump trigger, and Renovate can't know
whether an upstream bump is visible to this repo's consumers.

This repo is the sanctioned exception, and the rule now says why: it's a
packaging shim whose entire output is NUT, built from source, so the
version a user runs IS this dependency's version. The question Renovate
can't normally answer ("is this bump consumer-visible?") has a fixed
answer of yes.

Scoped to minor/major so an upstream PATCH stays `deps:` (patch release)
instead of cutting a minor here — the wrapper's semver now tracks
upstream's own update type rather than drifting a digit ahead of it.

Split into two rules so each property has one home: the gate rule
(`nut source` group, `automerge: false`, `needs-review`) covers every
update type and sets no commit type; the `feat:` rule sets no automerge.
Building from source means a patch bump is still a rebuild worth reading,
so the review gate deliberately stays wider than the `feat:`.

@sourcery-ai sourcery-ai 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.

Sorry @owine, you've used your own review budget of 250,000 diff characters for the last 7 days.

You can request another review in 1 day and 19 hours by commenting @sourcery-ai review. Upgrade to get a review now.

@sourcery-ai

sourcery-ai Bot commented Sep 18, 2026

Copy link
Copy Markdown
Reviewer's guide (collapsed on small PRs)

Reviewer's Guide

Updates the Renovate configuration so NUT patch bumps use the fleet’s deps: release semantics while minor and major bumps retain the repository’s packaging-specific feat: trigger; all NUT updates remain gated for review, and the APK extraction floor is corrected to 44.96.0.

File-Level Changes

Change Details Files
Split NUT dependency updates into a review gate and a scoped release-triggering rule.
  • Keep every NUT update in the nut source group with automerge disabled and needs-review.
  • Apply feat: only to minor and major NUT updates, allowing patch updates to inherit the fleet deps: type.
  • Leave the feat: rule without an automerge setting so the review gate remains authoritative.
.github/renovate.json
Correct the APK extraction version floor in the Renovate configuration.
  • Raise the configured version floor to 44.96.0.
.github/renovate.json

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@owine
owine merged commit d1f0520 into main Sep 18, 2026
13 checks passed
@owine
owine deleted the feat/nut-version-feat-minor-major branch September 18, 2026 20:50
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.

1 participant