14948 Commits

Author SHA1 Message Date
renovate[bot] 7fc75acbaa fix(deps): update renovate-base-image to v13.142.3 (main) (#47363)
fix(deps): update renovate-base-image to v13.142.3

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.142.2 | 13.142.3 |
| docker     | ghcr.io/renovatebot/base-image | 13.142.2 | 13.142.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-24 13:21:28 +00:00
renovate[bot] f69dd1ded7 fix(deps): update renovate-base-image to v13.142.2 (main) (#47354)
fix(deps): update renovate-base-image to v13.142.2

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.142.1 | 13.142.2 |
| docker     | ghcr.io/renovatebot/base-image | 13.142.1 | 13.142.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-24 00:23:51 +00:00
renovate[bot] 578dc84d84 fix(deps): update dependency github/gh-actions-lock to v0.4.0 (main) (#47355)
fix(deps): update dependency github/gh-actions-lock to v0.4.0

| datasource      | package                | from   | to     |
| --------------- | ---------------------- | ------ | ------ |
| github-releases | github/gh-actions-lock | v0.3.0 | v0.4.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-24 00:23:48 +00:00
Jamie Tanna d1f6e41650 test(manager/renovate-config): document which constraints scopes are extracted (#47349)
As part of changes towards #46438, it was noticed that there wasn't
coverage for the ability to specify `constraints` inside `packageRules`.

Co-authored-by: Claude Opus 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-23 17:01:46 +00:00
renovate[bot] bec17bf19a fix(deps): update renovate-base-image to v13.142.1 (main) (#47347)
fix(deps): update renovate-base-image to v13.142.1

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.142.0 | 13.142.1 |
| docker     | ghcr.io/renovatebot/base-image | 13.142.0 | 13.142.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-23 16:21:27 +00:00
renovate[bot] a45ee254dc feat(deps): update renovate-base-image to v13.142.0 (main) (#47343)
feat(deps): update renovate-base-image to v13.142.0

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.141.2 | 13.142.0 |
| docker     | ghcr.io/renovatebot/base-image | 13.141.2 | 13.142.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-23 13:54:16 +00:00
RahulGautamSingh 0701e54c3b fix(manager/npm): hash yarn.js for yarn berry corepack hash (#46771) 2026-10-23 13:32:34 +00:00
RahulGautamSingh 1c61ebe76a fix(workers/branch): dedupe updatedArtifacts by path (#46626) 2026-10-23 13:26:37 +00:00
RahulGautamSingh 8dd4386525 fix(manager/npm): detect yarnZeroInstall from any upgrade on mixed branches (#44886)
* fix(manager/npm): detect yarnZeroInstall from first upgrade on mixed branches

* apply suggestions
2026-10-23 13:25:45 +00:00
RahulGautamSingh 419feea7c8 fix(platform/gitlab): set branch status on merged results pipelines (#47064) 2026-10-23 13:24:01 +00:00
Michael Kriese 4ebd20edc9 feat(util/exec): look up jb versions from containerbase/jb-prebuild (#47303)
Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-23 11:28:22 +00:00
Michael Kriese 0db8910569 test(workers/repository): use a temp cache dir in init specs (#47339)
Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-23 11:13:07 +00:00
Jamie Tanna 4086667eba fix(manager/gomod): allow modules with an older go directive (#47317)
* fix(manager/gomod): allow modules with an older `go` directive

As noted in #47313, when using `constraintsFiltering=strict`, any Go
modules which declare a `go` directive on an /older/ minor version than
the repository's are filtered out, even though they would not require
bumping the repository's `go` directive.

This seems to have been documented as the intent in
0e5e384237 - hence the test added to note
the behaviour - but this leads to us not updating versions we should do.

We can instead convert it into the range `<=1.26.x`, which allows the
same or older minor versions, and continues to filter out newer ones,
which applies with the `semver-coerced` versioning scheme.

Co-authored-by: Claude Opus 5.5 <jamie.tanna+amp@mend.io>

* fixup! fix(manager/gomod): allow modules with an older `go` directive

---------

Co-authored-by: Claude Opus 5.5 <jamie.tanna+amp@mend.io>
2026-10-23 10:14:22 +00:00
Jamie Tanna 5f1e110999 fix(config/validation): improve nested/array parent option names in messages (#47320)
As noted in #47311, when an option is used somewhere it can't be, the
warning only names the type of object it was found in, i.e.

> "hostRules" can't be used in "packageRules", as it can only be used
> at the top level of a config.

This isn't ideal when there are many `packageRules` or `customManagers`,
so we should improve this to include an index (`packageRules[53]`), and
the `customType` (`custom.regex[25]`) or the nested parent
(`npm.minor`).

Co-authored-by: Claude Opus 5.5 <jamie.tanna+amp@mend.io>
2026-10-23 10:13:56 +00:00
Jamie Tanna b295e59beb fix(config/validation): always allow options which can be used anywhere (#47319)
As noted in #47311, the `description` option - which can be used
anywhere - was being flagged as invalid inside the `regex` custom
manager config, with the confusing message:

> "description" can't be used in "regex", as it can only be used
> anywhere in a config.

A separate change fixes that specific case, but more generally, if we
have an `any` scope, that should be allowed regardless, and we should
skip the check for where it's used.

We still expand the `any` scope to its parents, as that's needed to
generate the JSON Schema and the default config.

To test this in a case that provides us confidence - given we don't
currently have any options that are mislabeled, we need to mock the
import, which seems a bit hacky, but works.

Co-authored-by: Claude Opus 5.5 <jamie.tanna+amp@mend.io>
2026-10-23 10:13:56 +00:00
Jamie Tanna 596ab9a167 fix(config/validation): allow top-level custom manager config (#47318)
As noted in #47311, when we added validation for what parent an option
could be used with, if you configured a Manager-specific config for a
Custom Manager i.e.

```json
{
  "regex": {
    "ignorePaths": []
  }
}
```

this would now raises a warning that `ignorePaths` can't be used in
`regex`, even though at runtime, we would merge this config in. same as
any other manager.

We can add the missing Custom Manager names to the known managers
allowed at top-level.

Co-authored-by: Claude Opus 5.5 <jamie.tanna+amp@mend.io>
2026-10-23 10:13:55 +00:00
Michael Kriese f14fee7462 fix(deps): update renovate-base-image to v13.141.2 (#47335)
Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-23 09:59:58 +00:00
renovate[bot] f8470061f1 fix(deps): update renovate-base-image to v13.141.1 (main) (#47332)
fix(deps): update renovate-base-image to v13.141.1

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.141.0 | 13.141.1 |
| docker     | ghcr.io/renovatebot/base-image | 13.141.0 | 13.141.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-23 09:20:58 +00:00
renovate[bot] e7abaf401d feat(deps): update renovate-base-image to v13.141.0 (main) (#47330)
feat(deps): update renovate-base-image to v13.141.0

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.140.2 | 13.141.0 |
| docker     | ghcr.io/renovatebot/base-image | 13.140.2 | 13.141.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-23 08:20:44 +00:00
renovate[bot] 002bfb5ad6 fix(deps): update renovate-base-image to v13.140.2 (main) (#47327)
fix(deps): update renovate-base-image to v13.140.2

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.140.1 | 13.140.2 |
| docker     | ghcr.io/renovatebot/base-image | 13.140.1 | 13.140.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-23 02:20:58 +00:00
renovate[bot] 261f59ec59 fix(deps): update renovate-base-image to v13.140.1 (main) (#47326)
fix(deps): update renovate-base-image to v13.140.1

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.140.0 | 13.140.1 |
| docker     | ghcr.io/renovatebot/base-image | 13.140.0 | 13.140.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-23 01:21:40 +00:00
renovate[bot] 985282b0df fix(deps): update dependency github/gh-actions-lock to v0.3.0 (main) (#47315)
fix(deps): update dependency github/gh-actions-lock to v0.3.0

| datasource      | package                | from   | to     |
| --------------- | ---------------------- | ------ | ------ |
| github-releases | github/gh-actions-lock | v0.2.0 | v0.3.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-22 16:57:06 +00:00
Jamie Tanna 1deb80ecaa chore(util/exec): correct typo in constraints (#47304) 2026-10-22 14:45:43 +00:00
Michael Kriese ef96e4da50 feat: validate the containerbase image version on startup (#47248)
* feat: validate the containerbase image version on startup

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

* fix: read the containerbase version check bypass from the process environment only

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

* refactor: use isContainerbase from the base image package in the version check

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

* fix: explain the containerbase image version check errors

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

* test: read the containerbase version file from memfs

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

* fix: address review feedback for the containerbase version check

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

---------

Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-22 14:02:27 +00:00
Sergei Zharinov f911008ea4 feat(presets): add PHP2Shell security updates (#47283)
* feat(presets): add PHP2Shell security updates

Amp-Thread-ID: https://ampcode.com/threads/T-01a1601f-c5b2-745d-bc92-275ec139e3af

* Apply batched suggestions from code review

Co-authored-by: Sergei Zharinov <zharinov@users.noreply.github.com>

* fix(presets): preserve normal PHP update policies

Amp-Thread-ID: https://ampcode.com/threads/T-01a1601f-c5b2-745d-bc92-275ec139e3af

* refactor(presets): clarify PHP2Shell version checks

Amp-Thread-ID: https://ampcode.com/threads/T-01a1601f-c5b2-745d-bc92-275ec139e3af

* fix(presets): mark PHP2Shell fixes as security updates

Amp-Thread-ID: https://ampcode.com/threads/T-01a1601f-c5b2-745d-bc92-275ec139e3af

* fix(config): avoid adding absent vulnerability severity

Amp-Thread-ID: https://ampcode.com/threads/T-01a1601f-c5b2-745d-bc92-275ec139e3af
2026-10-22 13:58:29 +00:00
renovate[bot] acb2504158 feat(deps): update renovate-base-image to v13.140.0 (main) (#47306)
feat(deps): update renovate-base-image to v13.140.0

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.139.3 | 13.140.0 |
| docker     | ghcr.io/renovatebot/base-image | 13.139.3 | 13.140.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-22 13:21:23 +00:00
renovate[bot] bd8f755bc1 fix(deps): update renovate-base-image to v13.139.3 (main) (#47291)
fix(deps): update renovate-base-image to v13.139.3

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.139.1 | 13.139.3 |
| docker     | ghcr.io/renovatebot/base-image | 13.139.1 | 13.139.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-22 12:20:42 +00:00
renovate[bot] 1a80c538f8 build(deps): update dependency got to v16.1.0 (main) (#47214)
* build(deps): update dependency got to v16.1.0

| datasource | package | from   | to     |
| ---------- | ------- | ------ | ------ |
| npm        | got     | 16.0.0 | 16.1.0 |

* fix(util/http): adapt to got 16.1 types

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Michael Kriese <michael.kriese@mend.io>
Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-22 11:30:06 +00:00
Jamie Tanna c11b6146f6 fix(config/validation): allow patterns for allowedValues of patternMatch options (#47297)
As noted in [0], the stricter validation we now perform with
`allowedValues` has provided a little too-strict validation with
`matchUpdateTypes`, which is matched as a regex or glob.

If we don't treat them as a pattern, we see i.e.:

    Invalid packageRules[2].matchUpdateTypes: matchUpdateTypes had
    invalid values `["!major"]` which are not part of the allowedValues

For options with `patternMatch` set, we can instead treat a value as
valid if it can match any of the `allowedValues`, once any leading `!`
has been removed. This still catches typos such as `!majr`.

Currently `matchUpdateTypes` is the only option with both `allowedValues`
and `patternMatch`, but this will apply to any future options.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>

[0]: https://github.com/renovatebot/renovate/pull/39076#issuecomment-6334467901
2026-10-22 08:49:24 +00:00
Jamie Tanna 64aa6497b9 fix(manager/github-actions): relock when regenerating actions.lock (#47294)
As noted in #47292, since `gh actions-lock` v0.2.0 locked pins are
sticky: running `gh actions-lock` only resolves refs that the lockfile
doesn't record yet.

If a ref updates (i.e. `pnpm/setup@v3.0.0` to `pnpm/setup@v3.1.1`), then
`gh actions-lock` fails with a `Ref changed` error and `Unused lockfile
entry`, and writes nothing out, leaving the branch in an unusable state.

Per v0.2.0's release notes, we should use `--relock` to re-resolve every
ref and rebuilds the lockfile graph.

This updates floating tags i.e. `@v4` when occurring, because they are
technically a floating tag that has now updated.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-22 08:01:28 +00:00
RahulGautamSingh 8b2ff8b388 fix(dependency-dashboard): ignore dashboard checkboxes when mode=silent (#47271) 2026-10-22 07:58:22 +00:00
renovate[bot] bafa1fa53c fix(deps): update renovate-base-image to v13.139.1 (main) (#47282)
fix(deps): update renovate-base-image to v13.139.1

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.139.0 | 13.139.1 |
| docker     | ghcr.io/renovatebot/base-image | 13.139.0 | 13.139.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-21 23:20:27 +00:00
renovate[bot] 11db0f2d34 feat(deps): update renovate-base-image to v13.139.0 (main) (#47275)
feat(deps): update renovate-base-image to v13.139.0

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.138.2 | 13.139.0 |
| docker     | ghcr.io/renovatebot/base-image | 13.138.2 | 13.139.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-21 18:16:56 +00:00
Jamie Tanna b4ee9aa86f fix(config/validation): don't warn on repo options in inherited onboardingConfig (#47269)
As noted in #47266, we had missed the case that an inherited config's
`onboardingConfig` now leads to config validation warnings.

There is special handling in global and repo config, but this was missed
for inherited config.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 15:33:27 +00:00
renovate[bot] 1d9aae3d4a fix(deps): update renovate-base-image to v13.138.2 (main) (#47265)
fix(deps): update renovate-base-image to v13.138.2

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.138.1 | 13.138.2 |
| docker     | ghcr.io/renovatebot/base-image | 13.138.1 | 13.138.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-21 14:56:37 +00:00
Jamie Tanna b91f928aa0 fix(workers/repository/lookup): warn when a tag is missing its v prefix (#47155)
When a GitHub Actions Workflow digest pins against a repository that
tags releases with the `v` prefix, but the Workflow itself doesn't use
the `v` like:

    uses: renovatebot/github-action@abd08c7549 # 46.1.5

we correctly match `46.1.5` to the release `v46.1.5` and propose an
update, but when we do a `digest` update (which confirms whether the
current digest SHA is still what the tag is pointing to) it uses
`46.1.5` as its `newValue`.

We look for a release with that version verbatim, and because it's
missing the `v` prefix, we'll perform a failed tag lookup:

    DEBUG: github/tags.findCommitOfTag: Tag 46.1.5 not found for renovatebot/github-action
    DEBUG: Could not determine new digest for update.

As we have a `currentDigest`, this also adds a warning for the
dependency, and we'll never be able to update if the underlying tag has
moved, because we can't look up the tag's SHA.

Although we could retry the lookup with the `v` prefix, we should
instead treat this as the misconfiguration it is, and surface it more
visibly to users with a WARN log.

If we did provide a retry, this could lead to a supply chain attack
where a repository maintainer could push both a `1.2.3` and `v1.2.3` and
convince Renovate to update to a malicious version.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 14:11:16 +00:00
Michael Kriese 25d729502c fix(manager/npm): omit unresolved npmrc from extracted package files (#47258)
Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-21 12:35:24 +00:00
Michael Kriese 571a2695a8 fix(workers): keep absent registry URLs absent when detaching credentials (#47256)
Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-21 12:35:23 +00:00
Michael Kriese 06d7f7714f fix(manager/kustomize): handle helm charts without repo (#47255)
Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-21 12:35:23 +00:00
Michael Kriese dff2bd5068 refactor(util/exec): use isContainerbase from the base image package directly (#47247)
* refactor(util/exec): use isContainerbase from the base image package

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

* refactor(util/exec): read CONTAINERBASE from the process environment only

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

* refactor(util/exec): use isContainerbase from the base image package directly

Co-Authored-By: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
Co-Authored-By: Claude Sonnet 5.5 <michael.kriese+claude-code@mend.io>

---------

Co-authored-by: Claude Opus 5.5 <michael.kriese+claude-code@mend.io>
2026-10-21 11:07:04 +00:00
Jamie Tanna b4de4caa0b fix(config/validation): validate customDatasources generically (#47195)
Instead of using custom logic to validate the `customDatasources`, we
can instead validate them using our existing validation logic.

This makes sure that `format` is part of its `allowedValues`, and
`defaultRegistryUrlTemplate` and `transformTemplates` are valid
templates.

Via review of the validation code by Claude Fable 5.1.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:53:02 +00:00
Jamie Tanna a19c6bcaef fix(config): document all valid customDatasources[].formats (#47204)
As we hadn't previously documented that all of the formats were valid,
which leads to JSON schema not suggesting the options.

We don't (yet) perform config validation, but will do in the future,
which we need to know all valid options for.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:53:01 +00:00
Jamie Tanna fea23465cc fix(workers/repository/init): massage static repo config before validating (#47202)
As `validateConfig` expects massaged config, we should massage the
static repo config before we validate it, as we do for the resolved
repository config.

Otherwise, a string for an option which allows a string (i.e.
`description: "static"`) is reported as invalid, which then logs a
validation issue that the user can't do anything about.

We only massage the config for validation, so the config that is
returned is unchanged.

Via review of the validation code by Claude Fable 5.1.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:53:00 +00:00
Jamie Tanna 2a3a481e4d fix(workers/repository/init): massage inherited config before validating (#47201)
As `validateConfig` expects massaged config, we should massage the
inherited config - both as it's read, and once its presets have been
resolved - before we validate it, as we do for the repository config.

Otherwise, a string for an option which allows a string (i.e.
`description: "shared"`) is reported as invalid, which fails the run.

We only massage the config for validation, so the config that is merged
is unchanged.

Via review of the validation code by Claude Fable 5.1.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:52:59 +00:00
Jamie Tanna de17a09413 test(workers/repository/init): document validation of unmassaged config (#47200)
As part of follow-up changes, we'll fix this, but should have existing
test coverage first.

`validateConfig` expects massaged config (i.e. where an option that
`allowString`s has had its string converted to a list), but neither the
inherited config nor the static repo config are massaged before being
validated.

This means that a string for an option which allows a string, such as
`description: "shared"`, is reported as `should be a list (Array)`.

For an inherited config that leads to a failed Renovate run, and for a
static repo config it logs a validation issue that the user can't do
anything about.

In practice, this doesn't seem to impact too many users, but we should
make sure that this is stricter.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:52:58 +00:00
Jamie Tanna e49ca6adbf fix(config/validation): validate the entries of arrays of strings (#47194)
To make sure that we provide feedback when an option which is a list of
strings (`subType: 'string'`) contains an entry that isn't a string,
i.e. `schedule: [1]`, or `transformTemplates: [{}]`, as we previously
only checked that the value was an array.

Some options (`extends` and `commitTrailers`) already report their
invalid entries with a more specific message, so we skip those.

As we now check the entries of `mergeConfidenceDatasources` in the same
way, the `[1]` in its test is now reported, which had been reported by
a (since removed) custom check.

Via review of the validation code by Claude Fable 5.1.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:52:57 +00:00
Jamie Tanna e6cdac8ee2 fix(config/validation): remove custom validation for allowedValues (#43833)
Instead of using custom code to handle this for a subset of options, we
can instead make sure that we're using the shared
`validateAllowedValues` function.

Although this does reduce some of the more human-readable custom worded
messages, this keeps things more consistent and scalable as options are
added.

This also removes the checks for `enabledManagers` ("not supported")
and `customType` ("is not a custom manager"), which are now reported
twice: once by the shared function, and once by the custom check.

Via review of the validation code by Claude Fable 5.1.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:52:56 +00:00
Jamie Tanna e5ae141a90 fix(config/validation): validate allowedValues for arrays (#39076)
To make sure that we provide faster feedback for users, we should
validate that for options that have an `allowedValues` set, we validate
the option according to the value.

We also need to:

- handle a single option value
- handle an array of option values
- handle when a default (`null`) option is used, as that won't match
  `allowedValues`
- handle when a `supportsTemplating` config option is used alongside
  `allowedValues`, but only skip validating the value when it contains
  `{{`, as that's when it's templated. Otherwise it can be validated as
  any other value
- add a special case to handle `packageRule.versioning` differently, as
  it may have a `regex:` value which isn't technically in the
  `allowedValues`

For options with a large number of `allowedValues` (i.e.
`enabledManagers` or `postUpdateOptions`), listing all of them makes for
an unreadable message, so we link to the documentation instead.

This adds a number of extra errors for some validation that is already
happening for specific options' values, which we'll follow-up and remove
the duplication for.

This also makes sure that we validate this for both repository config
and global config, which means an invalid `reportType` is now reported.

Via review of the validation code by Claude Fable 5.1.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 10:52:55 +00:00
renovate[bot] 2e55bee7c5 feat(deps): update renovate-base-image to v13.138.1 (main) (#47245)
feat(deps): update renovate-base-image to v13.138.1

| datasource | package                        | from     | to       |
| ---------- | ------------------------------ | -------- | -------- |
| npm        | @renovatebot/base-image        | 13.137.0 | 13.138.1 |
| docker     | ghcr.io/renovatebot/base-image | 13.137.0 | 13.138.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-10-21 07:22:00 +00:00
Jamie Tanna ba2398930f fix(config/validation): don't throw for invalid types of enabledManagers and schedule (#47193)
We don't currently check that the option's value is an array of strings,
which leads to i.e.

    Uncaught TypeError: "nope".filter is not a function

Via review of the validation code by Claude Fable 5.1, which fuzzed
every option with values of the wrong type, and found only these two
options throw.

Co-authored-by: Claude Sonnet 5.5 <jamie.tanna+claude-code@mend.io>
2026-10-21 06:54:44 +00:00