Commit Graph

14403 Commits

Author SHA1 Message Date
renovate[bot] 619b832be5 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.72.2 (main) (#44467)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.72.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.72.0 | 13.72.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-09 23:52:36 +00:00
renovate[bot] 7e1122f89b feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.72.2 (main) (#44463)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.72.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.71.9 | 13.72.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-09 23:26:52 +00:00
Robert Waffen 54407b683d fix(datasource/puppet-forge): filter out deleted forge releases so that they don't count as updates anymore (#43906)
* fix(datasource/puppet-forge): filter out deleted forge releases so that they don't count as updates anymore

Signed-off-by: Robert Waffen <rw@betadots.de>

* Update lib/modules/datasource/puppet-forge/schema.ts

Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>

* Update lib/modules/datasource/puppet-forge/schema.ts

Co-authored-by: Michael Kriese <michael.kriese@gmx.de>

* fix: add missing import for isTruthy

Signed-off-by: Robert Waffen <rw@betadots.de>
Co-authored-by: ChatGPT Codex <codex@openai.com>

* fix: uses Nullish zod helper

Signed-off-by: Robert Waffen <rw@betadots.de>
Co-authored-by: ChatGPT Codex <codex@openai.com>

---------

Signed-off-by: Robert Waffen <rw@betadots.de>
Co-authored-by: RahulGautamSingh <rahultesnik@gmail.com>
Co-authored-by: Michael Kriese <michael.kriese@gmx.de>
Co-authored-by: ChatGPT Codex <codex@openai.com>
2026-07-09 19:18:43 +00:00
renovate[bot] cca3cb915d fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.9 (main) (#44454)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.9

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.71.8 | 13.71.9 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-09 16:34:43 +00:00
renovate[bot] 4a38e4ae94 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.8 (main) (#44437)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.8

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.71.6 | 13.71.8 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-09 08:31:11 +00:00
Ignacio Calderon 191cf7c1cf feat(manager/mint): add support for fully qualified urls for Mint packages (#44305)
* feat: add support for fully qualified urls for Mint packages

* address http ambiguity

* increase coverage
2026-07-08 12:25:54 +00:00
renovate[bot] 399c163baf fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.6 (main) (#44404)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.6

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.71.4 | 13.71.6 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-07 19:39:33 +00:00
Zack Kanter 371412d4c1 fix(datasource/npm): require public Cache-Control to cache responses (#42822)
* fix(datasource/npm): require public Cache-Control to cache responses

The npm datasource opts out of the authorization-header privacy check
(checkAuthorizationHeader: false) and relies on Cache-Control alone to
classify responses. Previously, when a registry omitted Cache-Control
entirely, cacheAllowed fell through to "cache it" — so private packages
served by GitHub Packages (which sends no Cache-Control header) were
cached in the shared package cache.

Flip the semantic of checkCacheControlHeader: true to require an
affirmative Cache-Control: public signal. Missing or non-public headers
now disallow caching. registry.npmjs.org is unaffected because it
already sends Cache-Control: public, max-age=...

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* fix(cache): avoid renewing disallowed package cache on 304

* Revert "fix(cache): avoid renewing disallowed package cache on 304"

This reverts commit 64801bb036269352465aac580b9861c5b7716cc1.
2026-07-07 19:27:47 +00:00
Ethan Setnik 8a8f830da3 fix(datasource/repology): honor abortOnError instead of aborting the run on every error (#44326)
* fix(datasource/repology): honor abortOnError instead of aborting the run on every error

* fix(datasource/repology): dedupe unexpected-error warning with logger.once

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FfPmUMCN5G5sFXa5oigWei

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 19:18:41 +00:00
Sebastian Poxhofer ad0b59f8b7 refactor(oxlint): enable vitest/require-to-throw-message (#44421) 2026-07-07 17:47:04 +00:00
Sebastian Poxhofer a1e8441de3 refactor(oxlint): enable vitest/no-conditional-expect (#44416)
Make the `checkKeysSorted` first-keys assertion unconditional by
defaulting the expected prefix to an empty array, so `expect` is no
longer nested inside an `if`.

Part of #43845

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 16:52:54 +00:00
Sebastian Poxhofer b106668a95 refactor(oxlint): enable typescript/no-useless-default-assignment (#44419)
- Convert `param: T | undefined = undefined` to optional `param?: T`.
- Drop dead `= false` defaults on the required cache-provider options.
- Make `GraphqlPaginatedContent.nodes/edges` optional so the `= []`
  fallbacks (load-bearing for partial GraphQL connections) are valid.
- Type the unchecked `default_branch` response field as optional so
  the `'HEAD'` fallback is retained.
- Drop `tag = undefined` from the Forgejo/Gitea/GitLab preset configs.

Part of #43845

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 16:38:48 +00:00
Sebastian Poxhofer aac8365dd6 refactor(oxlint): enable vitest/prefer-snapshot-hint (#44420)
Add distinct hints to the multi-snapshot tests flagged by the rule
and regenerate the affected snapshot files, then re-enable the rule.

Part of #43845

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-07 16:35:22 +00:00
Michele Mancioppi c759c308af feat(replacements): corentinmusard/otel-cicd-action transferred to dash0hq (#44386)
* feat(presets): add replacement for corentinmusard/otel-cicd-action

The repository was transferred to dash0hq/otel-cicd-action:
https://github.com/dash0hq/otel-cicd-action

The old path https://github.com/corentinmusard/otel-cicd-action redirects
to the new location.

* feat(presets): also match the github-releases datasource
2026-07-07 13:04:56 +00:00
Sergei Zharinov 9b8dfd6259 feat(versioning): Add Paket versioning (#44366)
* feat(versioning): add paket versioning

* docs(versioning): use JSDoc for paket function comments
2026-07-07 10:28:20 +00:00
renovate[bot] bf46988fd7 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.5 (main) (#44402)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.71.2 | 13.71.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-07 08:35:44 +00:00
renovate[bot] b18cff0be1 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.2 (main) (#44400)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.71.1 | 13.71.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-07 03:33:49 +00:00
renovate[bot] 345eb15b26 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.1 (main) (#44399)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.71.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.70.1 | 13.71.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-07 01:35:21 +00:00
renovate[bot] d893930994 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.70.1 (main) (#44384)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.70.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.70.0 | 13.70.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 11:36:48 +00:00
Tobias Schlatter a80e811696 fix(npm): do not fail on version-only replacements (#44380) 2026-07-06 10:07:03 +00:00
renovate[bot] 59e96e1cf3 docs: update references to astral-sh/setup-uv to v8.3.0 (main) (#44373)
docs: update references to astral-sh/setup-uv to v8.3.0

| datasource  | package            | from   | to     |
| ----------- | ------------------ | ------ | ------ |
| github-tags | astral-sh/setup-uv | v8.2.0 | v8.3.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 00:31:51 +00:00
renovate[bot] 8992670558 docs: update references to python to 09b29c3 (main) (#44372)
docs: update references to python to 09b29c3

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-06 00:30:55 +00:00
github-actions[bot] 3373ac7ddf feat(data): automatic update of static data (#44367)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-07-05 06:33:55 +00:00
Chickenhen 834fd2ef75 fix(terraform): strictly strip ".git" suffix from source URLs (#44350) 2026-07-03 10:11:45 +00:00
RahulGautamSingh cb9a5ae71b fix(versioning/debian): keep numeric value on dated codename update (#44335) 2026-07-03 06:28:13 +00:00
renovate[bot] c2964c651a feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.70.0 (main) (#44351)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.70.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.69.5 | 13.70.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-02 18:31:05 +00:00
Sebastian Poxhofer a84fb3de11 feat(manager/github-actions): support parallel steps (#44341) 2026-07-02 13:44:38 +00:00
Michael Kriese d8e82a2412 fix(manager/custom/jsonata): handle evaluation errors (#44340) 2026-07-02 10:37:04 +00:00
Michael Kriese 289e2d2028 fix(git): allow overriding GIT_ASKPASS (#44322)
* fix(git): allow overriding `GIT_ASKPASS`

* fix: drop experimental options

* test: fix tests
2026-07-02 08:22:40 +00:00
Mattias Karlsson 5d9e0b82b5 fix(manager/nuget): detect MSBuild SDK updates in sqlproj files (#43831)
* fix(manager/nuget): detect MSBuild SDK updates in sqlproj files

MSBuild SDK versions in `<Sdk>`, `<Import Sdk>`, and `<Project Sdk>`
elements are exact pins, but NuGet versioning treats bare versions as
minimum ranges (`>=`). That caused dependencies such as
`0.1.19-preview` to resolve to the latest release and skip updates.

Apply hybrid versioning to all `msbuild-sdk` dependencies at extract
time: use strict `semver` when the pin is valid semver, otherwise fall
back to `semver-coerced` for non-standard NuGet version strings (e.g.
four-segment revisions). Also add `.sqlproj` to the default manager
file patterns for SSDT SQL projects.

Changes:
- Add `applyMsbuildSdkVersioning()` helper and wire it through all
  msbuild-sdk extract paths (XML, global.json, single-csharp-file)
- Extend `managerFilePatterns` to match `.sqlproj` files
- Add extract, util, index, and integration tests
- Document `.sqlproj` and MSBuild SDK extraction in nuget docs/readme

* fix(manager/nuget): use bump range strategy for msbuild-sdk deps

Replace hybrid semver versioning for MSBuild SDK pins with a default
package rule (`matchDepTypes: msbuild-sdk`, `rangeStrategy: bump`) per
review feedback. Remove `applyMsbuildSdkVersioning()` from all extract
paths and update tests accordingly. Sort nuget doc file extensions
alphabetically.
2026-07-02 05:13:47 +00:00
renovate[bot] 5c0df3f380 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.5 (main) (#44336)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.69.4 | 13.69.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-02 05:09:27 +00:00
renovate[bot] 62b2825afc fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.5 (main) (#44333)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.5

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.69.3 | 13.69.5 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-07-02 00:24:30 +00:00
Florian Schwalm 5ddd565c4e fix(deno): lockfile update in presence of private registries (#43147)
* fix: deno lockfile update in presence of private registries

Renovate was unable to update the lockfile when updating packages from
public registries if any packages from private registries were
referenced in the package file.

This commit fixes this by processing host rules and configuring the
`deno install` invocation for those private registries.

Note that this still doesn't mean support for updating packages from
private registries, it just unblocks lockfile updates in projects where
private registries are used in parallel to public registries.

* fixup! fix: deno lockfile update in presence of private registries
2026-07-01 16:55:10 +00:00
Sebastian Poxhofer 63527b66d0 refactor(utils/http/github): use zod schema for GitHub errors (#44267) 2026-07-01 14:38:10 +00:00
Taku Kodama 333ace1fcf fix(manager/mise): install resolver tools during mise lock (#44174)
* fix(manager/mise): install resolver tools during mise lock

When binarySource=install, Containerbase only installs tools listed in
toolConstraints. mise lock can invoke npm, go, and gem CLIs while
resolving versions for those backends, but Renovate previously only
installed mise itself.

* fix(manager/mise): use go constraint for golang resolver

* test(manager/mise): remove redundant resolver constraint test

* test(manager/mise): cover resolver tool dynamic installs

* test(manager/mise): cover unconstrained resolver lock updates

* Update lib/modules/manager/mise/artifacts.ts

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>

* style(manager/mise): fix prettier whitespace in JSDoc comment

* test(manager/mise): clarify what happens with no `constraints`

* chore(manager/mise): update JsDoc

---------

Co-authored-by: Jamie Tanna <github@jamietanna.co.uk>
Co-authored-by: Jamie Tanna <jamie.tanna@mend.io>
2026-06-30 21:20:47 +00:00
renovate[bot] 04bf2f7af0 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.3 (main) (#44309)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.3

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.69.1 | 13.69.3 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-30 16:32:34 +00:00
renovate[bot] ffe66e3681 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.1 (main) (#44300)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.69.0 | 13.69.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-30 10:34:35 +00:00
Sergei Zharinov 9ad78755c5 feat(cache): use binary envelopes for package cache writes (#43922)
* feat(cache): use binary envelopes for package cache writes

* feat(cache): upgrade legacy file cache entries to envelopes on read

The file backend's cleanup decides what to keep from cacache index metadata
alone, so legacy entries (which store expiry inside the payload) would all be
purged on the first sweep after upgrade, cooling the cache.

Add a best-effort `upgradeLegacyEntry` hook on the base class, overridden only
by the file backend, that rewrites a still-valid legacy entry as an envelope
with the same expiry when it is read. The working set converts itself during the
run, so it survives cleanup. Redis and SQLite govern expiry natively and inherit
the no-op default.
2026-06-29 21:08:19 +00:00
renovate[bot] b9e7f04900 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.0 (main) (#44290)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.69.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.68.2 | 13.69.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-29 15:42:24 +00:00
Sergei Zharinov 5d7903979a feat(versioning/node): support Semver pre-release versions for Node 27 (#44281) 2026-06-29 08:15:30 +00:00
renovate[bot] a1669f3ba7 docs: update references to python to 5c48543 (main) (#44279)
docs: update references to python to 5c48543

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-29 00:32:57 +00:00
github-actions[bot] 27b87854df feat(data): automatic update of static data (#44274)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-06-28 14:13:27 +00:00
Jamie Tanna bcd44b991f feat(onboarding): add a summary for detected package files (#44258)
* refactor(onboarding): extract a function for calculating packageFiles

As part of a future change, we'll introduce a "summary" view for larger
repositories, and having a function extracted makes intent clearer.

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

* refactor(onboarding): add a summary for detected package files

As part of future changes in #41502, we're introducing a
Platform-limit-aware onboarding/reconfigure flow that will provide a
summary where appropriate.

Before we do so, we can introduce the new functionality - but not
integrate it right now - to incrementally add support.

As a slightly better interface when we have a large list of detected
package files, we can provide a summary per Manager.

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

* refactor(onboarding): group 3+ files under a directory as a list

As it's a more readable summary, especially with i.e. GitHub Actions,
where all package files commonly share the same directory.

The use of `3` as the lower bound was chosen without any research or too much
thought put into it.

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

---------

Co-authored-by: Claude Sonnet 4.6 <jamie.tanna+claude-code@mend.io>
2026-06-27 15:14:00 +00:00
renovate[bot] f30fdc63f0 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.68.2 (main) (#44270)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.68.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.68.1 | 13.68.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-27 02:27:30 +00:00
Sebastian Poxhofer a5393774a2 fix(http/github): handle Github got errors containing falsely an object (#44259)
* fix(http/github): handle Github got errors containing falsely an object

* test: improve test naming
2026-06-26 16:38:44 +00:00
renovate[bot] cced14c769 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.68.1 (main) (#44261)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.68.1

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.68.0 | 13.68.1 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-26 16:33:41 +00:00
Sebastian Poxhofer 1e43d46756 fix(schema-utils): support for GitHub bot style email addresses (#44249) 2026-06-26 12:43:10 +00:00
renovate[bot] 8f38e3a1c0 feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.68.0 (main) (#44250)
feat(deps): update ghcr.io/renovatebot/base-image docker tag to v13.68.0

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.67.2 | 13.68.0 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-26 11:34:31 +00:00
renovate[bot] f387cbebd6 fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.67.2 (main) (#44241)
fix(deps): update ghcr.io/renovatebot/base-image docker tag to v13.67.2

| datasource | package                        | from    | to      |
| ---------- | ------------------------------ | ------- | ------- |
| docker     | ghcr.io/renovatebot/base-image | 13.67.1 | 13.67.2 |

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-06-26 00:28:43 +00:00
Tobias Bieniek b84a54cda7 fix(datasource/crate): tolerate null metadata fields (#44227)
* fix(datasource/crate): tolerate null metadata fields

crates.io returns `null` for unset crate metadata fields. `z.string().optional()`
rejects `null`, so a single null field (e.g. `documentation` on the `sentry` crate)
failed the whole metadata parse and discarded the valid `repository`, leaving
`sourceUrl` unset and breaking monorepo grouping. Use `.nullish()` so null fields
are tolerated.

* datasource/crate: Use `Nullish()` for metadata

* datasource/crate: Use `sentry` for null metadata test

* datasource/crate: Use `DeepNullish()` for metadata
2026-06-25 15:21:39 +00:00