Compare commits

...
Author SHA1 Message Date
Yusufhan Sacak
d1dcaf3fb3
fix(publisher): tolerate transient device-flow failures during login polling (#1588)
Some checks failed
CI Pipeline / Build, Lint, and Validate (push) Has been cancelled
CI Pipeline / Tests (push) Has been cancelled
Deploy to Staging / Build and Push Image with ko (push) Has been cancelled
Deploy to Staging / Deploy to Staging (push) Has been cancelled
Follow-up to my analysis on #1543.

Heads up on the shape first: this builds on #1290's poll-loop seams and
github wont let me target a fork branch, so the diff shows its two
commits too. Review only the last commit, the first two are #1290
unchanged, credit to @developer-ishan. Happy to rebase whichever way
#1290 goes, or split differently if that's easier to review.

What it does. pollForToken treats every non-pending answer as terminal,
so one flaky response kills a login the user may already have approved
in the browser. This spends a small grace budget (2 polls) on
incorrect_device_code before giving up, retries 5xx with a growing
backoff, and returns status plus body on other non-200s instead of dying
inside json.Unmarshal on an html error page. Terminal errors now carry
error_description and error_uri, and a timeout that happens after
polling recovered reports a plain timeout, not a stale error from
minutes earlier.

Also honours the interval and expires_in GitHub returns with the device
code (RFC 8628 3.2) instead of hardcoding 5/900, clamped (60s / 3600s)
so a misbehaving response can't stall the CLI or overflow the duration
math.

One thing I changed my mind on from the issue comment: I wrote there
that the client should wait one interval before the first poll. Dropped
that. My own repro test showed 40s of clean polling before authorize, so
the propagation theory doesn't hold, and the grace retry covers the same
window without taxing every fast login. First poll stays immediate,
pinned by a test.

Root cause note: I can't prove the GitHub-side race (cli/cli#9302 is the
same error class but was closed on an unconfirmed "platform race"). So
this isn't claimed as a root-cause fix, it makes the login recoverable
if the condition is transient and diagnosable if it isn't. Btw
incorrect_device_code is a GitHub extension, not an RFC 8628 3.5 code,
so there's no spec retry semantic being violated by the grace polls.

## Test

12 new tests in github_at_device_flow_internal_test.go, all green with
-race (33 in the package). #1290's four tests pass unmodified.
golangci-lint clean in the touched files under both v2.11.4 (this
branch's CI pin) and v2.13.1 (what main pins now).

## AI Disclosure

AI assistance (Claude) was used for issue research and during
development. All changes were reviewed and tested by the author.

Fixes #1543

---------

Co-authored-by: developer-ishan <igupta@groupon.com>
Co-authored-by: Ishan Gupta <62565307+developer-ishan@users.noreply.github.com>
Co-authored-by: developer-ishan <guptaishan849@gmail.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-09-16 18:42:30 +03:00
Ishan Gupta
73aebc1526
fix(publisher): treat GitHub device-flow slow_down as retriable (#1290)
## Summary

- Handle GitHub's OAuth device-flow `slow_down` response per [RFC 8628
§3.5](https://datatracker.ietf.org/doc/html/rfc8628#section-3.5) — treat
it as retriable and bump the polling interval by 5 seconds, instead of
bailing with a fatal error.

Fixes #1289.

## Why

`pollForToken` in `cmd/publisher/auth/github-at.go` only treats
`authorization_pending` as retriable. Every other response from GitHub's
token endpoint — including the non-terminal `slow_down` signal — falls
through to:

```go
return "", fmt.Errorf("token request failed: %s", tokenResp.Error)
```

So users hitting GitHub's polling rate-limit get:

```
Error: login failed: error polling for token: token request failed: slow_down
```

…and have to re-run `mcp-publisher login github` from scratch, which is
especially painful because `slow_down` is more likely when the user
takes more than a few seconds to enter and authorize the device code.

Per RFC 8628 §3.5, `slow_down` is defined as:

> A variant of "authorization_pending", the authorization request is
still pending and polling should continue, but the interval MUST be
increased by 5 seconds for this and all subsequent requests.

## Change

Treat `slow_down` the same as `authorization_pending` but increase
`interval` by 5 seconds before sleeping, matching the RFC exactly.

A possible follow-up (not in this PR, to keep the diff minimal): seed
the initial `interval` from `DeviceCodeResponse.Interval` (already
parsed but currently unused) instead of hardcoding `5`. Happy to do that
here or as a separate PR if preferred.

## Test plan

- [x] `go build ./cmd/publisher/...` — clean
- [x] `go test ./cmd/publisher/auth/...` — passes
- [x] `gofmt -d` and `go vet ./cmd/publisher/auth/...` — clean
- [ ] CI `make check` (lint + integration tests)

I could not exercise `pollForToken` from a unit test without refactoring
`GitHubAccessTokenURL` to be injectable, which felt out of scope for a
bug-fix PR. Glad to add that refactor + a table-driven test for
`authorization_pending` / `slow_down` / fatal errors in a follow-up if
maintainers want it.

---------

Co-authored-by: developer-ishan <igupta@groupon.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-09-16 18:14:51 +03:00
dependabot[bot]
cabf0607b6
build(deps): bump google.golang.org/grpc from 1.83.1 to 1.83.2 in /deploy (#1630)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.83.1 to 1.83.2.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.83.2</h2>
<h1>Security</h1>
<ul>
<li>server: Reject requests missing both <code>:authority</code> and
<code>Host</code> headers with HTTP 400 and status
<code>Internal</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/pull/9365">grpc/grpc-go#9365</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/winklemad"><code>@​winklemad</code></a></li>
</ul>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="030ee8becb"><code>030ee8b</code></a>
Update version to 1.83.2 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9375">#9375</a>)</li>
<li><a
href="8668b69c16"><code>8668b69</code></a>
cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/9365">#9365</a> to
v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9366">#9366</a>)</li>
<li><a
href="a3e952d2b7"><code>a3e952d</code></a>
cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/9346">#9346</a> to
v1.83.x and update x/net dependency (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9369">#9369</a>)</li>
<li><a
href="58f8fd9a00"><code>58f8fd9</code></a>
Change version to 1.83.2-dev (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9337">#9337</a>)</li>
<li>See full diff in <a
href="https://github.com/grpc/grpc-go/compare/v1.83.1...v1.83.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.83.1&new-version=1.83.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/registry/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 18:02:08 +03:00
dependabot[bot]
c7411aeaba
build(deps): bump the go-dependencies group with 2 updates (#1634)
Bumps the go-dependencies group with 2 updates:
[github.com/google/go-containerregistry](https://github.com/google/go-containerregistry)
and [golang.org/x/mod](https://github.com/golang/mod).

Updates `github.com/google/go-containerregistry` from 0.22.0 to 0.22.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/go-containerregistry/releases">github.com/google/go-containerregistry's
releases</a>.</em></p>
<blockquote>
<h2>v0.22.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Reject non-canonical IP literals in all SSRF guards by <a
href="https://github.com/shaggyinsomniac"><code>@​shaggyinsomniac</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2426">google/go-containerregistry#2426</a></li>
<li>daemon: fix stale docker/docker reference in WithClient docs by <a
href="https://github.com/BobDu"><code>@​BobDu</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2428">google/go-containerregistry#2428</a></li>
<li>build(deps): bump the go-deps group across 2 directories with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2422">google/go-containerregistry#2422</a></li>
<li>authn: do not overwrite AuthConfig.Auth when username and password
are empty by <a
href="https://github.com/nileshpatil6"><code>@​nileshpatil6</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2420">google/go-containerregistry#2420</a></li>
<li>build(deps): bump the actions group across 1 directory with 8
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2423">google/go-containerregistry#2423</a></li>
<li>Support pulling images by sha512 digest by <a
href="https://github.com/BobDu"><code>@​BobDu</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2427">google/go-containerregistry#2427</a></li>
<li>Allow empty label and annotation values in crane mutate by <a
href="https://github.com/theadsingh"><code>@​theadsingh</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2418">google/go-containerregistry#2418</a></li>
<li>fix(build): Use dependencies.gitSource in cloudbuild_v2.yaml by <a
href="https://github.com/tprussak"><code>@​tprussak</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2434">google/go-containerregistry#2434</a></li>
<li>validate: support index attestation manifests and empty configs by
<a href="https://github.com/Subserial"><code>@​Subserial</code></a> in
<a
href="https://redirect.github.com/google/go-containerregistry/pull/2414">google/go-containerregistry#2414</a></li>
<li>name: improve error when parsing a reference with a URL scheme by <a
href="https://github.com/locker95"><code>@​locker95</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2431">google/go-containerregistry#2431</a></li>
<li>fix(build): install binaries to /ko-app and add to PATH (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2424">#2424</a>)
by <a href="https://github.com/tprussak"><code>@​tprussak</code></a> in
<a
href="https://redirect.github.com/google/go-containerregistry/pull/2436">google/go-containerregistry#2436</a></li>
<li>fix(release): honor declared Go toolchain by <a
href="https://github.com/rksharma-owg"><code>@​rksharma-owg</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2435">google/go-containerregistry#2435</a></li>
<li>remote: apply checkRedirectSSRF to writer-side HTTP clients by <a
href="https://github.com/locker95"><code>@​locker95</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2432">google/go-containerregistry#2432</a></li>
<li>flatten: preserve config and layer media types when flattening by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2438">google/go-containerregistry#2438</a></li>
<li>fix(mutate): make Time layer updates lazy by <a
href="https://github.com/amarkdotdev"><code>@​amarkdotdev</code></a> in
<a
href="https://redirect.github.com/google/go-containerregistry/pull/2429">google/go-containerregistry#2429</a></li>
<li>build(deps): bump the go-deps group across 2 directories with 3
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2439">google/go-containerregistry#2439</a></li>
<li>remote: copy manifest annotations to referrers fallback tag
descriptors by <a
href="https://github.com/codysoyland"><code>@​codysoyland</code></a> in
<a
href="https://redirect.github.com/google/go-containerregistry/pull/2441">google/go-containerregistry#2441</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/shaggyinsomniac"><code>@​shaggyinsomniac</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2426">google/go-containerregistry#2426</a></li>
<li><a href="https://github.com/BobDu"><code>@​BobDu</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2428">google/go-containerregistry#2428</a></li>
<li><a
href="https://github.com/nileshpatil6"><code>@​nileshpatil6</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2420">google/go-containerregistry#2420</a></li>
<li><a
href="https://github.com/theadsingh"><code>@​theadsingh</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2418">google/go-containerregistry#2418</a></li>
<li><a href="https://github.com/locker95"><code>@​locker95</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2431">google/go-containerregistry#2431</a></li>
<li><a
href="https://github.com/rksharma-owg"><code>@​rksharma-owg</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2435">google/go-containerregistry#2435</a></li>
<li><a
href="https://github.com/codysoyland"><code>@​codysoyland</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2441">google/go-containerregistry#2441</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/go-containerregistry/compare/v0.22.0...v0.22.1">https://github.com/google/go-containerregistry/compare/v0.22.0...v0.22.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8a72a424fd"><code>8a72a42</code></a>
remote: copy manifest annotations to referrers fallback tag descriptors
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2441">#2441</a>)</li>
<li><a
href="5765c35e18"><code>5765c35</code></a>
build(deps): bump the go-deps group across 2 directories with 3 updates
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2439">#2439</a>)</li>
<li><a
href="969402f936"><code>969402f</code></a>
fix(mutate): make Time layer updates lazy (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2429">#2429</a>)</li>
<li><a
href="25c682edd9"><code>25c682e</code></a>
flatten: preserve config and layer media types when flattening (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2438">#2438</a>)</li>
<li><a
href="79af990692"><code>79af990</code></a>
remote: add SSRF redirect protection to writer-side HTTP clients (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2432">#2432</a>)</li>
<li><a
href="4b9b3c7e30"><code>4b9b3c7</code></a>
fix(release): honor declared Go toolchain (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2435">#2435</a>)</li>
<li><a
href="e033b9cb1f"><code>e033b9c</code></a>
fix(build): install binaries to /ko-app and add to PATH (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2424">#2424</a>)
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2436">#2436</a>)</li>
<li><a
href="8bd7902fc8"><code>8bd7902</code></a>
name: return a helpful error when a reference contains a URL scheme (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2431">#2431</a>)</li>
<li><a
href="163134d628"><code>163134d</code></a>
validate: support index attestation manifests and empty configs (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2414">#2414</a>)</li>
<li><a
href="44f7ea307e"><code>44f7ea3</code></a>
fix(build): Use dependencies.gitSource in cloudbuild_v2.yaml (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2434">#2434</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/google/go-containerregistry/compare/v0.22.0...v0.22.1">compare
view</a></li>
</ul>
</details>
<br />

Updates `golang.org/x/mod` from 0.40.0 to 0.41.0
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d0a27b2d4a"><code>d0a27b2</code></a>
modfile: fix Cleanup and DropTool documentation</li>
<li><a
href="d12008c62d"><code>d12008c</code></a>
all: upgrade go directive to at least 1.26.0 [generated]</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.40.0...v0.41.0">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-16 18:01:34 +03:00
Radoslav Dimitrov
739b70e8bc
fix: fail safely in registry admin scripts (#1622)
The takedown script previously treated any nonempty `ALL_VERSIONS`
value, including `false`, as permission to delete every version. Require
exactly `true` when the variable is set, and reject other values before
sending a request.

Enable strict shell error handling in the auth helper so a failed
identity-token command stops execution before exchanging an empty token.

Validation: `bash -n` and `git diff --check` passed. Mocked command
checks confirmed that `false`, `1`, and `TRUE` are rejected before
network access, and that identity-token retrieval failure stops before
the token exchange. The updated scripts also completed the authorized
takedown associated with #1563; public API reads confirmed the deleted
record and removal from default results.
2026-09-06 01:13:09 +03:00
Jeff Wainwright
dd4b2939e3
test: isolates temp test fixtures (#1569)
## Motivation and Context

Replace shared temp paths with `t.TempDir()`` so each test gets its own
cleanup-scoped directory.
- This avoids leftover files and cross-test interference. No production
code changed.

## How Has This Been Tested?

GitHub CI passed.
- https://github.com/yowainwright/registry/pull/1

## Breaking Changes

No breaking changes; just tests.

## Types of changes

- [x] chore

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed

## Additional context

Small test-only cleanup. No production code paths are changed.

Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-09-06 00:31:12 +03:00
Radoslav Dimitrov
068a97a2f8
fix: identify submitted server version in publish diagnostics (#1621)
Publishing a manifest with a stale version currently produces a
duplicate-version error without identifying the version that was
submitted. This made a request containing `0.4.5` look like a rejected
publication of `0.4.6` in #1615.

Include the submitted `name@version` in the CLI output before sending
the request and in the API duplicate-version error. HTTP 400, the
response structure, and duplicate-rejection behavior remain unchanged.
The service wraps the existing error sentinel so `errors.Is` continues
to work.

Adds a CLI regression test for a failed publication and updates the API
duplicate-error assertion.

Validation:
- Publish command tests passed (`go test ./cmd/publisher/commands -run
TestPublishCommand -count=1`).
- `git diff --check` passed.
- API endpoint tests were attempted but could not run because PostgreSQL
was unavailable on localhost:5432; Docker was also unavailable locally.

Related to #1615.
2026-09-06 00:18:27 +03:00
Radoslav Dimitrov
d3fbdc61ce
ci: detect more invalid server publish paths (#1620)
## Summary

- detect publish attempts under `data/data/servers/`
- detect server-looking JSON files directly under `data/`
- keep the stage-one and privileged stage-two classifiers in sync

## Testing

- verified both new patterns against PRs #1600 and #1589
- verified ordinary files such as `data/example.json` remain unmatched
- ran `git diff --check`
2026-09-05 22:48:16 +03:00
Nikolife2016
5271ba5075
docs: add PulseFeed MCP Drift Watch to community projects (#1581)
One line in `docs/community-projects.md` under **Other**, following the
format in *Adding Your Project*.

**What it is.** A daily external diff of the whole registry population —
25,122 entries as of today — recording what changed in a server *after*
it was listed rather than whether it is safe right now: package
ownership transferred, an install script added in a later version,
repository link removed, package unpublished, a removed name republished
by someone else.

**Why the distinction matters.** A rug pull is clean at review time by
construction: the package collects installs for weeks, then ships the
patch. Detecting that needs yesterday's snapshot to exist, which is why
the series starts on 2026-07-30 and cannot be reconstructed after the
fact. The registry's own moderation policy notes it relies on downstream
consumers for this kind of check.

**Free, no key, no account:** JSON and RSS feeds filterable to your own
package list, a README badge, and webhook alerts. Every day's manifest
of dataset digests is timestamped into Bitcoin via OpenTimestamps, so
the series can be shown to have existed on a given date by anyone,
without trusting us.

Placed next to `polygraph` as the nearest precedent for an independent
security project in this list. All links in the entry were checked
before opening this PR. Nothing else in the file is touched.
2026-09-05 22:47:31 +03:00
Koichi ITO
974a523857
docs: carry two modelcontextprotocol.io fixes back upstream (#1590)
Both were already fixed on https://modelcontextprotocol.io; this copy is
behind.

- `faq.mdx`: capitalize PyPI correctly in the abuse reporting steps.
https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3153
- `remote-servers.mdx`: recommend Streamable HTTP and link the
deprecated features page. The 2026-07-28 draft reclassifies the HTTP+SSE
transport as deprecated under the feature lifecycle policy, so SSE
should no longer be presented as an equal option.
https://github.com/modelcontextprotocol/modelcontextprotocol/pull/3064

## Types of changes
<!-- What types of changes does your code introduce? Put an `x` in all
the boxes that apply: -->
- [ ] Bug fix (non-breaking change which fixes an issue)
- [ ] New feature (non-breaking change which adds functionality)
- [ ] Breaking change (fix or feature that would cause existing
functionality to change)
- [x] Documentation update

## Checklist
<!-- Go over all the following points, and put an `x` in all the boxes
that apply. -->
- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
- [x] My code follows the repository's style guidelines
- [x] New and existing tests pass locally
- [x] I have added appropriate error handling
- [x] I have added or updated documentation as needed
2026-09-05 22:45:05 +03:00
dependabot[bot]
1d1eb91e51
build(deps): bump github.com/coreos/go-oidc/v3 from 3.20.0 to 3.21.0 in the go-dependencies group (#1619)
Bumps the go-dependencies group with 1 update:
[github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc).

Updates `github.com/coreos/go-oidc/v3` from 3.20.0 to 3.21.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coreos/go-oidc/releases">github.com/coreos/go-oidc/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.21.0</h2>
<h2>What's Changed</h2>
<ul>
<li>oidc: ignore JWKs with unsupported key types rather than failing by
<a href="https://github.com/nicoske"><code>@​nicoske</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/499">coreos/go-oidc#499</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/nicoske"><code>@​nicoske</code></a> made
their first contribution in <a
href="https://redirect.github.com/coreos/go-oidc/pull/499">coreos/go-oidc#499</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coreos/go-oidc/compare/v3.20.0...v3.21.0">https://github.com/coreos/go-oidc/compare/v3.20.0...v3.21.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c914bd3803"><code>c914bd3</code></a>
oidc: ignore JWKs with unsupported key types rather than failing</li>
<li>See full diff in <a
href="https://github.com/coreos/go-oidc/compare/v3.20.0...v3.21.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coreos/go-oidc/v3&package-manager=go_modules&previous-version=3.20.0&new-version=3.21.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 22:44:08 +03:00
Radoslav Dimitrov
99c9439d6f
chore: group Dependabot updates (#1618)
## Summary

- group all root Go module updates into one weekly PR
- group all deployment Go module updates into a separate weekly PR
- keep GitHub Actions updates in their own weekly group
- leave Docker updates independent

## Validation

- parsed `.github/dependabot.yml` successfully as YAML
- `git diff --check` passes

Co-authored-by: Radoslav Dimitrov <rado@Radoslavs-MacBook-Pro.local>
2026-09-05 22:33:43 +03:00
dependabot[bot]
30ca36e42e
build(deps): bump github.com/google/go-containerregistry from 0.21.9 to 0.22.0 (#1576)
Bumps
[github.com/google/go-containerregistry](https://github.com/google/go-containerregistry)
from 0.21.9 to 0.22.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/go-containerregistry/releases">github.com/google/go-containerregistry's
releases</a>.</em></p>
<blockquote>
<h2>v0.22.0</h2>
<h2>What's Changed</h2>
<ul>
<li>mutate: let Time and Canonical take tarball.LayerOption by <a
href="https://github.com/mzihlmann"><code>@​mzihlmann</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2403">google/go-containerregistry#2403</a></li>
<li>build: add multi-architecture Cloud Build configurations for crane,
gcrane, and krane by <a
href="https://github.com/tprussak"><code>@​tprussak</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2412">google/go-containerregistry#2412</a></li>
<li>remote: resolve push-check credentials against the repository by <a
href="https://github.com/mzihlmann"><code>@​mzihlmann</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2411">google/go-containerregistry#2411</a></li>
<li>Allow single-character repository paths by <a
href="https://github.com/semx"><code>@​semx</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2407">google/go-containerregistry#2407</a></li>
<li>fix: add missing substitutions and workspace cleanup to new build
files by <a
href="https://github.com/tprussak"><code>@​tprussak</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2413">google/go-containerregistry#2413</a></li>
<li>remote: retry failed Puller and Pusher initialization by <a
href="https://github.com/iahsanGill"><code>@​iahsanGill</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2406">google/go-containerregistry#2406</a></li>
<li>build(deps): bump the actions group across 1 directory with 8
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2405">google/go-containerregistry#2405</a></li>
<li>build(deps): bump the go-deps group across 1 directory with 3
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2415">google/go-containerregistry#2415</a></li>
<li>go.mod: bump Go version + add toolchain directive to replace
.go-version file by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2416">google/go-containerregistry#2416</a></li>
<li>fix: Fix new build options and provenance by <a
href="https://github.com/tprussak"><code>@​tprussak</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2417">google/go-containerregistry#2417</a></li>
<li>fix(build): unify new build flow into cloudbuild_v2.yaml by <a
href="https://github.com/tprussak"><code>@​tprussak</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2419">google/go-containerregistry#2419</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mzihlmann"><code>@​mzihlmann</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2403">google/go-containerregistry#2403</a></li>
<li><a href="https://github.com/tprussak"><code>@​tprussak</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2412">google/go-containerregistry#2412</a></li>
<li><a href="https://github.com/semx"><code>@​semx</code></a> made their
first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2407">google/go-containerregistry#2407</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/go-containerregistry/compare/v0.21.9...v0.21.10">https://github.com/google/go-containerregistry/compare/v0.21.9...v0.21.10</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3f4ff3ca60"><code>3f4ff3c</code></a>
fix(build): unify new build flow into cloudbuild_v2.yaml (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2419">#2419</a>)</li>
<li><a
href="c6b5acd7d4"><code>c6b5acd</code></a>
fix(build): correct Cloud Build schema options and source provenance
hash (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2">#2</a>...</li>
<li><a
href="8f4a85dbcf"><code>8f4a85d</code></a>
go.mod: bump Go version + add toolchain directive to replace .go-version
file...</li>
<li><a
href="548156007c"><code>5481560</code></a>
build(deps): bump the go-deps group across 1 directory with 3 updates
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2415">#2415</a>)</li>
<li><a
href="5b5c27267a"><code>5b5c272</code></a>
build(deps): bump the actions group across 1 directory with 8 updates
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2405">#2405</a>)</li>
<li><a
href="66dd45462b"><code>66dd454</code></a>
remote: retry failed Puller and Pusher initialization (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2406">#2406</a>)</li>
<li><a
href="3f47f91d59"><code>3f47f91</code></a>
fix: add missing substitutions and workspace cleanup to new build files
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2413">#2413</a>)</li>
<li><a
href="4cb3583322"><code>4cb3583</code></a>
Allow single-character repository paths (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2407">#2407</a>)</li>
<li><a
href="82cc4281cd"><code>82cc428</code></a>
remote: resolve push-check credentials against the repository (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2411">#2411</a>)</li>
<li><a
href="97815aa161"><code>97815aa</code></a>
build: add multi-architecture Cloud Build configurations for crane,
gcrane, a...</li>
<li>Additional commits viewable in <a
href="https://github.com/google/go-containerregistry/compare/v0.21.9...v0.22.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 21:46:07 +03:00
dependabot[bot]
f98e367dd9
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.259.0 to 3.261.0 in /deploy (#1606)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.259.0 to 3.261.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.261.0</h2>
<h2>3.261.0 (2026-09-02)</h2>
<h3>Features</h3>
<ul>
<li>[engine] Support state migration callbacks on resource registrations
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24328">#24328</a></li>
<li>[cli/env] Add <code>pulumi env setup {aws,azure,gcp}</code> to
configure cloud OIDC trust and create the ESC environments that use it
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23911">#23911</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[engine] Report a clear error instead of panicking when the stack's
state contains a custom resource with no ID <a
href="https://redirect.github.com/pulumi/pulumi/pull/24438">#24438</a></li>
<li>[cli] Show the agent account's claim URL instead of an inaccessible
View Live link when running on ephemeral agent credentials <a
href="https://redirect.github.com/pulumi/pulumi/pull/24476">#24476</a></li>
<li>[pcl] Fix a crash when binding a schema property with an integer
constant value <a
href="https://redirect.github.com/pulumi/pulumi/pull/24480">#24480</a></li>
<li>[cli/policy] Avoid hanging when policy pack fails to start up <a
href="https://redirect.github.com/pulumi/pulumi/pull/24492">#24492</a></li>
<li>[pkg/testing] Fix ProgramTest for providers whose Go module or NuGet
package has a double-digit major version <a
href="https://redirect.github.com/pulumi/pulumi/pull/24499">#24499</a></li>
<li>[sdk] Fix serialization of secret unknowns in NodeJS, Python and PCL
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24500">#24500</a></li>
<li>[engine] Ignore internal property keys (those starting with an
underscore) when generating and checking update plans <a
href="https://redirect.github.com/pulumi/pulumi/pull/24532">#24532</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[sdkgen] Generate precise Python output types for discriminated
unions. An array of a union was typed <code>Sequence[Any]</code> and a
scalar union <code>Any</code>, while the matching getters on the
generated Args classes were already typed <a
href="https://redirect.github.com/pulumi/pulumi/pull/24485">#24485</a></li>
<li>[sdk/python] Resolve a union value to its member by matching the
value's wire shape, so unions whose members carry no constant properties
serialize and translate with the right member's property names <a
href="https://redirect.github.com/pulumi/pulumi/pull/24484">#24484</a></li>
<li>[sdkgen/python] Accept a generated output type wherever the
classes-and-dicts input types accept its Args class or TypedDict, so a
resource's output can be passed to another resource's input without a
type error <a
href="https://redirect.github.com/pulumi/pulumi/pull/24507">#24507</a></li>
<li>[engine] Send previously persisted outputs to a provider's Check on
update, gated by a new sends_old_outputs_to_check handshake capability
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24524">#24524</a></li>
<li>[sdk/python] Add helper methods to transform ResourceOptions to
InvokeOptions <a
href="https://redirect.github.com/pulumi/pulumi/pull/24533">#24533</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[java] Upgrade java to v1.36.3 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24509">#24509</a></li>
<li>[yaml] Upgrade yaml to v1.38.5 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24509">#24509</a></li>
<li>[sdk/dotnet] Upgrade dotnet to v3.113.1 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24512">#24512</a></li>
</ul>
<h2>v3.260.0</h2>
<h2>3.260.0 (2026-08-28)</h2>
<h3>Features</h3>
<ul>
<li>[cli/deployment] Make <code>pulumi deployment settings get</code>
render every source kind and show environment variable values, changing
the <code>--output=json</code> shape of
<code>environmentVariables</code> from a list of names to a list of
objects <a
href="https://redirect.github.com/pulumi/pulumi/pull/24284">#24284</a></li>
<li>[sdk/go] Support Go 1.27 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24401">#24401</a></li>
<li>[cli/state] Add <code>pulumi state promote</code> to turn stateful
snippets into Pulumi program code <a
href="https://redirect.github.com/pulumi/pulumi/pull/24453">#24453</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[engine] Replace resources whose deletedWith target is being
replaced, instead of leaving them orphaned in state <a
href="https://redirect.github.com/pulumi/pulumi/pull/23818">#23818</a></li>
<li>[sdk/python] Serialize typed object stack outputs with their
wire-format (camelCase) property names, matching other language SDKs <a
href="https://redirect.github.com/pulumi/pulumi/pull/24246">#24246</a></li>
<li>[cli/neo] Cancelling a task now interrupts a running local tool call
instead of waiting for it to finish <a
href="https://redirect.github.com/pulumi/pulumi/pull/24268">#24268</a></li>
<li>[programgen/python] Access schema properties whose names contain
hyphens as attributes under their Python names instead of subscripting
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24300">#24300</a></li>
<li>[programgen/go] Generate valid struct field names for properties
whose names contain hyphens <a
href="https://redirect.github.com/pulumi/pulumi/pull/24300">#24300</a></li>
<li>[sdkgen/nodejs] Quote property names that are not legal identifiers
(e.g. kebab-case) in generated declarations and use bracket access for
them <a
href="https://redirect.github.com/pulumi/pulumi/pull/24300">#24300</a></li>
<li>[cli/neo] Cancelling a local tool call no longer leaves the TUI
stuck on &quot;Thinking...&quot; with input blocked <a
href="https://redirect.github.com/pulumi/pulumi/pull/24318">#24318</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.261.0 (2026-09-02)</h2>
<h3>Features</h3>
<ul>
<li>[engine] Support state migration callbacks on resource registrations
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24328">#24328</a></li>
<li>[cli/env] Add <code>pulumi env setup {aws,azure,gcp}</code> to
configure cloud OIDC trust and create the ESC environments that use it
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23911">#23911</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[engine] Report a clear error instead of panicking when the stack's
state contains a custom resource with no ID <a
href="https://redirect.github.com/pulumi/pulumi/pull/24438">#24438</a></li>
<li>[cli] Show the agent account's claim URL instead of an inaccessible
View Live link when running on ephemeral agent credentials <a
href="https://redirect.github.com/pulumi/pulumi/pull/24476">#24476</a></li>
<li>[pcl] Fix a crash when binding a schema property with an integer
constant value <a
href="https://redirect.github.com/pulumi/pulumi/pull/24480">#24480</a></li>
<li>[cli/policy] Avoid hanging when policy pack fails to start up <a
href="https://redirect.github.com/pulumi/pulumi/pull/24492">#24492</a></li>
<li>[pkg/testing] Fix ProgramTest for providers whose Go module or NuGet
package has a double-digit major version <a
href="https://redirect.github.com/pulumi/pulumi/pull/24499">#24499</a></li>
<li>[sdk] Fix serialization of secret unknowns in NodeJS, Python and PCL
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24500">#24500</a></li>
<li>[engine] Ignore internal property keys (those starting with an
underscore) when generating and checking update plans <a
href="https://redirect.github.com/pulumi/pulumi/pull/24532">#24532</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[sdkgen] Generate precise Python output types for discriminated
unions. An array of a union was typed <code>Sequence[Any]</code> and a
scalar union <code>Any</code>, while the matching getters on the
generated Args classes were already typed <a
href="https://redirect.github.com/pulumi/pulumi/pull/24485">#24485</a></li>
<li>[sdk/python] Resolve a union value to its member by matching the
value's wire shape, so unions whose members carry no constant properties
serialize and translate with the right member's property names <a
href="https://redirect.github.com/pulumi/pulumi/pull/24484">#24484</a></li>
<li>[sdkgen/python] Accept a generated output type wherever the
classes-and-dicts input types accept its Args class or TypedDict, so a
resource's output can be passed to another resource's input without a
type error <a
href="https://redirect.github.com/pulumi/pulumi/pull/24507">#24507</a></li>
<li>[engine] Send previously persisted outputs to a provider's Check on
update, gated by a new sends_old_outputs_to_check handshake capability
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24524">#24524</a></li>
<li>[sdk/python] Add helper methods to transform ResourceOptions to
InvokeOptions <a
href="https://redirect.github.com/pulumi/pulumi/pull/24533">#24533</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[java] Upgrade java to v1.36.3 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24509">#24509</a></li>
<li>[yaml] Upgrade yaml to v1.38.5 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24509">#24509</a></li>
<li>[sdk/dotnet] Upgrade dotnet to v3.113.1 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24512">#24512</a></li>
</ul>
<h2>3.260.0 (2026-08-28)</h2>
<h3>Features</h3>
<ul>
<li>[cli/deployment] Make <code>pulumi deployment settings get</code>
render every source kind and show environment variable values, changing
the <code>--output=json</code> shape of
<code>environmentVariables</code> from a list of names to a list of
objects <a
href="https://redirect.github.com/pulumi/pulumi/pull/24284">#24284</a></li>
<li>[sdk/go] Support Go 1.27 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24401">#24401</a></li>
<li>[cli/state] Add <code>pulumi state promote</code> to turn stateful
snippets into Pulumi program code <a
href="https://redirect.github.com/pulumi/pulumi/pull/24453">#24453</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[engine] Replace resources whose deletedWith target is being
replaced, instead of leaving them orphaned in state <a
href="https://redirect.github.com/pulumi/pulumi/pull/23818">#23818</a></li>
<li>[sdk/python] Serialize typed object stack outputs with their
wire-format (camelCase) property names, matching other language SDKs <a
href="https://redirect.github.com/pulumi/pulumi/pull/24246">#24246</a></li>
<li>[cli/neo] Cancelling a task now interrupts a running local tool call
instead of waiting for it to finish <a
href="https://redirect.github.com/pulumi/pulumi/pull/24268">#24268</a></li>
<li>[programgen/python] Access schema properties whose names contain
hyphens as attributes under their Python names instead of subscripting
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24300">#24300</a></li>
<li>[programgen/go] Generate valid struct field names for properties
whose names contain hyphens <a
href="https://redirect.github.com/pulumi/pulumi/pull/24300">#24300</a></li>
<li>[sdkgen/nodejs] Quote property names that are not legal identifiers
(e.g. kebab-case) in generated declarations and use bracket access for
them <a
href="https://redirect.github.com/pulumi/pulumi/pull/24300">#24300</a></li>
<li>[cli/neo] Cancelling a local tool call no longer leaves the TUI
stuck on &quot;Thinking...&quot; with input blocked <a
href="https://redirect.github.com/pulumi/pulumi/pull/24318">#24318</a></li>
<li>[sdk/go] Use resolved environment names when evaluating ESC imports
<a
href="https://redirect.github.com/pulumi/pulumi/pull/24375">#24375</a></li>
<li>[codegen/pcl] Allow output-typed values for the id attribute of a
read resource <a
href="https://redirect.github.com/pulumi/pulumi/pull/24386">#24386</a></li>
<li>[sdkgen/nodejs] Register resolvers for output-only properties in
generated Resource.get so they resolve as unknown during preview when
the id is unknown <a
href="https://redirect.github.com/pulumi/pulumi/pull/24386">#24386</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="de0633d6c6"><code>de0633d</code></a>
Fix ProgramTest for double-digit major versions (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24499">#24499</a>)</li>
<li><a
href="1e5b60ad84"><code>1e5b60a</code></a>
Migrate ConstructResult to property.Map (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24463">#24463</a>)</li>
<li><a
href="a2b96b4044"><code>a2b96b4</code></a>
Ignore internal property keys in update plans (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24532">#24532</a>)</li>
<li><a
href="4d41278af7"><code>4d41278</code></a>
python: add helper methods to transform ResourceOptions to InvokeOptions
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/24">#24</a>...</li>
<li><a
href="3081504c7c"><code>3081504</code></a>
Execute component state migrations (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24328">#24328</a>)</li>
<li><a
href="710f0f8a71"><code>710f0f8</code></a>
[Python] Use <code>codegen.IsWireDiscriminatableUnionType</code> in
outputs (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24485">#24485</a>)</li>
<li><a
href="f05eae644e"><code>f05eae6</code></a>
Send OldOutputs to provider Check (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24524">#24524</a>)</li>
<li><a
href="ecabf858ae"><code>ecabf85</code></a>
Preserve secret marker when serializing unknown Outputs (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24500">#24500</a>)</li>
<li><a
href="f0535f9cb9"><code>f0535f9</code></a>
[sdkgen/python] Accept output types in resource and function inputs (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24507">#24507</a>)</li>
<li><a
href="7dc7023287"><code>7dc7023</code></a>
ESC OIDC Onboarding in the CLI (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23911">#23911</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.259.0...v3.261.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 21:40:40 +03:00
dependabot[bot]
e166f76f06
build(deps): bump the opentelemetry group across 1 directory with 6 updates (#1607)
Bumps the opentelemetry group with 2 updates in the / directory:
[go.opentelemetry.io/contrib/instrumentation/runtime](https://github.com/open-telemetry/opentelemetry-go-contrib)
and
[go.opentelemetry.io/otel/exporters/prometheus](https://github.com/open-telemetry/opentelemetry-go).

Updates `go.opentelemetry.io/contrib/instrumentation/runtime` from
0.70.0 to 0.71.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/instrumentation/runtime's
changelog</a>.</em></p>
<blockquote>
<h2>[1.46.0/2.5.3/0.71.0/0.37.3/0.26.0/0.20.1/0.16.3/0.18.0] -
2026-08-25</h2>
<p>This release is the last to support [Go 1.25].
The next release will require at least [Go 1.26].</p>
<h3>Added</h3>
<ul>
<li>Add support for the <code>aws.ec2</code> resource detector in
<code>go.opentelemetry.io/contrib/otelconf/x</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9139">#9139</a>)</li>
<li>Support testing of [Go 1.27]. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9524">#9524</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/docker</code>, a
resource detector for Docker, ported from
<code>processor/resourcedetectionprocessor/internal/docker</code> in
opentelemetry-collector-contrib. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9001">#9001</a>)</li>
<li>Add <code>S3AttributeBuilder</code> to
<code>go.opentelemetry.io/contrib/instrumentation/github.com/aws/aws-sdk-go-v2/otelaws</code>
that sets S3-specific span attributes following the OpenTelemetry S3
semantic conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9292">#9292</a>)</li>
</ul>
<h3>Deprecated</h3>
<ul>
<li>Deprecate
<code>go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho</code>.
Use <code>github.com/labstack/echo-opentelemetry</code> instead. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9136">#9136</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Record <code>error.type</code> attribute on server spans in
<code>go.opentelemetry.io/contrib/instrumentation/github.com/emicklei/go-restful/otelrestful</code>
when a request is cancelled or ends in a 5xx error. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9387">#9387</a>)</li>
<li>Report <code>ot-baggage-*</code> extraction errors from
<code>go.opentelemetry.io/contrib/propagators/ot</code> to
<code>otel.Handle</code> instead of silently discarding them, while
still attaching the successfully parsed baggage members to the context.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9395">#9395</a>)</li>
<li>Set <code>error.type</code> on the
<code>rpc.client.call.duration</code> and
<code>rpc.server.call.duration</code> metrics in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>
when the RPC fails with a non-OK status, per the RPC semantic
conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9429">#9429</a>)</li>
<li>Reject OTLP exporter headers with an empty <code>name</code> in
<code>go.opentelemetry.io/contrib/otelconf</code>,
<code>go.opentelemetry.io/contrib/otelconf/x</code>, and
<code>go.opentelemetry.io/contrib/otelconf/v0.3.0</code>, instead of
forwarding invalid header names to OTLP exporters. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9102">#9102</a>)</li>
<li><code>go.opentelemetry.io/contrib/detectors/aws/lambda</code> no
longer returns an error when run outside of an AWS Lambda environment,
matching the no-op behavior of other resource detectors. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9464">#9464</a>)</li>
<li>Convert Prometheus untyped metrics to OTLP Gauges in
<code>go.opentelemetry.io/contrib/bridges/prometheus</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9099">#9099</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c4c6248ec2"><code>c4c6248</code></a>
Release v1.46.0/v2.5.3/v0.71.0/v0.37.3/v0.26.0/v0.20.1/v0.16.3/v0.18.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9563">#9563</a>)</li>
<li><a
href="11c8a13e60"><code>11c8a13</code></a>
fix(deps): update aws-sdk-go-v2 monorepo</li>
<li><a
href="0458b9df1d"><code>0458b9d</code></a>
chore(deps): update module
go.opentelemetry.io/contrib/instrumentation/net/ht...</li>
<li><a
href="638a0d5944"><code>638a0d5</code></a>
fix(deps): update module github.com/moby/moby/api to v1.55.0</li>
<li><a
href="5089aa5de9"><code>5089aa5</code></a>
chore(deps): update googleapis to da73d73</li>
<li><a
href="a50857b305"><code>a50857b</code></a>
chore(deps): update jaegertracing/jaeger docker tag to v2.20.0</li>
<li><a
href="aa4f4a577c"><code>aa4f4a5</code></a>
chore(deps): update open-telemetry/shared-workflows action to
v0.11.0</li>
<li><a
href="ccbbc14b55"><code>ccbbc14</code></a>
fix(deps): update module github.com/aws/smithy-go to v1.28.0</li>
<li><a
href="9312464aaf"><code>9312464</code></a>
chore(deps): update module github.com/docker/go-connections to
v0.8.1</li>
<li><a
href="36c3b00660"><code>36c3b00</code></a>
chore(deps): update module github.com/felixge/httpsnoop to v1.1.0</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.70.0...zpages/v0.71.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel` from 1.45.0 to 1.46.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/releases">go.opentelemetry.io/otel's
releases</a>.</em></p>
<blockquote>
<h2>v1.46.0/v0.68.0/v0.22.0/v0.0.19</h2>
<p>This release is the last to support <a
href="https://go.dev/doc/go1.25">Go 1.25</a>.
The next release will require at least <a
href="https://go.dev/doc/go1.26">Go 1.26</a>.</p>
<h3>Added</h3>
<ul>
<li>Support testing of <a href="https://go.dev/doc/go1.27">Go 1.27</a>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8811">#8811</a>)</li>
<li>Support <code>http/json</code> protocol in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8273">#8273</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8775">#8775</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li>Add <code>Hasher</code> struct and methods in
<code>go.opentelemetry.io/otel/attribute</code> to compute authoritative
<code>Distinct</code> hashes incrementally for attribute filtering and
deduplication. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Lazily evaluate filtered and dropped attributes on measurement hot
paths in <code>go.opentelemetry.io/otel/sdk/metric</code> to avoid
unnecessary attribute set allocations. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
<li>Add <code>ErrExporterShutdown</code> to
<code>go.opentelemetry.io/otel/sdk/log</code> and return it from the
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
exporters when <code>Export</code> is called after
<code>Shutdown</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8773">#8773</a>)</li>
<li>Clarify in <code>go.opentelemetry.io/otel/log</code> that calling
<code>Logger.Enabled</code> is optional and that cached results can
become stale. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8764">#8764</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Export dropped attribute counts in OTLP log records from
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li>Name span events created from OpenTracing logs after the
<code>event</code> log field, falling back to <code>log</code>, instead
of always using an empty name in
<code>go.opentelemetry.io/otel/bridge/opentracing</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8648">#8648</a>)</li>
<li>Count exception attributes omitted due to the attribute count limit
as dropped in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8796">#8796</a>)</li>
<li>Prevent log record and instrumentation scope attributes with empty
keys from reaching processors and exporters in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8797">#8797</a>)</li>
<li>Fix a data race when span attributes are read concurrently in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8706">#8706</a>)</li>
<li>Prevent a panic in <code>(*Set).Filter</code> when called on a nil
receiver in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8792">#8792</a>)</li>
<li>The simple span and log processors record
<code>otel.sdk.processor.{span,log}.processed</code> when the record is
submitted to the exporter instead of after the export completes, and no
longer set <code>error.type</code> from the export outcome, in
<code>go.opentelemetry.io/otel/sdk/trace</code> and
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8705">#8705</a>)</li>
<li>Prevent <code>Resource.MarshalLog</code> from panicking on nil
resources in <code>go.opentelemetry.io/otel/sdk/resource</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8758">#8758</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update github/codeql-action action to v4.37.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8697">open-telemetry/opentelemetry-go#8697</a></li>
<li>chore(deps): update module go.opentelemetry.io/collector/featuregate
to v1.64.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8698">open-telemetry/opentelemetry-go#8698</a></li>
<li>chore(deps): update golang.org/x/telemetry digest to bdd03c3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8699">open-telemetry/opentelemetry-go#8699</a></li>
<li>fix(deps): update module go.opentelemetry.io/collector/pdata to
v1.64.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8700">open-telemetry/opentelemetry-go#8700</a></li>
<li>chore(deps): update module github.com/grpc-ecosystem/grpc-gateway/v2
to v2.30.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8701">open-telemetry/opentelemetry-go#8701</a></li>
<li>chore(deps): update module github.com/rogpeppe/go-internal to
v1.16.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8702">open-telemetry/opentelemetry-go#8702</a></li>
<li>chore(deps): update module github.com/cloudflare/circl to v1.6.5 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8703">open-telemetry/opentelemetry-go#8703</a></li>
<li>Record processor.{span,log}.processed before invoking the exporter
in simple processors by <a
href="https://github.com/cijothomas"><code>@​cijothomas</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8705">open-telemetry/opentelemetry-go#8705</a></li>
<li>perf(sdk/metric): reduce benchmark suite execution time (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8683">#8683</a>)
by <a href="https://github.com/dashpole"><code>@​dashpole</code></a> in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8688">open-telemetry/opentelemetry-go#8688</a></li>
<li>chore(deps): update codspeedhq/action action to v5.0.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8710">open-telemetry/opentelemetry-go#8710</a></li>
<li>attempt 2: Lazily compute filtered and dropped attributes by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8598">open-telemetry/opentelemetry-go#8598</a></li>
<li>fix(deps): update googleapis to c8921c7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8712">open-telemetry/opentelemetry-go#8712</a></li>
<li>chore(deps): update module github.com/santhosh-tekuri/jsonschema/v6
to v6.0.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8708">open-telemetry/opentelemetry-go#8708</a></li>
<li>chore(deps): update github.com/charmbracelet/ultraviolet digest to
402eeaa by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8716">open-telemetry/opentelemetry-go#8716</a></li>
<li>chore(deps): update module github.com/dlclark/regexp2/v2 to v2.6.0
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8715">open-telemetry/opentelemetry-go#8715</a></li>
<li>chore(deps): update mvdan.cc/unparam digest to a64391f by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8717">open-telemetry/opentelemetry-go#8717</a></li>
<li>fix(deps): update golang.org/x to a8b543c by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8720">open-telemetry/opentelemetry-go#8720</a></li>
<li>fix(deps): update googleapis to ec0a776 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8719">open-telemetry/opentelemetry-go#8719</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel's
changelog</a>.</em></p>
<blockquote>
<h2>[1.46.0/0.68.0/0.22.0/0.0.19] - 2026-08-25</h2>
<p>This release is the last to support [Go 1.25].
The next release will require at least [Go 1.26].</p>
<h3>Added</h3>
<ul>
<li>Support testing of [Go 1.27]. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8811">#8811</a>)</li>
<li>Support <code>http/json</code> protocol in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8273">#8273</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8775">#8775</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li>Add <code>Hasher</code> struct and methods in
<code>go.opentelemetry.io/otel/attribute</code> to compute authoritative
<code>Distinct</code> hashes incrementally for attribute filtering and
deduplication. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Lazily evaluate filtered and dropped attributes on measurement hot
paths in <code>go.opentelemetry.io/otel/sdk/metric</code> to avoid
unnecessary attribute set allocations. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
<li>Add <code>ErrExporterShutdown</code> to
<code>go.opentelemetry.io/otel/sdk/log</code> and return it from the
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
exporters when <code>Export</code> is called after
<code>Shutdown</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8773">#8773</a>)</li>
<li>Clarify in <code>go.opentelemetry.io/otel/log</code> that calling
<code>Logger.Enabled</code> is optional and that cached results can
become stale. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8764">#8764</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Export dropped attribute counts in OTLP log records from
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li>Name span events created from OpenTracing logs after the
<code>event</code> log field, falling back to <code>log</code>, instead
of always using an empty name in
<code>go.opentelemetry.io/otel/bridge/opentracing</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8648">#8648</a>)</li>
<li>Count exception attributes omitted due to the attribute count limit
as dropped in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8796">#8796</a>)</li>
<li>Prevent log record and instrumentation scope attributes with empty
keys from reaching processors and exporters in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8797">#8797</a>)</li>
<li>Fix a data race when span attributes are read concurrently in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8706">#8706</a>)</li>
<li>Prevent a panic in <code>(*Set).Filter</code> when called on a nil
receiver in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8792">#8792</a>)</li>
<li>The simple span and log processors record
<code>otel.sdk.processor.{span,log}.processed</code> when the record is
submitted to the exporter instead of after the export completes, and no
longer set <code>error.type</code> from the export outcome, in
<code>go.opentelemetry.io/otel/sdk/trace</code> and
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8705">#8705</a>)</li>
<li>Prevent <code>Resource.MarshalLog</code> from panicking on nil
resources in <code>go.opentelemetry.io/otel/sdk/resource</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8758">#8758</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="58db4c898f"><code>58db4c8</code></a>
Release v1.46.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8858">#8858</a>)</li>
<li><a
href="524fc3c25f"><code>524fc3c</code></a>
chore(deps): update golang.org/x/telemetry digest to 1f5465a (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8853">#8853</a>)</li>
<li><a
href="3b8ef6f6ea"><code>3b8ef6f</code></a>
chore(deps): update codspeedhq/action action to v5.2.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8854">#8854</a>)</li>
<li><a
href="cfbeab547f"><code>cfbeab5</code></a>
attribute: clarify xxhash test purpose (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8753">#8753</a>)</li>
<li><a
href="3599b59720"><code>3599b59</code></a>
sdk/log: Add interface stability markers (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8855">#8855</a>)</li>
<li><a
href="08d52dc720"><code>08d52dc</code></a>
otlptracehttp: Accept quoted finite doubles in OTLP JSON (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li><a
href="d720f5af01"><code>d720f5a</code></a>
otlplog: export dropped attribute count (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li><a
href="80fe23bd77"><code>80fe23b</code></a>
chore(deps): update module honnef.co/go/tools to v0.8.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8816">#8816</a>)</li>
<li><a
href="5337812ca9"><code>5337812</code></a>
chore(deps): update codspeedhq/action action to v5.2.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8851">#8851</a>)</li>
<li><a
href="2f73a3efde"><code>2f73a3e</code></a>
chore(deps): update module github.com/uudashr/iface to v1.5.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8841">#8841</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go/compare/v1.45.0...v1.46.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel/exporters/prometheus` from 0.67.0 to
0.68.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel/exporters/prometheus's
changelog</a>.</em></p>
<blockquote>
<h2>[1.46.0/0.68.0/0.22.0/0.0.19] - 2026-08-25</h2>
<p>This release is the last to support [Go 1.25].
The next release will require at least [Go 1.26].</p>
<h3>Added</h3>
<ul>
<li>Support testing of [Go 1.27]. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8811">#8811</a>)</li>
<li>Support <code>http/json</code> protocol in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8273">#8273</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8775">#8775</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li>Add <code>Hasher</code> struct and methods in
<code>go.opentelemetry.io/otel/attribute</code> to compute authoritative
<code>Distinct</code> hashes incrementally for attribute filtering and
deduplication. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Lazily evaluate filtered and dropped attributes on measurement hot
paths in <code>go.opentelemetry.io/otel/sdk/metric</code> to avoid
unnecessary attribute set allocations. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
<li>Add <code>ErrExporterShutdown</code> to
<code>go.opentelemetry.io/otel/sdk/log</code> and return it from the
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
exporters when <code>Export</code> is called after
<code>Shutdown</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8773">#8773</a>)</li>
<li>Clarify in <code>go.opentelemetry.io/otel/log</code> that calling
<code>Logger.Enabled</code> is optional and that cached results can
become stale. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8764">#8764</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Export dropped attribute counts in OTLP log records from
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li>Name span events created from OpenTracing logs after the
<code>event</code> log field, falling back to <code>log</code>, instead
of always using an empty name in
<code>go.opentelemetry.io/otel/bridge/opentracing</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8648">#8648</a>)</li>
<li>Count exception attributes omitted due to the attribute count limit
as dropped in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8796">#8796</a>)</li>
<li>Prevent log record and instrumentation scope attributes with empty
keys from reaching processors and exporters in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8797">#8797</a>)</li>
<li>Fix a data race when span attributes are read concurrently in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8706">#8706</a>)</li>
<li>Prevent a panic in <code>(*Set).Filter</code> when called on a nil
receiver in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8792">#8792</a>)</li>
<li>The simple span and log processors record
<code>otel.sdk.processor.{span,log}.processed</code> when the record is
submitted to the exporter instead of after the export completes, and no
longer set <code>error.type</code> from the export outcome, in
<code>go.opentelemetry.io/otel/sdk/trace</code> and
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8705">#8705</a>)</li>
<li>Prevent <code>Resource.MarshalLog</code> from panicking on nil
resources in <code>go.opentelemetry.io/otel/sdk/resource</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8758">#8758</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="58db4c898f"><code>58db4c8</code></a>
Release v1.46.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8858">#8858</a>)</li>
<li><a
href="524fc3c25f"><code>524fc3c</code></a>
chore(deps): update golang.org/x/telemetry digest to 1f5465a (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8853">#8853</a>)</li>
<li><a
href="3b8ef6f6ea"><code>3b8ef6f</code></a>
chore(deps): update codspeedhq/action action to v5.2.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8854">#8854</a>)</li>
<li><a
href="cfbeab547f"><code>cfbeab5</code></a>
attribute: clarify xxhash test purpose (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8753">#8753</a>)</li>
<li><a
href="3599b59720"><code>3599b59</code></a>
sdk/log: Add interface stability markers (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8855">#8855</a>)</li>
<li><a
href="08d52dc720"><code>08d52dc</code></a>
otlptracehttp: Accept quoted finite doubles in OTLP JSON (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li><a
href="d720f5af01"><code>d720f5a</code></a>
otlplog: export dropped attribute count (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li><a
href="80fe23bd77"><code>80fe23b</code></a>
chore(deps): update module honnef.co/go/tools to v0.8.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8816">#8816</a>)</li>
<li><a
href="5337812ca9"><code>5337812</code></a>
chore(deps): update codspeedhq/action action to v5.2.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8851">#8851</a>)</li>
<li><a
href="2f73a3efde"><code>2f73a3e</code></a>
chore(deps): update module github.com/uudashr/iface to v1.5.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8841">#8841</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go/compare/metric/x/v0.67.0...metric/x/v0.68.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel/metric` from 1.45.0 to 1.46.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/releases">go.opentelemetry.io/otel/metric's
releases</a>.</em></p>
<blockquote>
<h2>v1.46.0/v0.68.0/v0.22.0/v0.0.19</h2>
<p>This release is the last to support <a
href="https://go.dev/doc/go1.25">Go 1.25</a>.
The next release will require at least <a
href="https://go.dev/doc/go1.26">Go 1.26</a>.</p>
<h3>Added</h3>
<ul>
<li>Support testing of <a href="https://go.dev/doc/go1.27">Go 1.27</a>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8811">#8811</a>)</li>
<li>Support <code>http/json</code> protocol in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8273">#8273</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8775">#8775</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li>Add <code>Hasher</code> struct and methods in
<code>go.opentelemetry.io/otel/attribute</code> to compute authoritative
<code>Distinct</code> hashes incrementally for attribute filtering and
deduplication. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Lazily evaluate filtered and dropped attributes on measurement hot
paths in <code>go.opentelemetry.io/otel/sdk/metric</code> to avoid
unnecessary attribute set allocations. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
<li>Add <code>ErrExporterShutdown</code> to
<code>go.opentelemetry.io/otel/sdk/log</code> and return it from the
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
exporters when <code>Export</code> is called after
<code>Shutdown</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8773">#8773</a>)</li>
<li>Clarify in <code>go.opentelemetry.io/otel/log</code> that calling
<code>Logger.Enabled</code> is optional and that cached results can
become stale. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8764">#8764</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Export dropped attribute counts in OTLP log records from
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li>Name span events created from OpenTracing logs after the
<code>event</code> log field, falling back to <code>log</code>, instead
of always using an empty name in
<code>go.opentelemetry.io/otel/bridge/opentracing</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8648">#8648</a>)</li>
<li>Count exception attributes omitted due to the attribute count limit
as dropped in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8796">#8796</a>)</li>
<li>Prevent log record and instrumentation scope attributes with empty
keys from reaching processors and exporters in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8797">#8797</a>)</li>
<li>Fix a data race when span attributes are read concurrently in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8706">#8706</a>)</li>
<li>Prevent a panic in <code>(*Set).Filter</code> when called on a nil
receiver in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8792">#8792</a>)</li>
<li>The simple span and log processors record
<code>otel.sdk.processor.{span,log}.processed</code> when the record is
submitted to the exporter instead of after the export completes, and no
longer set <code>error.type</code> from the export outcome, in
<code>go.opentelemetry.io/otel/sdk/trace</code> and
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8705">#8705</a>)</li>
<li>Prevent <code>Resource.MarshalLog</code> from panicking on nil
resources in <code>go.opentelemetry.io/otel/sdk/resource</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8758">#8758</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update github/codeql-action action to v4.37.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8697">open-telemetry/opentelemetry-go#8697</a></li>
<li>chore(deps): update module go.opentelemetry.io/collector/featuregate
to v1.64.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8698">open-telemetry/opentelemetry-go#8698</a></li>
<li>chore(deps): update golang.org/x/telemetry digest to bdd03c3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8699">open-telemetry/opentelemetry-go#8699</a></li>
<li>fix(deps): update module go.opentelemetry.io/collector/pdata to
v1.64.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8700">open-telemetry/opentelemetry-go#8700</a></li>
<li>chore(deps): update module github.com/grpc-ecosystem/grpc-gateway/v2
to v2.30.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8701">open-telemetry/opentelemetry-go#8701</a></li>
<li>chore(deps): update module github.com/rogpeppe/go-internal to
v1.16.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8702">open-telemetry/opentelemetry-go#8702</a></li>
<li>chore(deps): update module github.com/cloudflare/circl to v1.6.5 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8703">open-telemetry/opentelemetry-go#8703</a></li>
<li>Record processor.{span,log}.processed before invoking the exporter
in simple processors by <a
href="https://github.com/cijothomas"><code>@​cijothomas</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8705">open-telemetry/opentelemetry-go#8705</a></li>
<li>perf(sdk/metric): reduce benchmark suite execution time (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8683">#8683</a>)
by <a href="https://github.com/dashpole"><code>@​dashpole</code></a> in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8688">open-telemetry/opentelemetry-go#8688</a></li>
<li>chore(deps): update codspeedhq/action action to v5.0.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8710">open-telemetry/opentelemetry-go#8710</a></li>
<li>attempt 2: Lazily compute filtered and dropped attributes by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8598">open-telemetry/opentelemetry-go#8598</a></li>
<li>fix(deps): update googleapis to c8921c7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8712">open-telemetry/opentelemetry-go#8712</a></li>
<li>chore(deps): update module github.com/santhosh-tekuri/jsonschema/v6
to v6.0.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8708">open-telemetry/opentelemetry-go#8708</a></li>
<li>chore(deps): update github.com/charmbracelet/ultraviolet digest to
402eeaa by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8716">open-telemetry/opentelemetry-go#8716</a></li>
<li>chore(deps): update module github.com/dlclark/regexp2/v2 to v2.6.0
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8715">open-telemetry/opentelemetry-go#8715</a></li>
<li>chore(deps): update mvdan.cc/unparam digest to a64391f by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8717">open-telemetry/opentelemetry-go#8717</a></li>
<li>fix(deps): update golang.org/x to a8b543c by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8720">open-telemetry/opentelemetry-go#8720</a></li>
<li>fix(deps): update googleapis to ec0a776 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8719">open-telemetry/opentelemetry-go#8719</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel/metric's
changelog</a>.</em></p>
<blockquote>
<h2>[1.46.0/0.68.0/0.22.0/0.0.19] - 2026-08-25</h2>
<p>This release is the last to support [Go 1.25].
The next release will require at least [Go 1.26].</p>
<h3>Added</h3>
<ul>
<li>Support testing of [Go 1.27]. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8811">#8811</a>)</li>
<li>Support <code>http/json</code> protocol in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8273">#8273</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8775">#8775</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li>Add <code>Hasher</code> struct and methods in
<code>go.opentelemetry.io/otel/attribute</code> to compute authoritative
<code>Distinct</code> hashes incrementally for attribute filtering and
deduplication. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Lazily evaluate filtered and dropped attributes on measurement hot
paths in <code>go.opentelemetry.io/otel/sdk/metric</code> to avoid
unnecessary attribute set allocations. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
<li>Add <code>ErrExporterShutdown</code> to
<code>go.opentelemetry.io/otel/sdk/log</code> and return it from the
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
exporters when <code>Export</code> is called after
<code>Shutdown</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8773">#8773</a>)</li>
<li>Clarify in <code>go.opentelemetry.io/otel/log</code> that calling
<code>Logger.Enabled</code> is optional and that cached results can
become stale. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8764">#8764</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Export dropped attribute counts in OTLP log records from
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li>Name span events created from OpenTracing logs after the
<code>event</code> log field, falling back to <code>log</code>, instead
of always using an empty name in
<code>go.opentelemetry.io/otel/bridge/opentracing</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8648">#8648</a>)</li>
<li>Count exception attributes omitted due to the attribute count limit
as dropped in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8796">#8796</a>)</li>
<li>Prevent log record and instrumentation scope attributes with empty
keys from reaching processors and exporters in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8797">#8797</a>)</li>
<li>Fix a data race when span attributes are read concurrently in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8706">#8706</a>)</li>
<li>Prevent a panic in <code>(*Set).Filter</code> when called on a nil
receiver in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8792">#8792</a>)</li>
<li>The simple span and log processors record
<code>otel.sdk.processor.{span,log}.processed</code> when the record is
submitted to the exporter instead of after the export completes, and no
longer set <code>error.type</code> from the export outcome, in
<code>go.opentelemetry.io/otel/sdk/trace</code> and
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8705">#8705</a>)</li>
<li>Prevent <code>Resource.MarshalLog</code> from panicking on nil
resources in <code>go.opentelemetry.io/otel/sdk/resource</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8758">#8758</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="58db4c898f"><code>58db4c8</code></a>
Release v1.46.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8858">#8858</a>)</li>
<li><a
href="524fc3c25f"><code>524fc3c</code></a>
chore(deps): update golang.org/x/telemetry digest to 1f5465a (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8853">#8853</a>)</li>
<li><a
href="3b8ef6f6ea"><code>3b8ef6f</code></a>
chore(deps): update codspeedhq/action action to v5.2.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8854">#8854</a>)</li>
<li><a
href="cfbeab547f"><code>cfbeab5</code></a>
attribute: clarify xxhash test purpose (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8753">#8753</a>)</li>
<li><a
href="3599b59720"><code>3599b59</code></a>
sdk/log: Add interface stability markers (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8855">#8855</a>)</li>
<li><a
href="08d52dc720"><code>08d52dc</code></a>
otlptracehttp: Accept quoted finite doubles in OTLP JSON (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li><a
href="d720f5af01"><code>d720f5a</code></a>
otlplog: export dropped attribute count (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li><a
href="80fe23bd77"><code>80fe23b</code></a>
chore(deps): update module honnef.co/go/tools to v0.8.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8816">#8816</a>)</li>
<li><a
href="5337812ca9"><code>5337812</code></a>
chore(deps): update codspeedhq/action action to v5.2.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8851">#8851</a>)</li>
<li><a
href="2f73a3efde"><code>2f73a3e</code></a>
chore(deps): update module github.com/uudashr/iface to v1.5.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8841">#8841</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go/compare/v1.45.0...v1.46.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel/sdk` from 1.45.0 to 1.46.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/releases">go.opentelemetry.io/otel/sdk's
releases</a>.</em></p>
<blockquote>
<h2>v1.46.0/v0.68.0/v0.22.0/v0.0.19</h2>
<p>This release is the last to support <a
href="https://go.dev/doc/go1.25">Go 1.25</a>.
The next release will require at least <a
href="https://go.dev/doc/go1.26">Go 1.26</a>.</p>
<h3>Added</h3>
<ul>
<li>Support testing of <a href="https://go.dev/doc/go1.27">Go 1.27</a>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8811">#8811</a>)</li>
<li>Support <code>http/json</code> protocol in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8273">#8273</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8775">#8775</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li>Add <code>Hasher</code> struct and methods in
<code>go.opentelemetry.io/otel/attribute</code> to compute authoritative
<code>Distinct</code> hashes incrementally for attribute filtering and
deduplication. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Lazily evaluate filtered and dropped attributes on measurement hot
paths in <code>go.opentelemetry.io/otel/sdk/metric</code> to avoid
unnecessary attribute set allocations. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
<li>Add <code>ErrExporterShutdown</code> to
<code>go.opentelemetry.io/otel/sdk/log</code> and return it from the
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
exporters when <code>Export</code> is called after
<code>Shutdown</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8773">#8773</a>)</li>
<li>Clarify in <code>go.opentelemetry.io/otel/log</code> that calling
<code>Logger.Enabled</code> is optional and that cached results can
become stale. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8764">#8764</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Export dropped attribute counts in OTLP log records from
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li>Name span events created from OpenTracing logs after the
<code>event</code> log field, falling back to <code>log</code>, instead
of always using an empty name in
<code>go.opentelemetry.io/otel/bridge/opentracing</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8648">#8648</a>)</li>
<li>Count exception attributes omitted due to the attribute count limit
as dropped in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8796">#8796</a>)</li>
<li>Prevent log record and instrumentation scope attributes with empty
keys from reaching processors and exporters in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8797">#8797</a>)</li>
<li>Fix a data race when span attributes are read concurrently in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8706">#8706</a>)</li>
<li>Prevent a panic in <code>(*Set).Filter</code> when called on a nil
receiver in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8792">#8792</a>)</li>
<li>The simple span and log processors record
<code>otel.sdk.processor.{span,log}.processed</code> when the record is
submitted to the exporter instead of after the export completes, and no
longer set <code>error.type</code> from the export outcome, in
<code>go.opentelemetry.io/otel/sdk/trace</code> and
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8705">#8705</a>)</li>
<li>Prevent <code>Resource.MarshalLog</code> from panicking on nil
resources in <code>go.opentelemetry.io/otel/sdk/resource</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8758">#8758</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>chore(deps): update github/codeql-action action to v4.37.6 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8697">open-telemetry/opentelemetry-go#8697</a></li>
<li>chore(deps): update module go.opentelemetry.io/collector/featuregate
to v1.64.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8698">open-telemetry/opentelemetry-go#8698</a></li>
<li>chore(deps): update golang.org/x/telemetry digest to bdd03c3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8699">open-telemetry/opentelemetry-go#8699</a></li>
<li>fix(deps): update module go.opentelemetry.io/collector/pdata to
v1.64.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8700">open-telemetry/opentelemetry-go#8700</a></li>
<li>chore(deps): update module github.com/grpc-ecosystem/grpc-gateway/v2
to v2.30.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8701">open-telemetry/opentelemetry-go#8701</a></li>
<li>chore(deps): update module github.com/rogpeppe/go-internal to
v1.16.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8702">open-telemetry/opentelemetry-go#8702</a></li>
<li>chore(deps): update module github.com/cloudflare/circl to v1.6.5 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8703">open-telemetry/opentelemetry-go#8703</a></li>
<li>Record processor.{span,log}.processed before invoking the exporter
in simple processors by <a
href="https://github.com/cijothomas"><code>@​cijothomas</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8705">open-telemetry/opentelemetry-go#8705</a></li>
<li>perf(sdk/metric): reduce benchmark suite execution time (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8683">#8683</a>)
by <a href="https://github.com/dashpole"><code>@​dashpole</code></a> in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8688">open-telemetry/opentelemetry-go#8688</a></li>
<li>chore(deps): update codspeedhq/action action to v5.0.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8710">open-telemetry/opentelemetry-go#8710</a></li>
<li>attempt 2: Lazily compute filtered and dropped attributes by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8598">open-telemetry/opentelemetry-go#8598</a></li>
<li>fix(deps): update googleapis to c8921c7 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8712">open-telemetry/opentelemetry-go#8712</a></li>
<li>chore(deps): update module github.com/santhosh-tekuri/jsonschema/v6
to v6.0.3 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8708">open-telemetry/opentelemetry-go#8708</a></li>
<li>chore(deps): update github.com/charmbracelet/ultraviolet digest to
402eeaa by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8716">open-telemetry/opentelemetry-go#8716</a></li>
<li>chore(deps): update module github.com/dlclark/regexp2/v2 to v2.6.0
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8715">open-telemetry/opentelemetry-go#8715</a></li>
<li>chore(deps): update mvdan.cc/unparam digest to a64391f by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8717">open-telemetry/opentelemetry-go#8717</a></li>
<li>fix(deps): update golang.org/x to a8b543c by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8720">open-telemetry/opentelemetry-go#8720</a></li>
<li>fix(deps): update googleapis to ec0a776 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/pull/8719">open-telemetry/opentelemetry-go#8719</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel/sdk's
changelog</a>.</em></p>
<blockquote>
<h2>[1.46.0/0.68.0/0.22.0/0.0.19] - 2026-08-25</h2>
<p>This release is the last to support [Go 1.25].
The next release will require at least [Go 1.26].</p>
<h3>Added</h3>
<ul>
<li>Support testing of [Go 1.27]. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8811">#8811</a>)</li>
<li>Support <code>http/json</code> protocol in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8273">#8273</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8775">#8775</a>,
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8831">#8831</a>)</li>
<li>Add <code>Hasher</code> struct and methods in
<code>go.opentelemetry.io/otel/attribute</code> to compute authoritative
<code>Distinct</code> hashes incrementally for attribute filtering and
deduplication. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Lazily evaluate filtered and dropped attributes on measurement hot
paths in <code>go.opentelemetry.io/otel/sdk/metric</code> to avoid
unnecessary attribute set allocations. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8598">#8598</a>)</li>
<li>Add <code>ErrExporterShutdown</code> to
<code>go.opentelemetry.io/otel/sdk/log</code> and return it from the
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
exporters when <code>Export</code> is called after
<code>Shutdown</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8773">#8773</a>)</li>
<li>Clarify in <code>go.opentelemetry.io/otel/log</code> that calling
<code>Logger.Enabled</code> is optional and that cached results can
become stale. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8764">#8764</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Export dropped attribute counts in OTLP log records from
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8829">#8829</a>)</li>
<li>Name span events created from OpenTracing logs after the
<code>event</code> log field, falling back to <code>log</code>, instead
of always using an empty name in
<code>go.opentelemetry.io/otel/bridge/opentracing</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8648">#8648</a>)</li>
<li>Count exception attributes omitted due to the attribute count limit
as dropped in <code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8796">#8796</a>)</li>
<li>Prevent log record and instrumentation scope attributes with empty
keys from reaching processors and exporters in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8797">#8797</a>)</li>
<li>Fix a data race when span attributes are read concurrently in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8706">#8706</a>)</li>
<li>Prevent a panic in <code>(*Set).Filter</code> when called on a nil
receiver in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8792">#8792</a>)</li>
<li>The simple span and log processors record
<code>otel.sdk.processor.{span,log}.processed</code> when the record is
submitted to the exporter instead of after the export completes, and no
longer set <code>error.type</code> from the export outcome, in
<code>go.opentelemetry.io/otel/sdk/trace</code> and
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8705">#8705</a>)</li>
<li>Prevent <code>Resource.MarshalLog</code> from panicking on nil
resources in <code>go.opentelemetry.io/otel/sdk/resource</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8758">#8758</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="58db4c898f"><code>58db4c8</code></a>
Release v1.46.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8858">#8858</a>)</li>
<li><a
href="524fc3c25f"><code>524fc3c</code></a>
chore(deps): update golang.org/x/telemetry digest to 1f5465a (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8853">#8853</a>)</li>
<li><a
href="3b8ef6f6ea"><code>3b8ef6f</code></a>
chore(deps): update codspeedhq/action action to v5.2.1 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8854">#8854</a>)</li>
<li><a
href="cfbeab547f"><code>cfbeab5</code></a>
attribute: clarify xxhash test purpose (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8753">#8753</a>)</li>
<li><a
href="3599b59720"><code>3599b59</code></a>
sdk/log: Add interface stability markers (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8855">#8855</a>)</li>
<li><a
href="08d52dc720"><code>08d52dc</code></a>
otlptracehttp: Accept quoted finite doubles in OTLP JSON (<a
href="https://redirect.github.com/op...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 21:39:42 +03:00
dependabot[bot]
d08e70b32a
build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/azidentity from 1.14.0 to 1.14.1 (#1608)
Bumps
[github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go)
from 1.14.0 to 1.14.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Azure/azure-sdk-for-go/releases">github.com/Azure/azure-sdk-for-go/sdk/azidentity's
releases</a>.</em></p>
<blockquote>
<h2>sdk/azidentity/v1.14.1</h2>
<h2>1.14.1 (2026-08-27)</h2>
<h3>Other Changes</h3>
<ul>
<li>Upgraded dependencies</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="920e79a166"><code>920e79a</code></a>
Prep azidentity for release (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/27473">#27473</a>)</li>
<li><a
href="d86ae78bd6"><code>d86ae78</code></a>
Prep azcore for release (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/27471">#27471</a>)</li>
<li><a
href="33dd768d27"><code>33dd768</code></a>
[azwebpubsub] Fix GenerateClientAccessURL on the TokenCredential path
(<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/27422">#27422</a>)</li>
<li><a
href="a27ca57b4d"><code>a27ca57</code></a>
Upgrade TypeSpec Go emitter dependencies (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/27466">#27466</a>)</li>
<li><a
href="af75eb0f82"><code>af75eb0</code></a>
[AutoPR
sdk-resourcemanager/purestorageblock/armpurestorageblock]-generated-f...</li>
<li><a
href="8dcff8c382"><code>8dcff8c</code></a>
[AutoPR
sdk-resourcemanager/redisenterprise/armredisenterprise]-generated-fro...</li>
<li><a
href="e4569f1adf"><code>e4569f1</code></a>
[AutoPR sdk-resourcemanager/chaos/armchaos]-generated-from-SDK
Generation - G...</li>
<li><a
href="7069bf802d"><code>7069bf8</code></a>
[AutoPR sdk-resourcemanager/horizondb/armhorizondb]-generated-from-SDK
Genera...</li>
<li><a
href="5ceffcea63"><code>5ceffce</code></a>
Bump gh-aw to v0.86.2 for mgmt review workflow (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/27460">#27460</a>)</li>
<li><a
href="663b6ce414"><code>663b6ce</code></a>
Enhance azblob perf tests with OAuth, parallel setup, and profiling (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/27324">#27324</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Azure/azure-sdk-for-go/compare/sdk/azcore/v1.14.0...sdk/azidentity/v1.14.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/Azure/azure-sdk-for-go/sdk/azidentity&package-manager=go_modules&previous-version=1.14.0&new-version=1.14.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 21:14:11 +03:00
dependabot[bot]
00d5aaad79
build(deps): bump github.com/pulumi/pulumi-kubernetes/sdk/v4 from 4.33.0 to 4.34.0 in /deploy (#1609)
Bumps
[github.com/pulumi/pulumi-kubernetes/sdk/v4](https://github.com/pulumi/pulumi-kubernetes)
from 4.33.0 to 4.34.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi-kubernetes/releases">github.com/pulumi/pulumi-kubernetes/sdk/v4's
releases</a>.</em></p>
<blockquote>
<h2>v4.34.0</h2>
<h2>What's Changed</h2>
<ul>
<li>Generate extension-parameterized SDKs from Kubernetes CRDs by <a
href="https://github.com/guineveresaenger"><code>@​guineveresaenger</code></a>
in <a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4437">pulumi/pulumi-kubernetes#4437</a></li>
<li>Fix waitFor JSONPath filters using !=, &gt;= and &lt;= by <a
href="https://github.com/matanbaruch"><code>@​matanbaruch</code></a> in
<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4524">pulumi/pulumi-kubernetes#4524</a></li>
<li>Alias base-provider tokens on extension-served resources by <a
href="https://github.com/guineveresaenger"><code>@​guineveresaenger</code></a>
in <a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4559">pulumi/pulumi-kubernetes#4559</a></li>
<li>Upgrade to Kubernetes v1.37 by <a
href="https://github.com/guineveresaenger"><code>@​guineveresaenger</code></a>
in <a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4570">pulumi/pulumi-kubernetes#4570</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/matanbaruch"><code>@​matanbaruch</code></a>
made their first contribution in <a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4524">pulumi/pulumi-kubernetes#4524</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pulumi/pulumi-kubernetes/compare/v4.33.0...v4.34.0">https://github.com/pulumi/pulumi-kubernetes/compare/v4.33.0...v4.34.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi-kubernetes/blob/master/CHANGELOG.md">github.com/pulumi/pulumi-kubernetes/sdk/v4's
changelog</a>.</em></p>
<blockquote>
<h2>4.34.0 (August 27, 2026)</h2>
<h3>Added</h3>
<ul>
<li>Support adding CustomResourceDefinitions as an extension of the base
<code>kubernetes</code> provider via <code>pulumi package add
&lt;provider&gt; --extension</code>. Extension-served resources alias
their <code>kubernetes:</code>-namespaced token, so state written by a
crd2pulumi-generated SDK is adopted rather than replaced.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade Kubernetes schema and libraries to v1.36.3.</li>
<li>Upgrade Kubernetes schema and libraries to v1.36.4.</li>
<li>Upgrade Kubernetes schema and libraries to v1.37.0. See the <a
href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.37.md">Kubernetes
1.37 release notes</a> for upstream API changes.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>
<p>Restore <code>scheduling.k8s.io/v1alpha1</code>
<code>Workload</code>, which the Kubernetes 1.36 upgrade dropped from
the SDKs, and retain <code>scheduling.k8s.io/v1alpha2</code>
<code>PodGroup</code> and <code>Workload</code>, which Kubernetes 1.37
removes from its OpenAPI specification. Both remain available to
clusters that still serve them, and
<code>scheduling.k8s.io/v1beta1</code> now aliases the older versions so
that existing resources migrate in place rather than being replaced.</p>
</li>
<li>
<p><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4524">#4524</a>
Fix <code>pulumi.com/waitFor</code> rejecting JSONPath filters that use
<code>!=</code>, <code>&gt;=</code> or <code>&lt;=</code>. The
expression was split on every <code>=</code> that was not part of
<code>==</code>, so
<code>jsonpath={.status.conditions[?(@.type!=&quot;Failed&quot;)].status}=True</code>
failed to parse. The path and value are now separated structurally,
which also allows braces inside string literals. Comparing one path
against another
(<code>jsonpath={.status.readyReplicas}={.spec.replicas}</code>) is
still unsupported, but now reports an error instead of silently never
matching.</p>
</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="62281b8356"><code>62281b8</code></a>
Prepare for v4.34.0 release (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4568">#4568</a>)</li>
<li><a
href="06bda92e63"><code>06bda92</code></a>
Automated upgrade: bump pulumi/pulumi to 3.259.0 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4575">#4575</a>)</li>
<li><a
href="738945fe07"><code>738945f</code></a>
Upgrade PR test cluster to Kubernetes v1.36.4 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4577">#4577</a>)</li>
<li><a
href="98a128c095"><code>98a128c</code></a>
Upgrade to Kubernetes v1.37 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4570">#4570</a>)</li>
<li><a
href="2104fc583f"><code>2104fc5</code></a>
Update vulnerable dependencies [SECURITY] (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4573">#4573</a>)</li>
<li><a
href="7acc3a54b3"><code>7acc3a5</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4571">#4571</a>)</li>
<li><a
href="cbfcc91a70"><code>cbfcc91</code></a>
tests: upgrade GKE test cluster to v1.36 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4566">#4566</a>)</li>
<li><a
href="a2d6c72f73"><code>a2d6c72</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4567">#4567</a>)</li>
<li><a
href="d0b118ba3a"><code>d0b118b</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4564">#4564</a>)</li>
<li><a
href="9a02c9e0ad"><code>9a02c9e</code></a>
Alias base-provider tokens on extension-served resources (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4559">#4559</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi-kubernetes/compare/v4.33.0...v4.34.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-09-05 21:13:09 +03:00
dependabot[bot]
57b19e27d2
build(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.1 (#1616)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.82.1 to 1.83.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.83.1</h2>
<h1>Security</h1>
<ul>
<li>xds/rbac: Fix a bug where nested <code>Principal</code> or
<code>Permission</code> rules with <code>:scheme</code> or
<code>grpc-</code> prefixed header matchers were not rejected, which
could cause DENY rules to fail open. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9258">#9258</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/nvxbug"><code>@​nvxbug</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where the <code>host</code> header matcher was
not being replaced with <code>:authority</code> in nested
<code>Principal</code> or <code>Permission</code> rules. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9258">#9258</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/nvxbug"><code>@​nvxbug</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where a header matcher whose name was not
lowercase, such as <code>X-Role</code>, matched no header, which could
cause DENY rules to fail open. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/alimony"><code>@​alimony</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where a <code>:scheme</code> or
<code>grpc-</code> prefixed header matcher was accepted when its name
was not lowercase. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/alimony"><code>@​alimony</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where a <code>Host</code> header matcher was not
replaced with <code>:authority</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/alimony"><code>@​alimony</code></a></li>
</ul>
</li>
</ul>
<h1>Performance</h1>
<ul>
<li>transport: Restrict memory overhead of buffering small data frames.
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/9331">#9331</a>)</li>
</ul>
<h2>Release 1.83.0</h2>
<h1>Security</h1>
<ul>
<li>server: Stop reading from connections when flooded by HTTP/2 frames
to mitigate resource exhaustion. The default value for this limit is 100
frames, excluding DATA and HEADERS, and may be changed by setting
environment variable
<code>GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT</code>.</li>
<li>xds/rbac: Support <code>Metadata</code> and
<code>RequestedServerName</code> permissions matcher fields. If present
in a DENY rule, previously these would be ignored and fail-open.</li>
<li>xds/rbac: Fix panic when parsing unsupported fields in
<code>NotRule</code>/<code>NotId</code> permissions.</li>
<li>xds/rbac: Support the deprecated <code>source_ip</code> principal
identifier by treating it as equivalent to
<code>direct_remote_ip</code>.</li>
<li>xds: Fix panic when parsing route header matchers configured with
empty <code>exact_match</code>, <code>prefix_match</code>, or
<code>suffix_match</code> strings. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9223">#9223</a>)</li>
</ul>
<h1>New Features</h1>
<ul>
<li>xds/googlec2p: Enable DirectPath over Interconnect support for
on-premises clients via the <code>force-xds</code> target URI query
parameter. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9133">#9133</a>)</li>
<li>xds: Enable xDS configuration to control which fields get propagated
from ORCA backend metric reports to LRS load reports. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9145">#9145</a>)</li>
<li>authz: Add <code>OnPolicyUpdate</code> callback to
<code>FileWatcherOptions</code> to notify when an authz policy is loaded
or updated. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9142">#9142</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/hnefatl"><code>@​hnefatl</code></a></li>
</ul>
</li>
<li>xds: Add support for the GCP Authentication HTTP Filter, which
automatically fetches and attaches GCP Service Account Identity JWT
tokens to outgoing RPCs.
<ul>
<li>This feature can be enabled by setting environment variable
<code>GRPC_EXPERIMENTAL_XDS_GCP_AUTHENTICATION_FILTER=true</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9119">#9119</a>)</li>
</ul>
</li>
<li>xds: Add support for xDS-based HTTP CONNECT proxies.
<ul>
<li>This feature can be enabled by setting environment variable
<code>GRPC_EXPERIMENTAL_XDS_HTTP_CONNECT=true</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9151">#9151</a>)</li>
</ul>
</li>
<li>xds: Add support for <code>contains_match</code> in route header
matchers. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9223">#9223</a>)</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>credentials/alts: Fix panic when processing malformed frames by
validating that the message frame length exceeds the message type field
size. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9197">#9197</a>)</li>
<li>grpc: Fix compilation on Plan 9 targets (<code>GOOS=plan9</code>),
broken since v1.81.0. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9255">#9255</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/Yusufihsangorgel"><code>@​Yusufihsangorgel</code></a></li>
</ul>
</li>
</ul>
<h2>Release 1.82.2</h2>
<h1>Security</h1>
<ul>
<li>server: Reject requests missing both <code>:authority</code> and
<code>Host</code> headers with HTTP 400 and status
<code>Internal</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/pull/9365">grpc/grpc-go#9365</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1550d9e0cd"><code>1550d9e</code></a>
Change version to 1.83.1 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9336">#9336</a>)</li>
<li><a
href="ebba6f3f1b"><code>ebba6f3</code></a>
Cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/9258">#9258</a>
and <a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>
into v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9335">#9335</a>)</li>
<li><a
href="8cfeca0e1e"><code>8cfeca0</code></a>
Cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/9331">#9331</a> to
v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9333">#9333</a>)</li>
<li><a
href="dec6951305"><code>dec6951</code></a>
Change version to 1.83.1-dev (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9229">#9229</a>)</li>
<li><a
href="4c226daff8"><code>4c226da</code></a>
Change version to 1.83.0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9228">#9228</a>)</li>
<li><a
href="c198988aa9"><code>c198988</code></a>
Cherrypick 9223 into v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9279">#9279</a>)</li>
<li><a
href="8ce3ebf24a"><code>8ce3ebf</code></a>
Cherrypick PR 9255 into v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9263">#9263</a>)</li>
<li><a
href="e39384978c"><code>e393849</code></a>
Cherry-pick recent changes from master (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9240">#9240</a>)</li>
<li><a
href="2a112a82f5"><code>2a112a8</code></a>
authz: add onPolicyUpdate callback to authz file watcher (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9142">#9142</a>)</li>
<li><a
href="1a80fca960"><code>1a80fca</code></a>
vet: adds a check to disallow usage of regex.Compile in xDS code (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9216">#9216</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-go/compare/v1.82.1...v1.83.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.82.1&new-version=1.83.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/registry/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-09-05 21:03:44 +03:00
dependabot[bot]
da98ceced3
build(deps): bump google.golang.org/grpc from 1.82.1 to 1.83.1 in /deploy (#1617)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.82.1 to 1.83.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.83.1</h2>
<h1>Security</h1>
<ul>
<li>xds/rbac: Fix a bug where nested <code>Principal</code> or
<code>Permission</code> rules with <code>:scheme</code> or
<code>grpc-</code> prefixed header matchers were not rejected, which
could cause DENY rules to fail open. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9258">#9258</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/nvxbug"><code>@​nvxbug</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where the <code>host</code> header matcher was
not being replaced with <code>:authority</code> in nested
<code>Principal</code> or <code>Permission</code> rules. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9258">#9258</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/nvxbug"><code>@​nvxbug</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where a header matcher whose name was not
lowercase, such as <code>X-Role</code>, matched no header, which could
cause DENY rules to fail open. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/alimony"><code>@​alimony</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where a <code>:scheme</code> or
<code>grpc-</code> prefixed header matcher was accepted when its name
was not lowercase. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/alimony"><code>@​alimony</code></a></li>
</ul>
</li>
<li>xds/rbac: Fix a bug where a <code>Host</code> header matcher was not
replaced with <code>:authority</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/alimony"><code>@​alimony</code></a></li>
</ul>
</li>
</ul>
<h1>Performance</h1>
<ul>
<li>transport: Restrict memory overhead of buffering small data frames.
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/9331">#9331</a>)</li>
</ul>
<h2>Release 1.83.0</h2>
<h1>Security</h1>
<ul>
<li>server: Stop reading from connections when flooded by HTTP/2 frames
to mitigate resource exhaustion. The default value for this limit is 100
frames, excluding DATA and HEADERS, and may be changed by setting
environment variable
<code>GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT</code>.</li>
<li>xds/rbac: Support <code>Metadata</code> and
<code>RequestedServerName</code> permissions matcher fields. If present
in a DENY rule, previously these would be ignored and fail-open.</li>
<li>xds/rbac: Fix panic when parsing unsupported fields in
<code>NotRule</code>/<code>NotId</code> permissions.</li>
<li>xds/rbac: Support the deprecated <code>source_ip</code> principal
identifier by treating it as equivalent to
<code>direct_remote_ip</code>.</li>
<li>xds: Fix panic when parsing route header matchers configured with
empty <code>exact_match</code>, <code>prefix_match</code>, or
<code>suffix_match</code> strings. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9223">#9223</a>)</li>
</ul>
<h1>New Features</h1>
<ul>
<li>xds/googlec2p: Enable DirectPath over Interconnect support for
on-premises clients via the <code>force-xds</code> target URI query
parameter. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9133">#9133</a>)</li>
<li>xds: Enable xDS configuration to control which fields get propagated
from ORCA backend metric reports to LRS load reports. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9145">#9145</a>)</li>
<li>authz: Add <code>OnPolicyUpdate</code> callback to
<code>FileWatcherOptions</code> to notify when an authz policy is loaded
or updated. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9142">#9142</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/hnefatl"><code>@​hnefatl</code></a></li>
</ul>
</li>
<li>xds: Add support for the GCP Authentication HTTP Filter, which
automatically fetches and attaches GCP Service Account Identity JWT
tokens to outgoing RPCs.
<ul>
<li>This feature can be enabled by setting environment variable
<code>GRPC_EXPERIMENTAL_XDS_GCP_AUTHENTICATION_FILTER=true</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9119">#9119</a>)</li>
</ul>
</li>
<li>xds: Add support for xDS-based HTTP CONNECT proxies.
<ul>
<li>This feature can be enabled by setting environment variable
<code>GRPC_EXPERIMENTAL_XDS_HTTP_CONNECT=true</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9151">#9151</a>)</li>
</ul>
</li>
<li>xds: Add support for <code>contains_match</code> in route header
matchers. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9223">#9223</a>)</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>credentials/alts: Fix panic when processing malformed frames by
validating that the message frame length exceeds the message type field
size. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9197">#9197</a>)</li>
<li>grpc: Fix compilation on Plan 9 targets (<code>GOOS=plan9</code>),
broken since v1.81.0. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9255">#9255</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/Yusufihsangorgel"><code>@​Yusufihsangorgel</code></a></li>
</ul>
</li>
</ul>
<h2>Release 1.82.2</h2>
<h1>Security</h1>
<ul>
<li>server: Reject requests missing both <code>:authority</code> and
<code>Host</code> headers with HTTP 400 and status
<code>Internal</code>. (<a
href="https://redirect.github.com/grpc/grpc-go/pull/9365">grpc/grpc-go#9365</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="1550d9e0cd"><code>1550d9e</code></a>
Change version to 1.83.1 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9336">#9336</a>)</li>
<li><a
href="ebba6f3f1b"><code>ebba6f3</code></a>
Cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/9258">#9258</a>
and <a
href="https://redirect.github.com/grpc/grpc-go/issues/9332">#9332</a>
into v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9335">#9335</a>)</li>
<li><a
href="8cfeca0e1e"><code>8cfeca0</code></a>
Cherry-pick <a
href="https://redirect.github.com/grpc/grpc-go/issues/9331">#9331</a> to
v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9333">#9333</a>)</li>
<li><a
href="dec6951305"><code>dec6951</code></a>
Change version to 1.83.1-dev (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9229">#9229</a>)</li>
<li><a
href="4c226daff8"><code>4c226da</code></a>
Change version to 1.83.0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9228">#9228</a>)</li>
<li><a
href="c198988aa9"><code>c198988</code></a>
Cherrypick 9223 into v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9279">#9279</a>)</li>
<li><a
href="8ce3ebf24a"><code>8ce3ebf</code></a>
Cherrypick PR 9255 into v1.83.x (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9263">#9263</a>)</li>
<li><a
href="e39384978c"><code>e393849</code></a>
Cherry-pick recent changes from master (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9240">#9240</a>)</li>
<li><a
href="2a112a82f5"><code>2a112a8</code></a>
authz: add onPolicyUpdate callback to authz file watcher (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9142">#9142</a>)</li>
<li><a
href="1a80fca960"><code>1a80fca</code></a>
vet: adds a check to disallow usage of regex.Compile in xDS code (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9216">#9216</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-go/compare/v1.82.1...v1.83.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.82.1&new-version=1.83.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/registry/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 20:52:50 +03:00
dependabot[bot]
71f3a1b62e
build(deps): bump anchore/sbom-action from 0.24.0 to 0.24.2 in the actions group (#1610)
Bumps the actions group with 1 update:
[anchore/sbom-action](https://github.com/anchore/sbom-action).

Updates `anchore/sbom-action` from 0.24.0 to 0.24.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/anchore/sbom-action/releases">anchore/sbom-action's
releases</a>.</em></p>
<blockquote>
<h2>v0.24.2</h2>
<h3>Added Features</h3>
<ul>
<li>bump eslint from 10.8.1 to 10.9.0 [<a
href="https://redirect.github.com/anchore/sbom-action/pull/724">#724</a>
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>]</li>
</ul>
<h3>Additional Changes</h3>
<ul>
<li>add makefile target to bump syft [<a
href="https://redirect.github.com/anchore/sbom-action/pull/620">#620</a>
<a
href="https://github.com/willmurphyscode"><code>@​willmurphyscode</code></a>]</li>
<li>update zizmor workflow triggers [<a
href="https://redirect.github.com/anchore/sbom-action/pull/624">#624</a>
<a
href="https://github.com/wagoodman"><code>@​wagoodman</code></a>]</li>
<li>require zizmor security events [<a
href="https://redirect.github.com/anchore/sbom-action/pull/621">#621</a>
<a
href="https://github.com/wagoodman"><code>@​wagoodman</code></a>]</li>
</ul>
<p><strong><a
href="https://github.com/anchore/sbom-action/compare/v0.24.0...v0.24.2">(Full
Changelog)</a></strong></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3ad7283483"><code>3ad7283</code></a>
ops: update write permissions for release (<a
href="https://redirect.github.com/anchore/sbom-action/issues/723">#723</a>)</li>
<li><a
href="31f5287d0c"><code>31f5287</code></a>
chore(deps-dev): bump eslint from 10.8.1 to 10.9.0 (<a
href="https://redirect.github.com/anchore/sbom-action/issues/724">#724</a>)</li>
<li><a
href="aa80c8c5bd"><code>aa80c8c</code></a>
chore(deps): update Syft to latest release (<a
href="https://redirect.github.com/anchore/sbom-action/issues/722">#722</a>)</li>
<li><a
href="74b54e97f6"><code>74b54e9</code></a>
chore(deps): bump lodash from 4.17.23 to 4.18.1 (<a
href="https://redirect.github.com/anchore/sbom-action/issues/623">#623</a>)</li>
<li><a
href="6b92ff5b2c"><code>6b92ff5</code></a>
chore(deps-dev): bump tsx from 4.23.11 to 4.23.12 (<a
href="https://redirect.github.com/anchore/sbom-action/issues/721">#721</a>)</li>
<li><a
href="4f8983b931"><code>4f8983b</code></a>
chore(deps-dev): bump typescript-eslint from 8.65.0 to 8.67.0 (<a
href="https://redirect.github.com/anchore/sbom-action/issues/719">#719</a>)</li>
<li><a
href="10f27f499c"><code>10f27f4</code></a>
chore(deps-dev): bump eslint from 10.5.0 to 10.8.1 (<a
href="https://redirect.github.com/anchore/sbom-action/issues/720">#720</a>)</li>
<li><a
href="249403a067"><code>249403a</code></a>
chore(deps-dev): bump <code>@​types/node</code> from 26.1.0 to 26.2.0
(<a
href="https://redirect.github.com/anchore/sbom-action/issues/718">#718</a>)</li>
<li><a
href="cbf8daab5e"><code>cbf8daa</code></a>
chore(deps): bump anchore/workflows/.github/workflows/check-gate.yaml
(<a
href="https://redirect.github.com/anchore/sbom-action/issues/693">#693</a>)</li>
<li><a
href="6afc793958"><code>6afc793</code></a>
fix: pin syft install.sh to the release tag being installed (<a
href="https://redirect.github.com/anchore/sbom-action/issues/716">#716</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/anchore/sbom-action/compare/v0.24.0...v0.24.2">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=anchore/sbom-action&package-manager=github_actions&previous-version=0.24.0&new-version=0.24.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-09-05 20:30:25 +03:00
dependabot[bot]
6036804f1c
build(deps): bump the opentelemetry group across 1 directory with 6 updates (#1530)
Bumps the opentelemetry group with 2 updates in the / directory:
[go.opentelemetry.io/contrib/instrumentation/runtime](https://github.com/open-telemetry/opentelemetry-go-contrib)
and
[go.opentelemetry.io/otel/exporters/prometheus](https://github.com/open-telemetry/opentelemetry-go).

Updates `go.opentelemetry.io/contrib/instrumentation/runtime` from
0.69.0 to 0.70.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/instrumentation/runtime's
changelog</a>.</em></p>
<blockquote>
<h2>[1.45.0/2.5.2/0.70.0/0.37.2/0.25.0/0.20.0/0.16.2/0.17.0] -
2026-08-03</h2>
<h3>Added</h3>
<ul>
<li>Add <code>go.opentelemetry.io/contrib/detectors/ibmcloud/vpc</code>,
a new resource detector for IBM Cloud VPC virtual server instances,
ported from
<code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/ibmcloud/vpc</code>.
Detects <code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>cloud.availability_zone</code>,
<code>cloud.account.id</code>, <code>cloud.resource_id</code>,
<code>host.id</code>, <code>host.image.id</code>,
<code>host.image.name</code>, <code>host.name</code>, and
<code>host.type</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9011">#9011</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/k8sapi</code>, a new
resource detector that queries the Kubernetes API. Detects
<code>k8s.node.name</code> and <code>k8s.node.uid</code> when
<code>K8S_NODE_NAME</code> is set via the downward API, and
<code>k8s.cluster.uid</code> derived from the kube-system namespace UID
(works on any Kubernetes distribution). (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9108">#9108</a>)</li>
<li>Add new <code>elasticbeanstalk</code> resource detector for AWS
Elastic Beanstalk, ported from
<code>processor/resourcedetectionprocessor/internal/aws/elasticbeanstalk</code>
in opentelemetry-collector-contrib. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8993">#8993</a>)</li>
<li>The resource created by
<code>go.opentelemetry.io/contrib/otelconf</code> now includes <a
href="https://pkg.go.dev/go.opentelemetry.io/otel/sdk/resource#Default">default
SDK attributes</a>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8990">#8990</a>)</li>
<li>Add support for the <code>aws.ecs</code> resource detector in
<code>go.opentelemetry.io/contrib/otelconf/x</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8915">#8915</a>)</li>
<li>Add support for the <code>aws.eks</code> resource detector in
<code>go.opentelemetry.io/contrib/otelconf/x</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9138">#9138</a>)</li>
<li>Add support for the <code>azure.vm</code> resource detector in
<code>go.opentelemetry.io/contrib/otelconf/x</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9074">#9074</a>)</li>
<li>Add support for the <code>gcp</code> resource detector in
<code>go.opentelemetry.io/contrib/otelconf/x</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9137">#9137</a>)</li>
<li>Add
<code>go.opentelemetry.io/contrib/detectors/azure/azureappservice</code>,
a new resource detector for Azure App Service. Detects
<code>cloud.*</code>, <code>service.name</code>,
<code>azure.resource_group.name</code>,
<code>azure.app_service.instance.id</code>, and
<code>deployment.environment.name</code> from the <code>WEBSITE_*</code>
and <code>REGION_NAME</code> environment variables. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9289">#9289</a>)</li>
<li>Add <code>azurecontainerapps</code> resource detector for Azure
Container Apps. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8939">#8939</a>)</li>
<li>Add
<code>go.opentelemetry.io/contrib/detectors/azure/azurefunctions</code>,
a new resource detector for Azure Functions. Detects
<code>cloud.*</code>, <code>service.name</code>,
<code>azure.resource_group.name</code>, <code>faas.instance</code>, and
<code>deployment.environment.name</code> from the
<code>FUNCTIONS_*</code>, <code>WEBSITE_*</code>,
<code>CONTAINER_NAME</code>, and <code>REGION_NAME</code> environment
variables. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9290">#9290</a>)</li>
<li>Add <code>NewResourceDetector</code> along with the
<code>WithAttributeFilter</code> and <code>WithTagKeyFilter</code>
options in
<code>go.opentelemetry.io/contrib/detectors/azure/azurevm</code>.
<code>WithAttributeFilter</code> restricts the returned resource to the
attributes the filter accepts. <code>WithTagKeyFilter</code> opts in to
<code>azure.tag.&lt;name&gt;</code> attributes for the VM tags whose
keys satisfy the provided predicate; no VM tags are emitted without it.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9162">#9162</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/vultr</code> — a new
resource detector for Vultr Cloud Compute instances, ported from
<code>processor/resourcedetectionprocessor/internal/vultr</code> in
<code>opentelemetry-collector-contrib</code>. Detects
<code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>host.id</code>, and
<code>host.name</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8995">#8995</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade <code>go.opentelemetry.io/otel/semconv</code> to
<code>v1.43.0</code>, including updates across instrumentation and
detector modules.
See <a
href="https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.43.0">semantic-conventions
v1.43.0 release</a> for complete details. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9337">#9337</a>)</li>
<li>Upgrade <code>go.opentelemetry.io/otel/semconv</code> to
<code>v1.42.0</code>, including updates across instrumentation and
detector modules.
See <a
href="https://github.com/open-telemetry/semantic-conventions/releases/tag/v1.42.0">semantic-conventions
v1.42.0 release</a> for complete details. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9196">#9196</a>)</li>
<li>Use direct normalized-key lookups in <code>Carrier.Get</code> and
<code>Carrier.Keys</code> in
<code>go.opentelemetry.io/contrib/propagators/envcar</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9112">#9112</a>)</li>
<li>Update log bridge conversions to use attribute key-values instead of
the removed log key-values in
<code>go.opentelemetry.io/contrib/bridges/otellogr</code>,
<code>go.opentelemetry.io/contrib/bridges/otellogrus</code>,
<code>go.opentelemetry.io/contrib/bridges/otelslog</code>, and
<code>go.opentelemetry.io/contrib/bridges/otelzap</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9180">#9180</a>)</li>
<li>The <code>Version()</code> function in
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>
has been replaced by <code>const Version</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9076">#9076</a>)</li>
<li>Set <code>error.type</code> attribute instead of adding
<code>exception</code> span events in
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gin-gonic/gin/otelgin</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8977">#8977</a>)</li>
<li>Prefer the gRPC dial target over the resolved peer IP for the
<code>server.address</code> and <code>server.port</code> attributes in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8904">#8904</a>)</li>
<li>The detector in
<code>go.opentelemetry.io/contrib/detectors/azure/azurevm</code> now
also detects <code>cloud.account.id</code>,
<code>cloud.availability_zone</code>, <code>azure.vm.name</code>,
<code>azure.vm.size</code>, <code>azure.vm.scaleset.name</code>, and
<code>azure.resource_group.name</code>, and prefers
<code>osProfile.computerName</code> for <code>host.name</code> (falling
back to the VM name), reconciling it with the collector-contrib Azure
resource detector. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9162">#9162</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix Prometheus reader resource label filter configuration in
<code>go.opentelemetry.io/contrib/otelconf/v0.2.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9062">#9062</a>)</li>
<li>Apply
<code>resource.detection/development.attributes.included</code> and
<code>excluded</code> filtering to resource detector attributes in
<code>go.opentelemetry.io/contrib/otelconf/x</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9131">#9131</a>)</li>
<li>Honor the context configured with <code>WithContext</code> when
constructing resources in
<code>go.opentelemetry.io/contrib/otelconf</code> and
<code>go.opentelemetry.io/contrib/otelconf/x</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9160">#9160</a>)</li>
<li>Handle nil response bodies from custom <code>RoundTripper</code>
implementations in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
without panicking. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9184">#9184</a>)</li>
<li>Fix incorrect (overestimated) sum calculation for runtime histograms
in <code>go.opentelemetry.io/contrib/instrumentation/runtime</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9063">#9063</a>)</li>
<li>Fix <code>Severity.UnmarshalText</code> round trip for positive
<code>FATAL</code> offsets above the named range in
<code>go.opentelemetry.io/contrib/processors/minsev</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9197">#9197</a>)</li>
<li>Reduce binary size by fetching ConfigMaps via
<code>rest.HTTPClientFor</code> instead of the Kubernetes clientset in
<code>go.opentelemetry.io/contrib/detectors/aws/eks</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9284">#9284</a>)</li>
<li><code>TextMapPropagator</code> in
<code>go.opentelemetry.io/contrib/propagators/autoprop</code> returns
the no-op propagator for empty input, matching the behavior of
<code>none</code>. An unknown <code>OTEL_PROPAGATORS</code> value still
returns an error with a nil propagator so
<code>NewTextMapPropagator</code> falls back to the default TraceContext
and Baggage propagators instead of disabling propagation. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9163">#9163</a>)</li>
<li>Preserve error-valued attributes nested in a group as grouped
attributes instead of silently dropping them in
<code>go.opentelemetry.io/contrib/bridges/otelslog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9238">#9238</a>)</li>
<li>Fix a data race in
<code>go.opentelemetry.io/contrib/bridges/otelslog</code> where
concurrent <code>Handle</code> calls could corrupt each other's log
attributes because <code>kvBuffer.KeyValues</code> returned a slice
aliasing a shared buffer. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9229">#9229</a>)</li>
<li>Avoid a panic in
<code>go.opentelemetry.io/contrib/bridges/otelzap</code> when a
malformed error field contains a nil or non-error value. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9068">#9068</a>)</li>
<li>Use <code>azure.container_app.instance.id</code> instead of
<code>service.instance.id</code> for the replica name detected by
<code>go.opentelemetry.io/contrib/detectors/azure/azurecontainerapps</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9208">#9208</a>)</li>
<li>Preserve the underlying metadata errors returned with partial
resources from <code>go.opentelemetry.io/contrib/detectors/gcp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9069">#9069</a>)</li>
<li>Copy <code>MultipartForm</code> back to the request
<code>otelmux.Middleware</code> was given after the wrapped handler
returns, so <code>net/http</code> can find and remove the temp files
<code>ParseMultipartForm</code> created on the context-derived request
copy, when <code>otelmux.Middleware</code> wraps a handler directly, in
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
This does not cover a handler panic, nor the common
<code>router.Use(...)</code> integration, where
<code>gorilla/mux</code>'s own routing step makes an additional request
copy the middleware cannot write back through; see <a
href="https://redirect.github.com/gorilla/mux/pull/777">gorilla/mux#777</a>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9361">#9361</a>)</li>
<li>Report the <code>b3</code> header from <code>Fields()</code> for the
default <code>B3Unspecified</code> single-header injection encoding,
matching what <code>Inject</code> writes, in
<code>go.opentelemetry.io/contrib/propagators/b3</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9273">#9273</a>)</li>
<li>Fix <code>go.opentelemetry.io/contrib/propagators/aws/xray</code>
producing deterministic trace and span IDs when the seed read from
<code>crypto/rand</code> silently failed, by switching to
<code>math/rand/v2</code>'s concurrency-safe top-level generator. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9359">#9359</a>)</li>
<li>Strip connection number suffix from connection ID in
<code>go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/v2/mongo/otelmongo</code>
to prevent unbounded metric cardinality. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9352">#9352</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c8a87a60ba"><code>c8a87a6</code></a>
Release v1.45.0/v2.5.2/v0.70.0/v0.37.2/v0.25.0/v0.20.0/v0.16.2/v0.17.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9413">#9413</a>)</li>
<li><a
href="cde125c563"><code>cde125c</code></a>
fix(deps): update aws-sdk-go-v2 monorepo (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9384">#9384</a>)</li>
<li><a
href="88572a7662"><code>88572a7</code></a>
chore(deps): update googleapis to 6ac0973 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9409">#9409</a>)</li>
<li><a
href="e4f511a0f3"><code>e4f511a</code></a>
chore(deps): update github/codeql-action action to v4.37.5 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9410">#9410</a>)</li>
<li><a
href="265eb0b5fe"><code>265eb0b</code></a>
fix(deps): update go.opentelemetry.io/otel digest to 48db2c6 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9317">#9317</a>)</li>
<li><a
href="941ba46979"><code>941ba46</code></a>
chore(deps): update github.com/charmbracelet/ultraviolet digest to
8b69304 (#...</li>
<li><a
href="ededd3b571"><code>ededd3b</code></a>
chore(deps): update module github.com/lucasb-eyer/go-colorful to v1.4.1
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9406">#9406</a>)</li>
<li><a
href="7c6e819d4e"><code>7c6e819</code></a>
fix(deps): update module github.com/atombender/go-jsonschema to v0.24.1
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9405">#9405</a>)</li>
<li><a
href="ec1e544a0d"><code>ec1e544</code></a>
chore(deps): update github.com/lufia/plan9stats digest to 341c2f0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9403">#9403</a>)</li>
<li><a
href="5d7e16aa11"><code>5d7e16a</code></a>
chore(deps): update github.com/golangci/rowserrcheck digest to d2031e3
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9402">#9402</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.69.0...zpages/v0.70.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel` from 1.44.0 to 1.45.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/releases">go.opentelemetry.io/otel's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.45.0/v0.67.0/v0.21.0/v0.0.18</h2>
<h2>Overview</h2>
<h3>Added</h3>
<ul>
<li>Add experimental observability metrics to
<code>BatchProcessor</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7124">#7124</a>)</li>
<li>Add the experimental <code>WithUnsafeAttributes</code> no-copy
attribute option to <code>go.opentelemetry.io/otel/metric/x</code> for
future performance improvements. This API is a work in progress. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8251">#8251</a>)</li>
<li>Add <code>Map</code> and <code>MapValue</code> functions for the new
<code>MAP</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8445">#8445</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Apply <code>AttributeValueLengthLimit</code> recursively to values
contained in <code>attribute.MAP</code> attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8454">#8454</a>)</li>
<li>Remove duplicate keys from <code>attribute.MAP</code> values in
<code>go.opentelemetry.io/otel/sdk/resource</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/log</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in span, event, link, and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in measurement and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/metric</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Extend <code>WithAllowKeyDuplication</code> in
<code>go.opentelemetry.io/otel/sdk/log</code> to disable duplicate-key
removal in <code>attribute.MAP</code> values for instrumentation scope
attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.42.0</code>
package.
The package contains semantic conventions from the <code>v1.42.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/HEAD/semconv/v1.42.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8484">#8484</a>)</li>
<li>Add <code>WithoutPanicRecording</code> as a
<code>TracerProviderOption</code> in
<code>go.opentelemetry.io/otel/sdk/trace</code> to disable exception
event recording for panics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8532">#8532</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.43.0</code>
package.
The package contains semantic conventions from the <code>v1.43.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/HEAD/semconv/v1.43.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.42.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8628">#8628</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>HistogramReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> now uses a
time-unbiased sampling algorithm for exemplars. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8306">#8306</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Use
<code>go.opentelemetry.io/otel/attribute.Value</code> and
<code>go.opentelemetry.io/otel/attribute.KeyValue</code> for log bodies
and attributes in <code>go.opentelemetry.io/otel/log</code>,
<code>go.opentelemetry.io/otel/log/logtest</code>,
<code>go.opentelemetry.io/otel/sdk/log</code>, and
<code>go.opentelemetry.io/otel/sdk/log/logtest</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Encode log bodies and attributes as
<code>go.opentelemetry.io/otel/attribute.Value</code> JSON in
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Improve the performance of hashing <code>BOOLSLICE</code>,
<code>INT64SLICE</code>, <code>FLOAT64SLICE</code>, and
<code>STRINGSLICE</code> attribute values by avoiding reflection for
short slices in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8511">#8511</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_METRICS_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/metrics&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_TRACES_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/traces&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
</ul>
<h3>Deprecated</h3>
<ul>
<li>Deprecate <code>WithExportBufferSize</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. The option remains
available for source compatibility but no longer affects behavior;
<code>BatchProcessor</code> no longer maintains a separate
export-request buffer. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8620">#8620</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>⚠️ <strong>Breaking Change:</strong> Remove <code>Kind</code>,
<code>Value</code>, <code>KeyValue</code>, their constructors, and
attribute conversion helpers from
<code>go.opentelemetry.io/otel/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Remove the
<code>AttributeValueLengthLimit</code> and
<code>AttributeCountLimit</code> fields from <code>RecordFactory</code>
in <code>go.opentelemetry.io/otel/sdk/log/logtest</code>; records
produced by the factory now keep attribute limits disabled so test code
can append exact attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8556">#8556</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Apply TLS certificates configured through environment variables to
gRPC connections in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>.</li>
<li>Prevent panics in
<code>go.opentelemetry.io/otel/bridge/opentracing</code> when
OpenTracing baggage is propagated concurrently with
<code>Span.SetBaggageItem</code>.</li>
<li>Fix an off-by-one error in <code>FixedSizeReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> that prevented
the first exemplar from being sampled after the reservoir was filled.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8309">#8309</a>)</li>
<li>Interpret HTTP <code>Retry-After</code> header values as seconds
instead of nanoseconds when retrying OTLP HTTP exports in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8383">#8383</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel's
changelog</a>.</em></p>
<blockquote>
<h2>[1.45.0/0.67.0/0.21.0/0.0.18] - 2026-08-03</h2>
<h3>Added</h3>
<ul>
<li>Add experimental observability metrics to
<code>BatchProcessor</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7124">#7124</a>)</li>
<li>Add the experimental <code>WithUnsafeAttributes</code> no-copy
attribute option to <code>go.opentelemetry.io/otel/metric/x</code> for
future performance improvements. This API is a work in progress. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8251">#8251</a>)</li>
<li>Add <code>Map</code> and <code>MapValue</code> functions for the new
<code>MAP</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8445">#8445</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Apply <code>AttributeValueLengthLimit</code> recursively to values
contained in <code>attribute.MAP</code> attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8454">#8454</a>)</li>
<li>Remove duplicate keys from <code>attribute.MAP</code> values in
<code>go.opentelemetry.io/otel/sdk/resource</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/log</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in span, event, link, and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in measurement and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/metric</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Extend <code>WithAllowKeyDuplication</code> in
<code>go.opentelemetry.io/otel/sdk/log</code> to disable duplicate-key
removal in <code>attribute.MAP</code> values for instrumentation scope
attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.42.0</code>
package.
The package contains semantic conventions from the <code>v1.42.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/semconv/v1.42.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8484">#8484</a>)</li>
<li>Add <code>WithoutPanicRecording</code> as a
<code>TracerProviderOption</code> in
<code>go.opentelemetry.io/otel/sdk/trace</code> to disable exception
event recording for panics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8532">#8532</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.43.0</code>
package.
The package contains semantic conventions from the <code>v1.43.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/semconv/v1.43.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.42.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8628">#8628</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>HistogramReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> now uses a
time-unbiased sampling algorithm for exemplars. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8306">#8306</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Use
<code>go.opentelemetry.io/otel/attribute.Value</code> and
<code>go.opentelemetry.io/otel/attribute.KeyValue</code> for log bodies
and attributes in <code>go.opentelemetry.io/otel/log</code>,
<code>go.opentelemetry.io/otel/log/logtest</code>,
<code>go.opentelemetry.io/otel/sdk/log</code>, and
<code>go.opentelemetry.io/otel/sdk/log/logtest</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Encode log bodies and attributes as
<code>go.opentelemetry.io/otel/attribute.Value</code> JSON in
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Improve the performance of hashing <code>BOOLSLICE</code>,
<code>INT64SLICE</code>, <code>FLOAT64SLICE</code>, and
<code>STRINGSLICE</code> attribute values by avoiding reflection for
short slices in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8511">#8511</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_METRICS_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/metrics&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_TRACES_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/traces&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
</ul>
<h3>Deprecated</h3>
<ul>
<li>Deprecate <code>WithExportBufferSize</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. The option remains
available for source compatibility but no longer affects behavior;
<code>BatchProcessor</code> no longer maintains a separate
export-request buffer. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8620">#8620</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>⚠️ <strong>Breaking Change:</strong> Remove <code>Kind</code>,
<code>Value</code>, <code>KeyValue</code>, their constructors, and
attribute conversion helpers from
<code>go.opentelemetry.io/otel/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Remove the
<code>AttributeValueLengthLimit</code> and
<code>AttributeCountLimit</code> fields from <code>RecordFactory</code>
in <code>go.opentelemetry.io/otel/sdk/log/logtest</code>; records
produced by the factory now keep attribute limits disabled so test code
can append exact attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8556">#8556</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Apply TLS certificates configured through environment variables to
gRPC connections in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>.</li>
<li>Prevent panics in
<code>go.opentelemetry.io/otel/bridge/opentracing</code> when
OpenTracing baggage is propagated concurrently with
<code>Span.SetBaggageItem</code>.</li>
<li>Fix an off-by-one error in <code>FixedSizeReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> that prevented
the first exemplar from being sampled after the reservoir was filled.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8309">#8309</a>)</li>
<li>Interpret HTTP <code>Retry-After</code> header values as seconds
instead of nanoseconds when retrying OTLP HTTP exports in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8383">#8383</a>)</li>
<li>Fix a memory leak in the <code>Reservoir</code> implementation in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code>, where storing
the full <code>context.Context</code> pinned large objects such as gRPC
transport buffers. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8389">#8389</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="93a693edee"><code>93a693e</code></a>
Release v1.45.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8693">#8693</a>)</li>
<li><a
href="c65d435b43"><code>c65d435</code></a>
Merge commit from fork</li>
<li><a
href="223f9fdce4"><code>223f9fd</code></a>
sdk/metric: remove obsolete randomFloat64 TODO (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8685">#8685</a>)</li>
<li><a
href="06272bc491"><code>06272bc</code></a>
fix(deps): update googleapis to 6ac0973 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8694">#8694</a>)</li>
<li><a
href="a4f238f576"><code>a4f238f</code></a>
chore(deps): update github.com/charmbracelet/ultraviolet digest to
8b69304 (#...</li>
<li><a
href="37140e7882"><code>37140e7</code></a>
chore(deps): update codspeedhq/action action to v5.0.2 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8690">#8690</a>)</li>
<li><a
href="cef0855960"><code>cef0855</code></a>
chore(deps): update module github.com/lucasb-eyer/go-colorful to v1.4.1
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8689">#8689</a>)</li>
<li><a
href="e814a7281f"><code>e814a72</code></a>
Merge commit from fork</li>
<li><a
href="bfd8eb7f85"><code>bfd8eb7</code></a>
chore(deps): update github.com/golangci/rowserrcheck digest to d2031e3
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8687">#8687</a>)</li>
<li><a
href="48db2c659c"><code>48db2c6</code></a>
chore(deps): update github/codeql-action action to v4.37.5 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8692">#8692</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go/compare/v1.44.0...v1.45.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel/exporters/prometheus` from 0.66.0 to
0.67.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel/exporters/prometheus's
changelog</a>.</em></p>
<blockquote>
<h2>[1.45.0/0.67.0/0.21.0/0.0.18] - 2026-08-03</h2>
<h3>Added</h3>
<ul>
<li>Add experimental observability metrics to
<code>BatchProcessor</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7124">#7124</a>)</li>
<li>Add the experimental <code>WithUnsafeAttributes</code> no-copy
attribute option to <code>go.opentelemetry.io/otel/metric/x</code> for
future performance improvements. This API is a work in progress. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8251">#8251</a>)</li>
<li>Add <code>Map</code> and <code>MapValue</code> functions for the new
<code>MAP</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8445">#8445</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Apply <code>AttributeValueLengthLimit</code> recursively to values
contained in <code>attribute.MAP</code> attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8454">#8454</a>)</li>
<li>Remove duplicate keys from <code>attribute.MAP</code> values in
<code>go.opentelemetry.io/otel/sdk/resource</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/log</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in span, event, link, and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in measurement and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/metric</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Extend <code>WithAllowKeyDuplication</code> in
<code>go.opentelemetry.io/otel/sdk/log</code> to disable duplicate-key
removal in <code>attribute.MAP</code> values for instrumentation scope
attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.42.0</code>
package.
The package contains semantic conventions from the <code>v1.42.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/semconv/v1.42.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8484">#8484</a>)</li>
<li>Add <code>WithoutPanicRecording</code> as a
<code>TracerProviderOption</code> in
<code>go.opentelemetry.io/otel/sdk/trace</code> to disable exception
event recording for panics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8532">#8532</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.43.0</code>
package.
The package contains semantic conventions from the <code>v1.43.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/semconv/v1.43.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.42.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8628">#8628</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>HistogramReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> now uses a
time-unbiased sampling algorithm for exemplars. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8306">#8306</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Use
<code>go.opentelemetry.io/otel/attribute.Value</code> and
<code>go.opentelemetry.io/otel/attribute.KeyValue</code> for log bodies
and attributes in <code>go.opentelemetry.io/otel/log</code>,
<code>go.opentelemetry.io/otel/log/logtest</code>,
<code>go.opentelemetry.io/otel/sdk/log</code>, and
<code>go.opentelemetry.io/otel/sdk/log/logtest</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Encode log bodies and attributes as
<code>go.opentelemetry.io/otel/attribute.Value</code> JSON in
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Improve the performance of hashing <code>BOOLSLICE</code>,
<code>INT64SLICE</code>, <code>FLOAT64SLICE</code>, and
<code>STRINGSLICE</code> attribute values by avoiding reflection for
short slices in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8511">#8511</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_METRICS_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/metrics&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_TRACES_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/traces&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
</ul>
<h3>Deprecated</h3>
<ul>
<li>Deprecate <code>WithExportBufferSize</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. The option remains
available for source compatibility but no longer affects behavior;
<code>BatchProcessor</code> no longer maintains a separate
export-request buffer. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8620">#8620</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>⚠️ <strong>Breaking Change:</strong> Remove <code>Kind</code>,
<code>Value</code>, <code>KeyValue</code>, their constructors, and
attribute conversion helpers from
<code>go.opentelemetry.io/otel/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Remove the
<code>AttributeValueLengthLimit</code> and
<code>AttributeCountLimit</code> fields from <code>RecordFactory</code>
in <code>go.opentelemetry.io/otel/sdk/log/logtest</code>; records
produced by the factory now keep attribute limits disabled so test code
can append exact attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8556">#8556</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Apply TLS certificates configured through environment variables to
gRPC connections in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>.</li>
<li>Prevent panics in
<code>go.opentelemetry.io/otel/bridge/opentracing</code> when
OpenTracing baggage is propagated concurrently with
<code>Span.SetBaggageItem</code>.</li>
<li>Fix an off-by-one error in <code>FixedSizeReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> that prevented
the first exemplar from being sampled after the reservoir was filled.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8309">#8309</a>)</li>
<li>Interpret HTTP <code>Retry-After</code> header values as seconds
instead of nanoseconds when retrying OTLP HTTP exports in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8383">#8383</a>)</li>
<li>Fix a memory leak in the <code>Reservoir</code> implementation in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code>, where storing
the full <code>context.Context</code> pinned large objects such as gRPC
transport buffers. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8389">#8389</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="93a693edee"><code>93a693e</code></a>
Release v1.45.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8693">#8693</a>)</li>
<li><a
href="c65d435b43"><code>c65d435</code></a>
Merge commit from fork</li>
<li><a
href="223f9fdce4"><code>223f9fd</code></a>
sdk/metric: remove obsolete randomFloat64 TODO (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8685">#8685</a>)</li>
<li><a
href="06272bc491"><code>06272bc</code></a>
fix(deps): update googleapis to 6ac0973 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8694">#8694</a>)</li>
<li><a
href="a4f238f576"><code>a4f238f</code></a>
chore(deps): update github.com/charmbracelet/ultraviolet digest to
8b69304 (#...</li>
<li><a
href="37140e7882"><code>37140e7</code></a>
chore(deps): update codspeedhq/action action to v5.0.2 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8690">#8690</a>)</li>
<li><a
href="cef0855960"><code>cef0855</code></a>
chore(deps): update module github.com/lucasb-eyer/go-colorful to v1.4.1
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8689">#8689</a>)</li>
<li><a
href="e814a7281f"><code>e814a72</code></a>
Merge commit from fork</li>
<li><a
href="bfd8eb7f85"><code>bfd8eb7</code></a>
chore(deps): update github.com/golangci/rowserrcheck digest to d2031e3
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8687">#8687</a>)</li>
<li><a
href="48db2c659c"><code>48db2c6</code></a>
chore(deps): update github/codeql-action action to v4.37.5 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8692">#8692</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go/compare/metric/x/v0.66.0...metric/x/v0.67.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `go.opentelemetry.io/otel/metric` from 1.44.0 to 1.45.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/releases">go.opentelemetry.io/otel/metric's
releases</a>.</em></p>
<blockquote>
<h2>Release v1.45.0/v0.67.0/v0.21.0/v0.0.18</h2>
<h2>Overview</h2>
<h3>Added</h3>
<ul>
<li>Add experimental observability metrics to
<code>BatchProcessor</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/7124">#7124</a>)</li>
<li>Add the experimental <code>WithUnsafeAttributes</code> no-copy
attribute option to <code>go.opentelemetry.io/otel/metric/x</code> for
future performance improvements. This API is a work in progress. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8251">#8251</a>)</li>
<li>Add <code>Map</code> and <code>MapValue</code> functions for the new
<code>MAP</code> attribute type in
<code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8445">#8445</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Support <code>MAP</code> attributes in
<code>go.opentelemetry.io/otel/exporters/zipkin</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8453">#8453</a>)</li>
<li>Apply <code>AttributeValueLengthLimit</code> recursively to values
contained in <code>attribute.MAP</code> attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8454">#8454</a>)</li>
<li>Remove duplicate keys from <code>attribute.MAP</code> values in
<code>go.opentelemetry.io/otel/sdk/resource</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/log</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in span, event, link, and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/trace</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Remove duplicate keys by default from <code>attribute.MAP</code>
values in measurement and instrumentation scope attributes in
<code>go.opentelemetry.io/otel/sdk/metric</code> using last-value-wins
semantics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Extend <code>WithAllowKeyDuplication</code> in
<code>go.opentelemetry.io/otel/sdk/log</code> to disable duplicate-key
removal in <code>attribute.MAP</code> values for instrumentation scope
attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8471">#8471</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.42.0</code>
package.
The package contains semantic conventions from the <code>v1.42.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/HEAD/semconv/v1.42.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.41.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8484">#8484</a>)</li>
<li>Add <code>WithoutPanicRecording</code> as a
<code>TracerProviderOption</code> in
<code>go.opentelemetry.io/otel/sdk/trace</code> to disable exception
event recording for panics. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8532">#8532</a>)</li>
<li>Add the <code>go.opentelemetry.io/otel/semconv/v1.43.0</code>
package.
The package contains semantic conventions from the <code>v1.43.0</code>
version of the OpenTelemetry Semantic Conventions.
See the <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/HEAD/semconv/v1.43.0/MIGRATION.md">migration
documentation</a> for information on how to upgrade from
<code>go.opentelemetry.io/otel/semconv/v1.42.0</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8628">#8628</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li><code>HistogramReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> now uses a
time-unbiased sampling algorithm for exemplars. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8306">#8306</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Use
<code>go.opentelemetry.io/otel/attribute.Value</code> and
<code>go.opentelemetry.io/otel/attribute.KeyValue</code> for log bodies
and attributes in <code>go.opentelemetry.io/otel/log</code>,
<code>go.opentelemetry.io/otel/log/logtest</code>,
<code>go.opentelemetry.io/otel/sdk/log</code>, and
<code>go.opentelemetry.io/otel/sdk/log/logtest</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Encode log bodies and attributes as
<code>go.opentelemetry.io/otel/attribute.Value</code> JSON in
<code>go.opentelemetry.io/otel/exporters/stdout/stdoutlog</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>Improve the performance of hashing <code>BOOLSLICE</code>,
<code>INT64SLICE</code>, <code>FLOAT64SLICE</code>, and
<code>STRINGSLICE</code> attribute values by avoiding reflection for
short slices in <code>go.opentelemetry.io/otel/attribute</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8511">#8511</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_METRICS_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/metrics&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> <code>WithEndpointURL</code> in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>
no longer appends the default signal path when an endpoint URL has no
path, making the behavior consistent with
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>
and with setting the endpoint through
<code>OTEL_EXPORTER_OTLP_TRACES_ENDPOINT</code>. If the URL has no path
component, the root path (<code>/</code>) is used. Use
<code>WithEndpointURL(url.JoinPath(endpoint,
&quot;/v1/traces&quot;))</code> to preserve the previous behavior. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8538">#8538</a>)</li>
</ul>
<h3>Deprecated</h3>
<ul>
<li>Deprecate <code>WithExportBufferSize</code> in
<code>go.opentelemetry.io/otel/sdk/log</code>. The option remains
available for source compatibility but no longer affects behavior;
<code>BatchProcessor</code> no longer maintains a separate
export-request buffer. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8620">#8620</a>)</li>
</ul>
<h3>Removed</h3>
<ul>
<li>⚠️ <strong>Breaking Change:</strong> Remove <code>Kind</code>,
<code>Value</code>, <code>KeyValue</code>, their constructors, and
attribute conversion helpers from
<code>go.opentelemetry.io/otel/log</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8490">#8490</a>)</li>
<li>⚠️ <strong>Breaking Change:</strong> Remove the
<code>AttributeValueLengthLimit</code> and
<code>AttributeCountLimit</code> fields from <code>RecordFactory</code>
in <code>go.opentelemetry.io/otel/sdk/log/logtest</code>; records
produced by the factory now keep attribute limits disabled so test code
can append exact attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8556">#8556</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Apply TLS certificates configured through environment variables to
gRPC connections in
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploggrpc</code>.</li>
<li>Prevent panics in
<code>go.opentelemetry.io/otel/bridge/opentracing</code> when
OpenTracing baggage is propagated concurrently with
<code>Span.SetBaggageItem</code>.</li>
<li>Fix an off-by-one error in <code>FixedSizeReservoir</code> in
<code>go.opentelemetry.io/otel/sdk/metric/exemplar</code> that prevented
the first exemplar from being sampled after the reservoir was filled.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8309">#8309</a>)</li>
<li>Interpret HTTP <code>Retry-After</code> header values as seconds
instead of nanoseconds when retrying OTLP HTTP exports in
<code>go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp</code>,
<code>go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp</code>,
and
<code>go.opentelemetry.io/otel/exporters/otlp/otlplog/otlploghttp</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go/issues/8383">#8383</a>)</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go/blob/main/CHANGELOG.md">go.opentelemetry.io/otel/metric's
changelog</a>.</em></p>
<blockquote>
<h2>[1.45.0/0.67.0/0.21.0/0.0.18] - 2026-08-03</h2>
<h3>Added</h3>
<ul>
<li>Add experimental observability me...

_Description has been truncated_

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-08-21 01:48:19 +03:00
dependabot[bot]
3c1ee7d272
build(deps): bump github.com/google/go-containerregistry from 0.21.8 to 0.21.9 (#1531)
Bumps
[github.com/google/go-containerregistry](https://github.com/google/go-containerregistry)
from 0.21.8 to 0.21.9.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/go-containerregistry/releases">github.com/google/go-containerregistry's
releases</a>.</em></p>
<blockquote>
<h2>v0.21.9</h2>
<h2>What's Changed</h2>
<ul>
<li>actions: pin slsa generator by version by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2395">google/go-containerregistry#2395</a></li>
<li>fix: prevent data race on scope refreshes within remote.writer by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2396">google/go-containerregistry#2396</a></li>
<li>fix: remove '.' from unsafe path prefixes by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2400">google/go-containerregistry#2400</a></li>
<li>build(deps): bump the actions group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2398">google/go-containerregistry#2398</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/go-containerregistry/compare/v0.21.8...v0.21.9">https://github.com/google/go-containerregistry/compare/v0.21.8...v0.21.9</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7b32099eb1"><code>7b32099</code></a>
build(deps): bump the actions group with 3 updates (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2398">#2398</a>)</li>
<li><a
href="2a4447d669"><code>2a4447d</code></a>
fix: remove '.' from unsafe path prefixes (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2400">#2400</a>)</li>
<li><a
href="43cc3e8e7d"><code>43cc3e8</code></a>
fix: prevent data race on scope refreshes within remote.writer (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2396">#2396</a>)</li>
<li><a
href="7775aab7ad"><code>7775aab</code></a>
actions: pin slsa generator version following linter exception (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2395">#2395</a>)</li>
<li>See full diff in <a
href="https://github.com/google/go-containerregistry/compare/v0.21.8...v0.21.9">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/google/go-containerregistry&package-manager=go_modules&previous-version=0.21.8&new-version=0.21.9)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-08-21 01:48:09 +03:00
Radoslav Dimitrov
5022e04399
ci: widen the publish-attempt path list (#1560)
#1524 tried to publish by adding
`data/servers/io.decisionrules/server.json`. The detector ran fine and
logged:

```
Non-publish file changed: data/servers/io.decisionrules/server.json
PR #1524 match=false
```

The path list only knew `servers/**` at the repo root and exactly
`data/seed.json`. Putting the file under `data/servers/` is a natural
guess given `data/seed.json` exists, and it fell straight through.

Adds `data/servers/**` plus root-level `server.json` / `servers.json`.
`find` confirms nothing legitimate lives at any of those paths today.

The list stays explicit rather than becoming a broad `**/server.json`
glob. The classifier only flags a PR when *every* changed file matches,
which makes widening asymmetric: too narrow silently misses spam, too
broad auto-closes a legitimate single-file PR.

Both copies of the list (stage 1 and stage 2) are updated identically,
with a comment on each pointing at the other.

## Testing

`actionlint` clean. macOS ships bash 3.2, so I extracted the literal `if
[[ ... ]]` condition from each workflow file and ran it under bash 5 in
Docker — testing the shipped text rather than a retyped copy. Both
copies are byte-identical and agree:

```
MATCH data/servers/io.decisionrules/server.json   # PR 1524
MATCH servers/com.aradia/x.json                   # PR 1549
MATCH data/seed.json
MATCH server.json
MATCH servers.json
keep  internal/api/handler.go
keep  internal/servers/service.go
keep  data/servers.md
keep  docs/README.md
```

Also dry-ran the full classifier against all 35 currently-open PRs from
untrusted authors: **0 would be closed**. No legitimate open PR is
affected.

## Known remaining gap (deliberately not fixed here)

The detector does not run at all for authors new to GitHub. This repo's
Actions approval policy is `first_time_contributors_new_to_github`, so
their fork PRs sit in `action_required` until a maintainer approves the
run. That is why #1549 was never flagged.

I'm leaving that alone for now because the numbers don't justify the
fix. Since the automation landed on 2026-07-09 it has had **71 detect
runs: 70 ran, 1 was gated**. It has correctly closed 3 publish attempts
(SAGE, Diagram Generation API, Kairos Signal) and missed 2 — one to the
path bug this PR fixes, one to the gate. So the gate costs roughly one
missed PR every six weeks, and those get closed manually within a day.

The only ways around it are `pull_request_target` (runs untrusted PRs in
a privileged context — one future `actions/checkout` from being a
privilege-escalation hole) or a scheduled sweep (works, but trades the
two-stage design for cron semantics and a ~15 min delay). Neither seems
worth it at that rate. Happy to open a follow-up if you'd rather close
the gap.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 01:43:05 +03:00
Radoslav Dimitrov
8759d9d8c0
ci: bump golangci-lint to v2.13.1 to fix panic on Go 1.27 (#1561)
CI is red on `main` and on every open PR (including the Dependabot PRs
#1531, #1552–#1554) with:

```
panic: file requires newer Go version go1.27 (application built with go1.26)
golangci-lint exit with code 2
```

## Cause

`actions/setup-go` with `go-version: 'stable'` started resolving to
**go1.27.0**. The pinned golangci-lint **v2.11.4** release binary is
built with **go1.26**, and its `go/types` refuses to typecheck source
files declaring a newer language version. Nothing in the failing PRs is
at fault.

## Fix

Bump to **golangci-lint v2.13.1**, whose release binaries are built with
go1.27, so linting works under `stable` again.

That bump also pulls in newer linter versions, which surface 57 findings
this tree did not have before. Handled as follows:

| Linter | Count | Resolution |
|---|---|---|
| `goconst` | 50 | 39 were repeated literals in `_test.go` files —
goconst started counting those in v2.12.0 (golangci-lint#6480 exposed
`ignore-tests`). Fixture data like `"1.0.0"` (89 occurrences) is not a
missing constant, so `goconst.ignore-tests: true`. The other 11 were
real duplication in production code (OpenAPI tags, the `bearer` security
scheme name, `$ref`, `http`/`https`) and became named constants. |
| `gosec` G710 | 1 | **True positive, fixed.** See below. |
| `staticcheck` SA1019 | 6 | Go 1.26 deprecated `ecdsa.PublicKey.X/Y`
and `PrivateKey.D`. Annotated with the same targeted `nolint` +
rationale already used for `ScalarBaseMult` in
`cmd/publisher/auth/common.go`. |

### The open redirect is real

`TrailingSlashMiddleware` copied the entire `*url.URL` before rewriting
the path. For an absolute-form request URI — legal for a Go HTTP server
to parse, e.g. `GET http://evil.com/foo/ HTTP/1.1` — `r.URL.Scheme` and
`r.URL.Host` are populated, and they were echoed straight back in the
`Location` header. The redirect target is now built from the cleaned
path and query alone. The existing `path.Clean` hardening for
GHSA-v8vw-gw5j-w7m6 (protocol-relative `//evil.com/`) is unchanged.

### Also

Switched `gomodguard` → `gomodguard_v2`; the former is deprecated as of
v2.12.0 and was emitting a warning on every run.

## Verification

- `golangci-lint v2.13.1` against this tree: **0 issues**, no
deprecation warnings
- `make validate`: all validations passed
- `go build ./...` and tests for every touched package pass (DB-backed
tests need Postgres; left to CI)

## Note on migrating the ecdsa key paths

Moving those six sites to `PublicKey.Bytes` /
`ParseUncompressedPublicKey` / `crypto/ecdh` touches key parsing and
signature verification. It should be its own reviewed PR rather than
riding along on a CI unblock. Happy to open one.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-21 00:14:13 +03:00
dependabot[bot]
4ec2ed3f9f
build(deps): bump golang.org/x/mod from 0.38.0 to 0.40.0 (#1552)
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.38.0 to
0.40.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d3398d06de"><code>d3398d0</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="57549bfb0d"><code>57549bf</code></a>
sumdb: ignore unrelated hashes in Lookup</li>
<li><a
href="96f62ae6e9"><code>96f62ae</code></a>
sumdb/tlog: fix TileHashReader authentication bypass</li>
<li><a
href="13be9020bb"><code>13be902</code></a>
go.mod: update golang.org/x dependencies</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.38.0...v0.40.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/mod&package-manager=go_modules&previous-version=0.38.0&new-version=0.40.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 22:47:32 +03:00
dependabot[bot]
17dec17a41
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.255.0 to 3.257.0 in /deploy (#1553)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.255.0 to 3.257.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.257.0</h2>
<h2>3.257.0 (2026-08-13)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Offer to create a first project after logging in to an account
with no stacks <a
href="https://redirect.github.com/pulumi/pulumi/pull/24133">#24133</a></li>
<li>[cli/do] Auto-assign identifiers to existing stack resources in
<code>pulumi do</code> input expressions, and add <code>pulumi do
show-resources</code> to list them <a
href="https://redirect.github.com/pulumi/pulumi/pull/24184">#24184</a></li>
<li>[cli/do] Make &quot;<code>pulumi do &lt;pkg&gt; &lt;resource&gt;
patch &lt;name&gt;</code> work in stateful mode, overlaying the supplied
inputs onto the existing snippet&quot; <a
href="https://redirect.github.com/pulumi/pulumi/pull/24295">#24295</a></li>
<li>[cli/state] Implement <code>pulumi state get</code> to show
individual resources <a
href="https://redirect.github.com/pulumi/pulumi/pull/24191">#24191</a></li>
<li>[cli/do] Fall back to an auto-created project and stack under
PULUMI_HOME when <code>pulumi do</code> is invoked outside of a Pulumi
project <a
href="https://redirect.github.com/pulumi/pulumi/pull/24231">#24231</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdkgen/go] Generated output-form invokes pass their arguments to
the core SDK without resolving them first, so invoke dependencies can be
inferred from arguments; generated SDKs now require pulumi SDK v3.255.0
or later <a
href="https://redirect.github.com/pulumi/pulumi/pull/24060">#24060</a></li>
<li>[cli] Make '<code>pulumi stack history events --summary</code>
report the program errors from the language host <a
href="https://redirect.github.com/pulumi/pulumi/pull/24111">#24111</a></li>
<li>[cli/cloud] <code>pulumi api</code>: repeated
<code>-H</code>/<code>--header</code> values for the same header name
now all reach the wire, instead of each one silently overwriting the
last <a
href="https://redirect.github.com/pulumi/pulumi/pull/24180">#24180</a></li>
<li>[cli/package] Maintain <code>--server</code> when adding to the
packages section of Pulumi.yaml <a
href="https://redirect.github.com/pulumi/pulumi/pull/24189">#24189</a></li>
<li>[sdk/go] Fix panics in hooks to not crash the entire process <a
href="https://redirect.github.com/pulumi/pulumi/pull/24218">#24218</a></li>
<li>[programgen/go] <code>for</code> expressions are now generated as Go
loops <a
href="https://redirect.github.com/pulumi/pulumi/pull/24228">#24228</a></li>
<li>[programgen/go] Fix invalid <code>_ := index</code> statement
emitted for resources with a numeric <code>range</code> whose value
variable is unused <a
href="https://redirect.github.com/pulumi/pulumi/pull/24227">#24227</a></li>
<li>[sdk/python] Report an error instead of hanging when a Python
resource depends on its own parent <a
href="https://redirect.github.com/pulumi/pulumi/pull/24230">#24230</a></li>
<li>[sdkgen/go] Generate the missing Go input types for resource input
properties that are deeply nested collections of object types <a
href="https://redirect.github.com/pulumi/pulumi/pull/24236">#24236</a></li>
<li>[programgen/go] Rename properties that collide with reserved names
(e.g. <code>elementType</code>) the same way SDK codegen does, instead
of emitting uncompilable code <a
href="https://redirect.github.com/pulumi/pulumi/pull/24235">#24235</a></li>
<li>[cli/display] Show the value being added when a refresh or provider
diff reports an added property <a
href="https://redirect.github.com/pulumi/pulumi/pull/24245">#24245</a></li>
<li>[cli/plugin] Track when a plugin was last run so <code>pulumi plugin
ls</code> reports an accurate last-used time on all platforms <a
href="https://redirect.github.com/pulumi/pulumi/pull/24251">#24251</a></li>
<li>[engine] Show secrets in diff display when
<code>--show-secrets</code> is passed <a
href="https://redirect.github.com/pulumi/pulumi/pull/24253">#24253</a></li>
<li>[cli] Exit promptly when a command is cancelled while an HTTP
request is being retried <a
href="https://redirect.github.com/pulumi/pulumi/pull/24276">#24276</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[sdk/nodejs] Improve error message when resource registrations are
still pending when pulumi exits <a
href="https://redirect.github.com/pulumi/pulumi/pull/24082">#24082</a></li>
<li>[cli] Pass the invoked command (e.g. <code>pulumi new</code>) to the
browser-based login/signup flow so Pulumi Cloud can attribute signups to
the command that triggered them <a
href="https://redirect.github.com/pulumi/pulumi/pull/24192">#24192</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[sdkgen] Extension-parameterized packages now namespace their
resource and function tokens under their own package name rather than
the base provider's <a
href="https://redirect.github.com/pulumi/pulumi/pull/24143">#24143</a></li>
<li>[java] Upgrade java to v1.35.0 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24202">#24202</a></li>
<li>[backend/diy] The deprecation warning is now an error.
PULUMI_DIY_BACKEND_IGNORE_DEPRECATION_WARNING is now
PULUMI_DIY_BACKEND_IGNORE_DEPRECATION_ERROR. <a
href="https://redirect.github.com/pulumi/pulumi/pull/24216">#24216</a></li>
<li>[java] Upgrade java to v1.36.0 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24243">#24243</a></li>
<li>[sdk/dotnet] Upgrade dotnet to v3.111.1 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24249">#24249</a></li>
</ul>
<h2>v3.256.0</h2>
<h2>3.256.0 (2026-08-04)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Add <code>--ignore-protect</code> flag to <code>pulumi
up</code>, <code>pulumi preview</code> and <code>pulumi destroy</code>
to allow deleting protected resources without unprotecting them in the
state first <a
href="https://redirect.github.com/pulumi/pulumi/pull/24053">#24053</a></li>
<li>[cli/env] Add an optional <code>--export-env-vars</code> flag to the
<code>env provider {aws,azure,gcp}-login</code> commands to also set the
standard SDK environment variables referencing the login outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/24055">#24055</a></li>
<li>[cli] Add a <code>--server</code> flag to <code>pulumi package
add</code>, <code>publish</code>, <code>get-schema</code>,
<code>get-mapping</code>, <code>gen-sdk</code>, <code>info</code> and
<code>pulumi schema check</code> that skips package resolution and uses
the given URL as the plugin download URL <a
href="https://redirect.github.com/pulumi/pulumi/pull/24107">#24107</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.257.0 (2026-08-13)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Offer to create a first project after logging in to an account
with no stacks <a
href="https://redirect.github.com/pulumi/pulumi/pull/24133">#24133</a></li>
<li>[cli/do] Auto-assign identifiers to existing stack resources in
<code>pulumi do</code> input expressions, and add <code>pulumi do
show-resources</code> to list them <a
href="https://redirect.github.com/pulumi/pulumi/pull/24184">#24184</a></li>
<li>[cli/do] Make &quot;<code>pulumi do &lt;pkg&gt; &lt;resource&gt;
patch &lt;name&gt;</code> work in stateful mode, overlaying the supplied
inputs onto the existing snippet&quot; <a
href="https://redirect.github.com/pulumi/pulumi/pull/24295">#24295</a></li>
<li>[cli/state] Implement <code>pulumi state get</code> to show
individual resources <a
href="https://redirect.github.com/pulumi/pulumi/pull/24191">#24191</a></li>
<li>[cli/do] Fall back to an auto-created project and stack under
PULUMI_HOME when <code>pulumi do</code> is invoked outside of a Pulumi
project <a
href="https://redirect.github.com/pulumi/pulumi/pull/24231">#24231</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdkgen/go] Generated output-form invokes pass their arguments to
the core SDK without resolving them first, so invoke dependencies can be
inferred from arguments; generated SDKs now require pulumi SDK v3.255.0
or later <a
href="https://redirect.github.com/pulumi/pulumi/pull/24060">#24060</a></li>
<li>[cli] Make '<code>pulumi stack history events --summary</code>
report the program errors from the language host <a
href="https://redirect.github.com/pulumi/pulumi/pull/24111">#24111</a></li>
<li>[cli/cloud] <code>pulumi api</code>: repeated
<code>-H</code>/<code>--header</code> values for the same header name
now all reach the wire, instead of each one silently overwriting the
last <a
href="https://redirect.github.com/pulumi/pulumi/pull/24180">#24180</a></li>
<li>[cli/package] Maintain <code>--server</code> when adding to the
packages section of Pulumi.yaml <a
href="https://redirect.github.com/pulumi/pulumi/pull/24189">#24189</a></li>
<li>[sdk/go] Fix panics in hooks to not crash the entire process <a
href="https://redirect.github.com/pulumi/pulumi/pull/24218">#24218</a></li>
<li>[programgen/go] <code>for</code> expressions are now generated as Go
loops <a
href="https://redirect.github.com/pulumi/pulumi/pull/24228">#24228</a></li>
<li>[programgen/go] Fix invalid <code>_ := index</code> statement
emitted for resources with a numeric <code>range</code> whose value
variable is unused <a
href="https://redirect.github.com/pulumi/pulumi/pull/24227">#24227</a></li>
<li>[sdk/python] Report an error instead of hanging when a Python
resource depends on its own parent <a
href="https://redirect.github.com/pulumi/pulumi/pull/24230">#24230</a></li>
<li>[sdkgen/go] Generate the missing Go input types for resource input
properties that are deeply nested collections of object types <a
href="https://redirect.github.com/pulumi/pulumi/pull/24236">#24236</a></li>
<li>[programgen/go] Rename properties that collide with reserved names
(e.g. <code>elementType</code>) the same way SDK codegen does, instead
of emitting uncompilable code <a
href="https://redirect.github.com/pulumi/pulumi/pull/24235">#24235</a></li>
<li>[cli/display] Show the value being added when a refresh or provider
diff reports an added property <a
href="https://redirect.github.com/pulumi/pulumi/pull/24245">#24245</a></li>
<li>[cli/plugin] Track when a plugin was last run so <code>pulumi plugin
ls</code> reports an accurate last-used time on all platforms <a
href="https://redirect.github.com/pulumi/pulumi/pull/24251">#24251</a></li>
<li>[engine] Show secrets in diff display when
<code>--show-secrets</code> is passed <a
href="https://redirect.github.com/pulumi/pulumi/pull/24253">#24253</a></li>
<li>[cli] Exit promptly when a command is cancelled while an HTTP
request is being retried <a
href="https://redirect.github.com/pulumi/pulumi/pull/24276">#24276</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[sdk/nodejs] Improve error message when resource registrations are
still pending when pulumi exits <a
href="https://redirect.github.com/pulumi/pulumi/pull/24082">#24082</a></li>
<li>[cli] Pass the invoked command (e.g. <code>pulumi new</code>) to the
browser-based login/signup flow so Pulumi Cloud can attribute signups to
the command that triggered them <a
href="https://redirect.github.com/pulumi/pulumi/pull/24192">#24192</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[sdkgen] Extension-parameterized packages now namespace their
resource and function tokens under their own package name rather than
the base provider's <a
href="https://redirect.github.com/pulumi/pulumi/pull/24143">#24143</a></li>
<li>[java] Upgrade java to v1.35.0 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24202">#24202</a></li>
<li>[backend/diy] The deprecation warning is now an error.
PULUMI_DIY_BACKEND_IGNORE_DEPRECATION_WARNING is now
PULUMI_DIY_BACKEND_IGNORE_DEPRECATION_ERROR. <a
href="https://redirect.github.com/pulumi/pulumi/pull/24216">#24216</a></li>
<li>[java] Upgrade java to v1.36.0 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24243">#24243</a></li>
<li>[sdk/dotnet] Upgrade dotnet to v3.111.1 <a
href="https://redirect.github.com/pulumi/pulumi/pull/24249">#24249</a></li>
</ul>
<h2>3.256.0 (2026-08-04)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Add <code>--ignore-protect</code> flag to <code>pulumi
up</code>, <code>pulumi preview</code> and <code>pulumi destroy</code>
to allow deleting protected resources without unprotecting them in the
state first <a
href="https://redirect.github.com/pulumi/pulumi/pull/24053">#24053</a></li>
<li>[cli/env] Add an optional <code>--export-env-vars</code> flag to the
<code>env provider {aws,azure,gcp}-login</code> commands to also set the
standard SDK environment variables referencing the login outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/24055">#24055</a></li>
<li>[cli] Add a <code>--server</code> flag to <code>pulumi package
add</code>, <code>publish</code>, <code>get-schema</code>,
<code>get-mapping</code>, <code>gen-sdk</code>, <code>info</code> and
<code>pulumi schema check</code> that skips package resolution and uses
the given URL as the plugin download URL <a
href="https://redirect.github.com/pulumi/pulumi/pull/24107">#24107</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[backend/service] Fix <code>pulumi login --insecure</code> not being
reflected in the stack's service secrets manager state, which caused TLS
verification failures against self-hosted backends using self-signed
certificates <a
href="https://redirect.github.com/pulumi/pulumi/pull/24134">#24134</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5a7ae5c7b7"><code>5a7ae5c</code></a>
TestNewDefaultOrgResolution: make sure promises are done (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24307">#24307</a>)</li>
<li><a
href="2b0c722908"><code>2b0c722</code></a>
implement the <code>state get</code> command (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24191">#24191</a>)</li>
<li><a
href="c73539f4be"><code>c73539f</code></a>
securestore: add macOS keychain backends (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24211">#24211</a>)</li>
<li><a
href="53a590bdc6"><code>53a590b</code></a>
update yaml to 1.38.2 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24297">#24297</a>)</li>
<li><a
href="eaf1315db0"><code>eaf1315</code></a>
Honor the request context while an HTTP retry backs off (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24276">#24276</a>)</li>
<li><a
href="c95645f92e"><code>c95645f</code></a>
Generate Go input types for deeply nested collections of objects (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24236">#24236</a>)</li>
<li><a
href="ca7856ce88"><code>ca7856c</code></a>
Add stateful patch method (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24295">#24295</a>)</li>
<li><a
href="67cff339ba"><code>67cff33</code></a>
Update dependency pulumi/pulumi-hcl to v0.15.0 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24293">#24293</a>)</li>
<li><a
href="ad9f49196b"><code>ad9f491</code></a>
Convert <code>go-nested-collections</code> to a conformance test (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24233">#24233</a>)</li>
<li><a
href="8c419838d7"><code>8c41983</code></a>
Add a conformance test for hooks that panic and fix Go runtime to pass
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/24218">#24218</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.255.0...v3.257.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.255.0&new-version=3.257.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 22:47:18 +03:00
dependabot[bot]
91cc4aed20
build(deps): bump github.com/stretchr/testify from 1.11.1 to 1.12.0 (#1554)
Bumps [github.com/stretchr/testify](https://github.com/stretchr/testify)
from 1.11.1 to 1.12.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/stretchr/testify/releases">github.com/stretchr/testify's
releases</a>.</em></p>
<blockquote>
<h2>v1.12.0</h2>
<h2>What's Changed</h2>
<h3>Functional Changes</h3>
<ul>
<li>assert: make *AssertionFunc types just aliases by <a
href="https://github.com/dolmen"><code>@​dolmen</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1563">stretchr/testify#1563</a></li>
</ul>
<h3>Fixes</h3>
<ul>
<li>mock: avoid panic when expected type is nil in Arguments.Diff by <a
href="https://github.com/mutaiib"><code>@​mutaiib</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1775">stretchr/testify#1775</a></li>
<li>mock: revert to pre-v1.11.0 argument matching behavior for mutating
stringers by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1786">stretchr/testify#1786</a></li>
<li>suite: validate method signatures and continue execution for valid
tests by <a
href="https://github.com/vyas-git"><code>@​vyas-git</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1665">stretchr/testify#1665</a></li>
<li>assert.PanicsWithError: report error message by <a
href="https://github.com/olivergondza"><code>@​olivergondza</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1400">stretchr/testify#1400</a></li>
<li>assert: IsIncreasing et al can return false w/out failing by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1787">stretchr/testify#1787</a></li>
<li>add type to error message of assert.Same by <a
href="https://github.com/egawata"><code>@​egawata</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1792">stretchr/testify#1792</a></li>
<li>mock.AssertExpectationsForObjects fix panic with wrong testObject
type. by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1795">stretchr/testify#1795</a></li>
<li>assert: truncate very long objects in test failure messages by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1646">stretchr/testify#1646</a></li>
<li>assert: fix NotSubset error messages using %#v instead of %q (fixes
<a
href="https://redirect.github.com/stretchr/testify/issues/1800">#1800</a>)
by <a href="https://github.com/nghiack7"><code>@​nghiack7</code></a> in
<a
href="https://redirect.github.com/stretchr/testify/pull/1888">stretchr/testify#1888</a></li>
<li>suite: prevent panic when SetupTest skips with HandleStats by <a
href="https://github.com/blackwell-systems"><code>@​blackwell-systems</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1877">stretchr/testify#1877</a></li>
</ul>
<h3>Documentation, Build &amp; CI</h3>
<ul>
<li>CI: test also with Go 1.23 by <a
href="https://github.com/dolmen"><code>@​dolmen</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1783">stretchr/testify#1783</a></li>
<li>Vendor unmaintained github.com/pmezard/go-difflib by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1708">stretchr/testify#1708</a></li>
<li>Promote ccoVeille to maintainer by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1784">stretchr/testify#1784</a></li>
<li>build(deps): bump actions/setup-go from 5 to 6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/stretchr/testify/pull/1790">stretchr/testify#1790</a></li>
<li>assert.YAMLEq: Document mutlidoc behavior by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1791">stretchr/testify#1791</a></li>
<li>_codegen: copy dependency github.com/ernesto-jimenez/gogen/imports
by <a href="https://github.com/dolmen"><code>@​dolmen</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1782">stretchr/testify#1782</a></li>
<li>doc: remove ineffective inline code blocks by <a
href="https://github.com/brackendawson"><code>@​brackendawson</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1714">stretchr/testify#1714</a></li>
<li>Tag generated assertions as non-generated in new .gitattributes by
<a href="https://github.com/ubunatic"><code>@​ubunatic</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1815">stretchr/testify#1815</a></li>
<li>chore: vendor go-spew from <a
href="https://github.com/davecgh/go-spew">https://github.com/davecgh/go-spew</a>
by <a href="https://github.com/ccoVeille"><code>@​ccoVeille</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1827">stretchr/testify#1827</a></li>
<li>require: fix godoc generation for assertions returning a bool by <a
href="https://github.com/Baxromumarov"><code>@​Baxromumarov</code></a>
in <a
href="https://redirect.github.com/stretchr/testify/pull/1850">stretchr/testify#1850</a></li>
<li>docs(require): correct example usage to use assert.CollectT
(require.CollectT does not exist) by <a
href="https://github.com/a2not"><code>@​a2not</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1821">stretchr/testify#1821</a></li>
<li>docs: Fix EventuallyWithTf documentation with proper placement of
formatting arguments by <a
href="https://github.com/a2not"><code>@​a2not</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1842">stretchr/testify#1842</a></li>
<li>EMERITUS.md: add <a
href="https://github.com/tylerb"><code>@​tylerb</code></a> by <a
href="https://github.com/dolmen"><code>@​dolmen</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1812">stretchr/testify#1812</a></li>
<li>CI: test also with Go 1.24 by <a
href="https://github.com/alexandear"><code>@​alexandear</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1856">stretchr/testify#1856</a></li>
<li>deps: bump objx to v0.5.3 and remove dependency cycle issue by <a
href="https://github.com/ccoVeille"><code>@​ccoVeille</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1823">stretchr/testify#1823</a></li>
<li>CI: upgrade GitHub Actions and pin hashes by <a
href="https://github.com/SuperQ"><code>@​SuperQ</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1883">stretchr/testify#1883</a></li>
<li>CI: add _readme-gofmt tool to reformat Go code in README by <a
href="https://github.com/dolmen"><code>@​dolmen</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1889">stretchr/testify#1889</a></li>
<li>CI: add check of GitHub Action pinned hashes against tag by <a
href="https://github.com/dolmen"><code>@​dolmen</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1885">stretchr/testify#1885</a></li>
<li>_codegen: modernize by <a
href="https://github.com/dolmen"><code>@​dolmen</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1890">stretchr/testify#1890</a></li>
<li>build(deps): bump actions/checkout from 6.0.2 to 6.0.3 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/stretchr/testify/pull/1906">stretchr/testify#1906</a></li>
<li>mock: Mock.Return does not exist anymore by <a
href="https://github.com/Kentzo"><code>@​Kentzo</code></a> in <a
href="https://redirect.github.com/stretchr/testify/pull/1905">stretchr/testify#1905</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/mutaiib"><code>@​mutaiib</code></a> made
their first contribution in <a
href="https://redirect.github.com/stretchr/testify/pull/1775">stretchr/testify#1775</a></li>
<li><a href="https://github.com/vyas-git"><code>@​vyas-git</code></a>
made their first contribution in <a
href="https://redirect.github.com/stretchr/testify/pull/1665">stretchr/testify#1665</a></li>
<li><a
href="https://github.com/olivergondza"><code>@​olivergondza</code></a>
made their first contribution in <a
href="https://redirect.github.com/stretchr/testify/pull/1400">stretchr/testify#1400</a></li>
<li><a href="https://github.com/egawata"><code>@​egawata</code></a> made
their first contribution in <a
href="https://redirect.github.com/stretchr/testify/pull/1792">stretchr/testify#1792</a></li>
<li><a href="https://github.com/ubunatic"><code>@​ubunatic</code></a>
made their first contribution in <a
href="https://redirect.github.com/stretchr/testify/pull/1815">stretchr/testify#1815</a></li>
<li><a
href="https://github.com/Baxromumarov"><code>@​Baxromumarov</code></a>
made their first contribution in <a
href="https://redirect.github.com/stretchr/testify/pull/1850">stretchr/testify#1850</a></li>
<li><a href="https://github.com/a2not"><code>@​a2not</code></a> made
their first contribution in <a
href="https://redirect.github.com/stretchr/testify/pull/1821">stretchr/testify#1821</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="001eb7946b"><code>001eb79</code></a>
Merge pull request <a
href="https://redirect.github.com/stretchr/testify/issues/1905">#1905</a>
from Kentzo/patch-1</li>
<li><a
href="ad40f384b1"><code>ad40f38</code></a>
Merge pull request <a
href="https://redirect.github.com/stretchr/testify/issues/1906">#1906</a>
from stretchr/dependabot/github_actions/actions/chec...</li>
<li><a
href="3bae01746b"><code>3bae017</code></a>
build(deps): bump actions/checkout from 6.0.2 to 6.0.3</li>
<li><a
href="f8c01f33a3"><code>f8c01f3</code></a>
mock: Mock.Return does not exist anymore</li>
<li><a
href="12f8b5612e"><code>12f8b56</code></a>
Merge pull request <a
href="https://redirect.github.com/stretchr/testify/issues/1563">#1563</a>
from stretchr/make-AssertionFunc-types-aliases</li>
<li><a
href="a11649e427"><code>a11649e</code></a>
assert: make *AssertionFunc type just aliases</li>
<li><a
href="dc20f41986"><code>dc20f41</code></a>
Merge pull request <a
href="https://redirect.github.com/stretchr/testify/issues/1890">#1890</a>
from stretchr/dolmen/codegen-modernize</li>
<li><a
href="098f8d75b3"><code>098f8d7</code></a>
_codegen: use strings.Builder</li>
<li><a
href="d2699bed69"><code>d2699be</code></a>
_codegen: modernize</li>
<li><a
href="a463c8caf3"><code>a463c8c</code></a>
Merge pull request <a
href="https://redirect.github.com/stretchr/testify/issues/1885">#1885</a>
from stretchr/dolmen/ci-check-ghactions-hashes</li>
<li>Additional commits viewable in <a
href="https://github.com/stretchr/testify/compare/v1.11.1...v1.12.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/stretchr/testify&package-manager=go_modules&previous-version=1.11.1&new-version=1.12.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-20 22:47:02 +03:00
Radoslav Dimitrov
a25f166b4b
docs: remove stale complete.md and fix remaining stale references (#1522)
Deletes `complete.md` and cleans up the last references to the
pre-restructuring docs layout.

## Why `complete.md` goes

It is 2,944 lines (31% of all documentation lines in the repo)
self-described as *"all documentation from the docs/ directory compiled
into a single markdown file"*. But:

- **No generator exists.** No make target, no workflow, no script. `grep
-rn "complete\.md"` finds **zero** references anywhere in the repo.
- **It mirrors a docs tree that no longer exists** — `docs/guides/`,
`docs/explanations/`, `docs/concepts/`.
- **All 72 of its relative links are broken**, and six of the basenames
it references exist nowhere in the repo.
- **~14 current docs are missing from it entirely** (`about.mdx`,
`authentication.mdx`, `package-types.mdx`, both CHANGELOGs, ...).
- **Its `server.json` examples pin the superseded `2025-07-09` schema**
(current is `2025-12-11`).

The strongest argument is its own last commit. [PR
#1278](https://github.com/modelcontextprotocol/registry/pull/1278)
closed [issue
#767](https://github.com/modelcontextprotocol/registry/issues/767) — a
real user-reported CLI flag bug — by editing **only `complete.md`**. A
genuine fix landed in a file nobody reads, while the docs a reader would
actually find stayed wrong.

A generated file with no generator degrades into a trap: authoritative
enough that people edit it, with nothing validating it. If the
LLM-consumption use case is worth keeping, the right shape is a `make
docs-bundle` target plus a `check-docs-bundle` CI job mirroring the
existing `check-schema` pattern — happy to do that instead if you would
rather keep it.

## Remaining stale references

| File | Was | Now |
|---|---|---|
| `contributing/add-package-registry.md` | Add
`docs/guides/publishing/publish-[yourregistry].md`, update
`docs/guides/publishing/README.md` | Add a section to
`package-types.mdx`. These were the **last live references** to the
obsolete `docs/guides/` layout outside `complete.md` |
| `administration/maintainer-onboarding.md` | Add them to "Current key
maintainers" in README | "Registry Working Group" — the section that
actually exists |
| `reference/README.md` | Omitted 6 reference docs | Adds
`api/extensions.md`, `api/openapi.yaml`, `api/CHANGELOG.md`,
`server-json/CHANGELOG.md`, `server-json/CONTRIBUTING.md`,
`server-json/draft/` |
| `docs/README.md` | Index omitted `community-projects.md` | Listed |
| `reference/api/generic-registry-api.md` | `PUT .../versions/{version}`
"not implemented by official registry" | It **is** implemented
([edit.go:36](https://github.com/modelcontextprotocol/registry/blob/main/internal/api/handlers/v0/edit.go#L36)),
and `official-registry-api.md` already lists it as an admin endpoint |
| `reference/api/official-registry-api.md` | Omitted 3 registered routes
| Adds `POST /v0.1/validate` (which `mcp-publisher validate` calls),
`GET /v0.1/ping`, `GET /v0.1/version`, and notes these plus `/health`
are absent from `openapi.yaml` |
| `server-json/official-registry-requirements.md` | Per-registry
verification → `quickstart.mdx` | → `package-types.mdx`, which has an
Ownership Verification section per registry |
| `design/design-principles.md` | Sections 1,2,3,4,**6**,7 | Renumbered
1–6 |
| `contributing/releasing.md` | Steps 1,2,3,**5**,6 | Renumbered 1–5 |

I left the sibling `DELETE` claim in `generic-registry-api.md` alone —
it is accurate, no DELETE route is registered (the `http.MethodDelete`
hit in `server.go` is CORS config, not a route).

## Staleness banners rather than rewrites

**`design/tech-architecture.md`** is substantially fictional. Rather
than a vague "may be outdated", the banner lists what I verified is
wrong:

- Describes Helm-chart deployment; the registry is a plain `Deployment`
([registry.go:65](https://github.com/modelcontextprotocol/registry/blob/main/deploy/pkg/k8s/registry.go#L65)).
Helm is used only for third-party components.
- Diagram shows a `StatefulSet` on port **27017** — MongoDB's port. The
DB is PostgreSQL on 5432 via the CloudNativePG operator.
- Documents a `verify-domain` challenge flow (`POST /verify-domain`,
`/verify-domain/check`, server-issued tokens) that **was never built**.
- Documents `/admin/*` routes that are not registered.
- Says the DB stores user auth state and DNS verification records; only
`servers` and `server_extensions` tables exist.

**`design/roadmap.md`** still says "Phase 1: MVP/Go-Live (Current
Focus)" ~11 months after launch. I added a dated note rather than
inventing a current phase — that is a working-group call.

## Verification

All **101** remaining relative links across every `.md`/`.mdx` in the
repo resolve. The only two non-resolving matches are the intentional
`[project-name](link)` template placeholder and the moderation link
fixed in #1518.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 16:32:37 +03:00
Radoslav Dimitrov
3e463e52bb
docs: correct contributor prerequisites and stale dev-env references (#1520)
The README prerequisites were both stale, and the docs restated the Go
version in three places.

## Prerequisites: name the source, do not restate the version

| README said | Reality |
|---|---|
| `Go 1.24.x` | `go 1.26` in
[go.mod](https://github.com/modelcontextprotocol/registry/blob/main/go.mod)
|
| `golangci-lint v2.4.0` | `v2.11.4` pinned in
[ci.yml:30](https://github.com/modelcontextprotocol/registry/blob/main/.github/workflows/ci.yml#L30)
|

Rather than swap in fresher numbers — which only resets the clock on the
same drift — this **removes the numbers** and names the authoritative
file:

```
- **Go** - version per the `go` directive in go.mod; the Go toolchain fetches it for you
- **golangci-lint** - version per the `golangci-lint-action` pin in ci.yml, so local lint matches CI
```

The Go version was stated in **three** places, which is exactly why all
three drifted together. All three now point at a single source, so the
prerequisites list cannot go stale.

Two notes on why the numbers earn so little in prose:

- **Go corrects itself.** `go.mod` has no `toolchain` directive, so
under the default `GOTOOLCHAIN=auto` the toolchain downloads the
required version automatically. A contributor on an older Go gets an
upgrade, not a failure — it only hard-errors under `GOTOOLCHAIN=local`.
(An earlier version of this description said such a contributor "cannot
build"; that was too strong.)
- **golangci-lint does not.** Version skew here genuinely changes what
you see: running CI's config under a newer golangci-lint (2.12.2)
surfaces 23 `goconst` findings in
`cmd/publisher/commands/validate_test.go` that CI's pinned 2.11.4 does
not report. That is why the README now points at the pin rather than a
number someone has to keep in sync.

## `make check` does more than documented

Documented in three files as "lint, unit tests and integration tests".
Actually [`check: dev-down lint validate
test-all`](https://github.com/modelcontextprotocol/registry/blob/main/Makefile#L85)
— it also runs schema validation and **stops your running `dev-compose`
environment**. Worth knowing before running it mid-session. The
Makefile's own `##` help string already said this correctly; only the
prose was stale.

## Other verified corrections

- **README project structure** omitted `cmd/registry/` — the server
entry point and ko/goreleaser build target — and `internal/importer/`.
- **`tests/integration/README.md`** said the suite launches **MongoDB**.
It launches PostgreSQL (`postgres-integration-test`), as the same file
admits nine lines later. It also cited `/v0/servers/{server_id}`, a path
removed a while ago; the test actually calls `GET /v0/servers` and `GET
/v0/servers/{serverName}/versions/latest`
([main.go:210,255](https://github.com/modelcontextprotocol/registry/blob/main/tests/integration/main.go#L210)).
- **`scripts/mirror_data/README.md`** pointed at
`internal/database/migrations/008_separate_official_metadata.sql`, which
does not exist — that migration is `009_`, while `008_` is
`clean_invalid_data.sql`. (Migration 008's own header still calls itself
"007a", which is how the numbering slipped.) Also swapped two "edit line
NN" pointers for identifier names, since both had already drifted
(`maxMigration` is at :30 not :24; the connection string at :23 not
:17), and corrected the fetch URL from `/v0.1/servers` to the
`/v0/servers` the script actually requests.
- **`.env.example`** was missing
`MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION`, even though the config reads
it
([config.go:18](https://github.com/modelcontextprotocol/registry/blob/main/internal/config/config.go#L18))
and README:50 tells contributors to set it while pointing at
`.env.example` as *the* reference.
- **`docker-compose.yml`** set `MCP_REGISTRY_ENVIRONMENT`, which nothing
reads — no `ENVIRONMENT` env tag in `internal/config`, and no other
occurrence in the repo. Removed. (The Pulumi-side
`mcp-registry:environment` key is a separate, real thing and is
untouched.)
- **Deleted `CHANGES.md`** — 0 bytes, untouched since the squashed
history base, zero references anywhere.

## Verification

`docker compose config` validates. `grep` for `Go 1.x` / `golangci-lint
vX` across all `.md`/`.mdx` now returns nothing outside `complete.md`
(which #1522 deletes). Both `../../README.md#pre-requisites` links
resolve and the anchor matches the real `#### Pre-requisites` heading.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 16:32:25 +03:00
Radoslav Dimitrov
988b078e02
docs(deploy): correct config parameter names in deploy README (#1521)
The deploy configuration table named two parameters that **no code
reads**, and omitted two that a deploy cannot succeed without.

## Wrong names

| Documented | Actual | Evidence |
|---|---|---|
| `gcpProjectId` | `gcp:project` |
[provider.go:30](https://github.com/modelcontextprotocol/registry/blob/main/deploy/pkg/providers/gcp/provider.go#L30)
— its error text literally says `Set gcp:project` |
| `gcpRegion` | `gcp:region` |
[provider.go:36](https://github.com/modelcontextprotocol/registry/blob/main/deploy/pkg/providers/gcp/provider.go#L36),
default `us-central1` |

`gcpProjectId` and `gcpRegion` appear **nowhere** in `deploy/` outside
this table. All three stack files (`Pulumi.gcpProd.yaml`,
`Pulumi.gcpStaging.yaml`, `Pulumi.local.yaml`) already use
`gcp:project`.

## Missing required secrets

Both are `RequireSecret`, so a deploy fails outright without them — yet
neither was in the table:

- `mcp-registry:jwtPrivateKey` —
[registry.go:56](https://github.com/modelcontextprotocol/registry/blob/main/deploy/pkg/k8s/registry.go#L56)
- `mcp-registry:googleOauthClientSecret` —
[monitoring.go:463](https://github.com/modelcontextprotocol/registry/blob/main/deploy/pkg/k8s/monitoring.go#L463)

## Also

- Documents `gcp:credentials` (read at
[provider.go:42](https://github.com/modelcontextprotocol/registry/blob/main/deploy/pkg/providers/gcp/provider.go#L42),
set in the staging and prod stacks)
- Marks which values are secrets
- **Adds the namespace prefixes.** The table listed bare names, which is
part of why the two wrong ones survived: `gcpProjectId` reads as
plausible right up until you notice the real key lives in a different
config namespace altogether.

## Verification

Checked both directions:
- every key now in the table is read by code in `deploy/` (reference
counts confirmed per key)
- every `conf.*("...")` key found anywhere in `deploy/` now appears in
the table

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 16:25:56 +03:00
Radoslav Dimitrov
43402d8f6f
fix(publisher): document --algorithm for ECDSA login and fix validate --help (#1519)
Two real defects, plus the CLI reference claims that go with them.

## 1. ECDSA P-384 login instructions cannot work

Every "ECDSA P-384" tab ran the *identical* command to the Ed25519 tab.
Since `--algorithm` defaults to ed25519
([login.go:100](https://github.com/modelcontextprotocol/registry/blob/main/cmd/publisher/commands/login.go#L100)),
a 96-hex key is rejected outright. Verified against a freshly generated
P-384 key:

```
$ mcp-publisher login dns --domain=example.com --private-key=$KEY
Signing in process using key algorithm ed25519
Error: failed to get token: failed to sign timestamp: invalid seed length: expected 32 bytes, got 48

$ mcp-publisher login dns --algorithm ecdsap384 --domain=example.com --private-key=$KEY
Signing in process using key algorithm ecdsap384
Expected proof record:                      # works
```

`--algorithm` is registered at
[login.go:129](https://github.com/modelcontextprotocol/registry/blob/main/cmd/publisher/commands/login.go#L129)
and described correctly by the CLI's own help, but `grep -rn algorithm
docs/` had **zero** hits for it. Anyone following the ECDSA path in the
docs hit that error with nothing to tell them why.

Fixed at all four in-process ECDSA sites (2 in `authentication.mdx`, 2
in `cli/commands.md`), with a note that cloud signing providers derive
the algorithm from the key itself so the flag does not apply to them.

## 2. `mcp-publisher validate --help` was broken

```
$ mcp-publisher validate --help
Unknown command: validate
...
Use 'mcp-publisher <command> --help' for more information about a command.
```

It printed the very instruction that had just failed. `main.go`
intercepted `--help` for all subcommands and called `printCommandHelp`,
whose switch had no `validate` case — making `ValidateCommand`'s own
help block
([validate.go:120-129](https://github.com/modelcontextprotocol/registry/blob/main/cmd/publisher/commands/validate.go#L120))
unreachable.

Rather than paste a third copy of the help text, `printCommandHelp` now
returns whether it handled the command, and the caller falls through to
normal dispatch when it did not. Commands own their own `--help`, and
any future command with this shape works automatically.

| Command | Before | After |
|---|---|---|
| `validate --help` | `Unknown command`, exit 0 | prints its help, exit
0 |
| `publish --help` | works | works |
| `init -h` | works | works |
| `bogus --help` | `Unknown command`, exit 0 | `Unknown command`, **exit
1** |

## 3. CLI reference corrections

- **`--registry` is not global.** It exists only on `login`; other
commands read the URL from the stored token. `publish --registry=URL`
silently treats the flag as the `server.json` path.
`cmd/publisher/README.md` had exactly this broken example.
- **`--token` was undocumented** despite `github-actions.mdx:123`
depending on it. Now documented, noting it is `login github` only.
- **`init` takes no flags** and does not prompt; it writes `TODO:`
placeholders. The reference said `init [options]` and "Prompts for
missing required fields".
- **Refreshed the `--help` transcript** in `quickstart.mdx`, which
listed only 4 of 6 commands. Now byte-for-byte identical to real output
(diffed).
- **Added `validate`** to the command list in `cmd/publisher/README.md`.

## Verification

`go build` and `go test ./cmd/...` pass. All four help paths exercised
with exit codes checked. The 23 `goconst` findings in `validate_test.go`
are pre-existing — identical count on pristine `main`, none in
`main.go`. Quickstart transcript diffed against real output.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 16:25:00 +03:00
Radoslav Dimitrov
43fbc1dcbd
fix(admin): use PATCH status endpoints in takedown script and runbook (#1518)
The admin takedown script cannot work as written, and the runbook that
documents it has the same problem.

## The bug

`tools/admin/takedown.sh` sent `PUT` with a `?status=deleted` query
parameter to two routes:

| What the script sent | Reality |
|---|---|
| `PUT /v0/servers/{name}/versions/{version}?status=deleted` | Route
exists, but requires a full `ServerJSON` body and has no `status` query
parameter |
| `PUT /v0/servers/{name}?status=deleted` | **Not registered at all** —
the whole-server takedown path 404s |

The real endpoints are `PATCH
/v0/servers/{name}/versions/{version}/status` and `PATCH
/v0/servers/{name}/status`
([status.go:83](https://github.com/modelcontextprotocol/registry/blob/main/internal/api/handlers/v0/status.go#L83),
[:198](https://github.com/modelcontextprotocol/registry/blob/main/internal/api/handlers/v0/status.go#L198)),
both taking `{"status": ..., "statusMessage": ...}`. `edit.go` even says
so in its own description: use the status endpoint for status changes.

## Script changes

- Send `PATCH` with a JSON body built via `jq`
- **Require `VERSION` or `ALL_VERSIONS=true` explicitly.** Previously a
missing `VERSION` meant "entire server". Since `PATCH .../status`
updates *every* version, an operator who simply forgot `VERSION` would
have taken down the whole server. Now that needs saying out loud.
- Support `STATUS` (default `deleted`) and `STATUS_MESSAGE`, so a
takedown can record its reason
- `set -euo pipefail`, non-zero exit on HTTP errors, and print the
response body so huma error detail is visible instead of being swallowed

## Runbook changes

- `GET /v0/servers/{name}` is not a route — use `GET
.../versions/latest` (which is supported, see
[servers.go:155-178](https://github.com/modelcontextprotocol/registry/blob/main/internal/api/handlers/v0/servers.go#L155))
- Replace the per-version `?status=deleted` loop with the single
all-versions `PATCH .../status` call, which reports `updatedCount`
- Keep the per-version `PUT` loop for *content* edits, which genuinely
has no bulk endpoint, and show that it needs the full body
- Correct the closing note claiming server-wide changes must be applied
per version — true for content, not for status
- Fix the broken `moderation-guidelines.md` link (dead since the docs
restructuring; the file is now
`modelcontextprotocol-io/moderation-policy.mdx`)

## Verification

`shellcheck` clean, `bash -n` clean, and all three guard paths exercised
(no args / neither VERSION nor ALL_VERSIONS / both set). Both `PATCH`
paths confirmed present in `docs/reference/api/openapi.yaml`. I did not
run a live takedown against production.

Kept on `/v0` rather than `/v0.1` to match the existing admin/deploy
convention — happy to switch if you would rather admin tooling target
the frozen version.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 16:24:06 +03:00
Wolfe-James
69374b08de
docs: add cargo and crates.io to schema examples (#1511)
The cargo registry type has been live since v1.8.0 (#1207).
This PR only updates the schema examples so they match reality.

- Add "cargo" to registryType.examples
- Add "https://crates.io" to registryBaseUrl.examples

No behaviour change.

Note: versioned schemas are synced from modelcontextprotocol/static.
A follow-up there keeps this durable across schema sync.

Co-authored-by: Wolfe-Jam <wolfejam77@gmail.com>
2026-08-10 15:19:06 +03:00
dependabot[bot]
03aeca562f
build(deps): bump github.com/go-git/go-git/v6 from 6.0.0-alpha.4 to 6.0.0-alpha.5 in /deploy (#1514)
Bumps [github.com/go-git/go-git/v6](https://github.com/go-git/go-git)
from 6.0.0-alpha.4 to 6.0.0-alpha.5.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-git/go-git/releases">github.com/go-git/go-git/v6's
releases</a>.</em></p>
<blockquote>
<h2>v6.0.0-alpha.5</h2>
<h2>What's Changed</h2>
<ul>
<li>plumbing: format/packfile, allow injecting a custom ObjectSelector
by <a href="https://github.com/Soph"><code>@​Soph</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2142">go-git/go-git#2142</a></li>
<li>storage: pool .pack file descriptors via internal/packhandle by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2132">go-git/go-git#2132</a></li>
<li>build: Update module golang.org/x/crypto to v0.52.0 [SECURITY]
(main) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2148">go-git/go-git#2148</a></li>
<li>build: Update module golang.org/x/net to v0.55.0 [SECURITY] (main)
by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2151">go-git/go-git#2151</a></li>
<li>plumbing, storage: add CloseIdleDescriptors soft-close primitive by
<a href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2133">go-git/go-git#2133</a></li>
<li>*: harden format parsers against unbounded loops by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2162">go-git/go-git#2162</a></li>
<li>storage: pack read optimisations and storage-wide LRU FD pool by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2134">go-git/go-git#2134</a></li>
<li>plumbing: format/packfile, fix delta-base parsing bugs by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2163">go-git/go-git#2163</a></li>
<li>git: worktree, hoist Config() calls out of per-file loops by <a
href="https://github.com/cedric-appdirect"><code>@​cedric-appdirect</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/1990">go-git/go-git#1990</a></li>
<li>storage: filesystem, pool FSObject reads via PackHandle by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2154">go-git/go-git#2154</a></li>
<li>plumbing: format/index, accept empty trailing checksum on decode by
<a href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2181">go-git/go-git#2181</a></li>
<li>build: Update golang (main) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2182">go-git/go-git#2182</a></li>
<li>build: Update module golang.org/x/net to v0.56.0 (main) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2191">go-git/go-git#2191</a></li>
<li>*: speed up multi-pack reads via Index fanout probes by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2147">go-git/go-git#2147</a></li>
<li>Fix URL insteadOf to use longest match when multiple values exist by
<a
href="https://github.com/AriehSchneier"><code>@​AriehSchneier</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2189">go-git/go-git#2189</a></li>
<li>transport/http, backend, utils/ioutil: fix HTTP data races on the
fetch and serve paths by <a
href="https://github.com/georg"><code>@​georg</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2128">go-git/go-git#2128</a></li>
<li>plumbing: protocol/packp, handle shallow-only no-op push in
UpdateRequests.Decode by <a
href="https://github.com/yuzhuo"><code>@​yuzhuo</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2172">go-git/go-git#2172</a></li>
<li>git: signer, add context.Context to Sign by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2202">go-git/go-git#2202</a></li>
<li>plumbing: transport/http, Expose typed auth error for Azure DevOps
/_signin redirects by <a
href="https://github.com/jfjrh2014"><code>@​jfjrh2014</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2201">go-git/go-git#2201</a></li>
<li>plumbing: format, faster diff patch generation by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2186">go-git/go-git#2186</a></li>
<li>plumbing: transport, Protocol v2 for upload-pack by <a
href="https://github.com/blmayer"><code>@​blmayer</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2188">go-git/go-git#2188</a></li>
<li>plumbing: pktline, use Scanner for decoding by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2038">go-git/go-git#2038</a></li>
<li>internal: server/git, Fix TestGitServer_Timeout flakiness on Windows
CI by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2129">go-git/go-git#2129</a></li>
<li>plumbing: packp, validate push options to prevent invalid characters
by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2057">go-git/go-git#2057</a></li>
<li>plumbing: packp/capability, Zero-value-safe types and capability
cleanup (1/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2206">go-git/go-git#2206</a></li>
<li>plumbing: object, skip path validation in tree diff walk by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2222">go-git/go-git#2222</a></li>
<li>plumbing: packp/transport, Slice-based AdvRefs and v1 handling
(2/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2225">go-git/go-git#2225</a></li>
<li>plumbing: transport, Add options and result struct to GetRemoteRefs
(3/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2226">go-git/go-git#2226</a></li>
<li>git: Expose AlternatesFS on PlainOpenOptions by <a
href="https://github.com/andrew"><code>@​andrew</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2101">go-git/go-git#2101</a></li>
<li>plumbing: packp, Protocol v2 wire types with caller-owned packfile
streaming (4/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2227">go-git/go-git#2227</a></li>
<li>plumbing/transport: receive_pack, add ReceivePackHooks with
PreReceive/PostReceive by <a
href="https://github.com/andrew"><code>@​andrew</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2236">go-git/go-git#2236</a></li>
<li>plumbing: transport, Protocol v2 session handshake and Command
(5/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2228">go-git/go-git#2228</a></li>
<li>plumbing: transport, ls-refs over Protocol v2 for GetRemoteRefs
(6/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2229">go-git/go-git#2229</a></li>
<li>plumbing: transport, fetch over Protocol v2 with caller-owned
packfile (7/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2230">go-git/go-git#2230</a></li>
<li>plumbing: transport, Wire Protocol v2 across HTTP and share the
client core (8/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2231">go-git/go-git#2231</a></li>
<li>plumbing: transport, Refactor server-side Protocol v2 onto packp
types (9/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2232">go-git/go-git#2232</a></li>
<li>plumbing: transport, git archive over HTTP (10/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2233">go-git/go-git#2233</a></li>
<li>plumbing: transport, Run the upload-pack suite across v0/v1/v2
(11/11) by <a
href="https://github.com/aymanbagabas"><code>@​aymanbagabas</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2234">go-git/go-git#2234</a></li>
<li>plumbing: optimize Tree.Decode with ReadSlice and io.ReadFull by <a
href="https://github.com/Bluebugs"><code>@​Bluebugs</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/1736">go-git/go-git#1736</a></li>
<li>plumbing: object, Isolate tests from host git config. by <a
href="https://github.com/cedric-appdirect"><code>@​cedric-appdirect</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2122">go-git/go-git#2122</a></li>
<li>plumbing: default to wire protocol v2 and close client/server
conformance gaps by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2237">go-git/go-git#2237</a></li>
<li>build: Update module golang.org/x/text to v0.39.0 (main) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2241">go-git/go-git#2241</a></li>
<li>build: Update golang (main) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2246">go-git/go-git#2246</a></li>
<li>plumbing: object, include submodules in patches by <a
href="https://github.com/upuddu"><code>@​upuddu</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2243">go-git/go-git#2243</a></li>
<li>storage: dotgit, reject path traversal in reference names by <a
href="https://github.com/Sahana2524"><code>@​Sahana2524</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2247">go-git/go-git#2247</a></li>
<li>plumbing: transport/http, redact credentials in error messages by <a
href="https://github.com/Sahana2524"><code>@​Sahana2524</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2252">go-git/go-git#2252</a></li>
<li>git: worktree, checkout reuse a single os.Root per reset. by <a
href="https://github.com/cedric-appdirect"><code>@​cedric-appdirect</code></a>
in <a
href="https://redirect.github.com/go-git/go-git/pull/2259">go-git/go-git#2259</a></li>
<li>git: Worktree: Add stores index entires with backslashes on Windows
by <a href="https://github.com/joshblum"><code>@​joshblum</code></a> in
<a
href="https://redirect.github.com/go-git/go-git/pull/2253">go-git/go-git#2253</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fc18716c90"><code>fc18716</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2276">#2276</a>
from go-git/checkout</li>
<li><a
href="9b81545704"><code>9b81545</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2280">#2280</a>
from go-git/renovate/main-github-actions</li>
<li><a
href="8ec84d130e"><code>8ec84d1</code></a>
build: Update github-actions</li>
<li><a
href="8bff61114b"><code>8bff611</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2279">#2279</a>
from glitch-ux/fix/gitignore-trailing-doublestar-ove...</li>
<li><a
href="3189ee9df1"><code>3189ee9</code></a>
plumbing: format/gitignore, fix trailing ** matching unrelated paths.
Fixes #...</li>
<li><a
href="ffa616afd8"><code>ffa616a</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2274">#2274</a>
from go-git/renovate/main-major-github-actions</li>
<li><a
href="e6df965d61"><code>e6df965</code></a>
build: Update github-actions to v7</li>
<li><a
href="661d1c7f10"><code>661d1c7</code></a>
git: worktree, make the filesystem wrapper a symlink-safe boundary</li>
<li><a
href="b092a7b2f6"><code>b092a7b</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2273">#2273</a>
from go-git/renovate/main-github-actions</li>
<li><a
href="d4b7d93798"><code>d4b7d93</code></a>
build: Update github-actions</li>
<li>Additional commits viewable in <a
href="https://github.com/go-git/go-git/compare/v6.0.0-alpha.4...v6.0.0-alpha.5">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-git/go-git/v6&package-manager=go_modules&previous-version=6.0.0-alpha.4&new-version=6.0.0-alpha.5)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/registry/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-10 15:18:42 +03:00
Recoordinate
4508c48f80
Fix broken relative links in releasing docs (#1517)
The three deployment links in `docs/contributing/releasing.md` use
`../../../`, which resolves above the repository root and 404s on
GitHub. The file lives in `docs/contributing/`, so the repo root is two
levels up and `../../` is correct.

This fixes the links to `deploy-production.yml`, `deploy-staging.yml`,
and `deploy/README.md` (all three targets exist at the repo root). No
content change.
2026-08-10 15:18:22 +03:00
Radoslav Dimitrov
f36b7dd4af
chore(deploy): promote production to 1.8.1 (#1510)
## Summary

Promote the production registry image from `1.8.0` to
[`1.8.1`](https://github.com/modelcontextprotocol/registry/releases/tag/v1.8.1).

This release includes #1509, which adds a short ingress cache and a
scoped rate-limit increase for the exact public registry-list endpoints.

## Staging verification

- release tag points to `f52dc8525a`, the
commit deployed to staging
- staging deployment and CI workflows completed successfully
- both registry replicas became ready with zero restarts
- rendered NGINX configuration kept the root route at 180 RPM with
buffering off
- exact `/v0/servers` and `/v0.1/servers` routes rendered at 600 RPM
with buffering on
- live cache probe returned `MISS`, then `HIT`
- health and unrelated routes remained uncached
- no application 5xx, serious NGINX errors, or application error logs
were observed after rollout

## Release artifact

- release workflow completed successfully
- `ghcr.io/modelcontextprotocol/registry:1.8.1` is available for
`linux/amd64` and `linux/arm64`

## Deployment and rollback

Merging this PR triggers the production Pulumi deployment automatically.
Monitor registry pod readiness, NGINX reloads, cache behavior, origin
request volume, 429/499/5xx responses, and publish requests exceeding 10
seconds.

Rollback by restoring `mcp-registry:imageTag` to `1.8.0`.
2026-08-07 02:43:14 +03:00
Radoslav Dimitrov
f52dc8525a
fix(deploy): cache bulk registry reads (#1509)
## Summary

- cache successful public list responses for `/v0/servers` and
`/v0.1/servers` at ingress-nginx for 30 seconds
- give only those exact cached paths a 600 RPM per-controller budget
- preserve the existing 180 RPM limit for publish, auth, mutation,
detail, and other routes
- expose `X-Registry-Cache` to make cache MISS/HIT behavior directly
observable

## Why

Production ingress logs show that the current 180 RPM per-controller
limit rejects legitimate bulk pagination before it reaches the
application. The affected traffic is overwhelmingly registry-list reads,
not publishing.

A ten-minute production sample contained 17,836 successful list
responses but only 3,188 unique URLs: 82.1% were repeated requests,
representing roughly 1 GB of duplicate response bodies. Raising the list
limit without caching would increase pressure on the application and its
shared PostgreSQL pool. The short ingress cache absorbs repeated
cursor-page reads before raising their scoped client budget.

Publish latency is a separate concern. Reducing read pressure may help
indirectly, but slow external package validation is intentionally out of
scope for this PR.

Relates to #826.

## Safety

- caching is limited to exact public GET list paths and keyed by host
plus full request URI
- only 200 responses are cached
- cache lifetime is 30 seconds; newly published entries can therefore
take up to 30 seconds to appear on a cached page
- cache locking coalesces simultaneous misses
- stale cached responses may be served while refreshing or during
transient upstream 5xx/timeouts
- each ingress replica uses at most 1 GB of ephemeral on-disk cache

## Validation

- `go test ./...` in `deploy/`
- `go vet ./...` in `deploy/`
- `git diff --check`
- ingress-nginx chart 4.13.0 in a disposable kind cluster
- generated NGINX configuration passed `nginx -t`
- repeated list request verified `X-Registry-Cache: MISS` followed by
`HIT`
- non-list route verified uncached
- exact list locations verified with the higher rate zone while the
catch-all retained 180 RPM

Nothing was applied to production during investigation or validation.
2026-08-07 02:16:52 +03:00
Recoordinate
2b09bde534
docs: remove stale build.sh reference from publisher Key Files (#1504)
The Key Files list in `cmd/publisher/README.md` includes a bullet for
`build.sh`, but there is no `build.sh` anywhere in the repo. The
publisher is built with `make publisher`, which runs `go build -o
bin/mcp-publisher ./cmd/publisher` (Makefile), so there is no separate
cross-platform build script.

The other three entries in the same list (`main.go`, `commands/`,
`auth/`) all exist. This removes the stale bullet so the list matches
the actual files in the directory.
2026-08-07 01:39:30 +03:00
Sash
5c19656cb9
fix(auth): reject github.io domains in DNS/HTTP token exchange (org namespace takeover) (#1506)
## Summary

- The GitHub token method grants `io.github.<org>/*` publish rights
**only to org Owners** (active `admin` membership — `github_at.go`).
- The DNS/HTTP token methods grant `reversed(domain)/*` for any proven
domain, with no `github.io` special-casing and an empty
`BlockedNamespaces` list.
- `<org>.github.io` is served by GitHub Pages from the
`<org>/<org>.github.io` repository. **Push access to that one
repository** — routinely held by ordinary org members, a much weaker bar
than Owner — is enough to serve a key at
`/.well-known/mcp-registry-auth`, exchange it for a JWT, and publish
under the org's entire `io.github.<org>/*` namespace.
- Reject `github.io` (and subdomains) at the shared
`ValidateDomainAndTimestamp` seam used by both DNS and HTTP exchange;
`io.github.*` publishers already have the GitHub method.

## Impact if unsolved

Any org member with write access to the org's GitHub Pages repo (or an
attacker compromising such a member) can mint MCP packages under the
org's trusted namespace — supply-chain poisoning of every downstream
user who installs `<org>`'s servers from the registry, bypassing the
deliberate Owner-only gate.

## Test plan

- New `TestValidateDomainAndTimestampRejectsGitHubPages`: rejects
`my-org.github.io` (incl. mixed case and subdomains), still allows
lookalikes (`github.io.evil-example.com`,
`my-org.github.io.example.com`) and ordinary domains.
- Full `internal/api/handlers/v0/auth` package passes.

Made with [Cursor](https://cursor.com)

Signed-off-by: SashaMIT <sash@ela.city>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-07 01:38:34 +03:00
dependabot[bot]
0f78916eee
build(deps): bump docker/login-action from 4.4.0 to 4.6.0 in the actions group (#1492)
Bumps the actions group with 1 update:
[docker/login-action](https://github.com/docker/login-action).

Updates `docker/login-action` from 4.4.0 to 4.6.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/login-action/releases">docker/login-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.6.0</h2>
<ul>
<li>Harden buildx scoped config path handling by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/1059">docker/login-action#1059</a></li>
<li>Bump <code>@​aws-sdk/client-ecr</code> and
<code>@​aws-sdk/client-ecr-public</code> to 3.1095.0 in <a
href="https://redirect.github.com/docker/login-action/pull/1051">docker/login-action#1051</a></li>
<li>Bump js-yaml from 5.2.1 to 5.2.2 in <a
href="https://redirect.github.com/docker/login-action/pull/1057">docker/login-action#1057</a></li>
<li>Bump postcss from 8.5.10 to 8.5.22 in <a
href="https://redirect.github.com/docker/login-action/pull/1056">docker/login-action#1056</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v4.5.2...v4.6.0">https://github.com/docker/login-action/compare/v4.5.2...v4.6.0</a></p>
<h2>v4.5.2</h2>
<ul>
<li>Surface Docker Hub OIDC error responses by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/1058">docker/login-action#1058</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v4.5.1...v4.5.2">https://github.com/docker/login-action/compare/v4.5.1...v4.5.2</a></p>
<h2>v4.5.1</h2>
<ul>
<li>Support <code>dhi.io</code> as Docker Hub OIDC registry by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/1054">docker/login-action#1054</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v4.5.0...v4.5.1">https://github.com/docker/login-action/compare/v4.5.0...v4.5.1</a></p>
<h2>v4.5.0</h2>
<ul>
<li><a href="https://github.com/docker/login-action#docker-hub">Docker
Hub OIDC</a> login support by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/1048">docker/login-action#1048</a></li>
<li>Bump <code>@​aws-sdk/client-ecr</code> and
<code>@​aws-sdk/client-ecr-public</code> to 3.1091.0 in <a
href="https://redirect.github.com/docker/login-action/pull/1037">docker/login-action#1037</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.92.0 to 0.94.0 in
<a
href="https://redirect.github.com/docker/login-action/pull/1044">docker/login-action#1044</a>
<a
href="https://redirect.github.com/docker/login-action/pull/1050">docker/login-action#1050</a></li>
<li>Bump brace-expansion from 1.1.13 to 1.1.16 in <a
href="https://redirect.github.com/docker/login-action/pull/1046">docker/login-action#1046</a></li>
<li>Bump js-yaml from 5.2.0 to 5.2.1 in <a
href="https://redirect.github.com/docker/login-action/pull/1038">docker/login-action#1038</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v4.4.0...v4.5.0">https://github.com/docker/login-action/compare/v4.4.0...v4.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dbcb813823"><code>dbcb813</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1051">#1051</a>
from docker/dependabot/npm_and_yarn/aws-sdk-dependen...</li>
<li><a
href="5bcb015ee6"><code>5bcb015</code></a>
[dependabot skip] chore: update generated content</li>
<li><a
href="b30b2f2d31"><code>b30b2f2</code></a>
build(deps): bump the aws-sdk-dependencies group across 1 directory with
2 up...</li>
<li><a
href="9087f1e6d6"><code>9087f1e</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1057">#1057</a>
from docker/dependabot/npm_and_yarn/js-yaml-5.2.2</li>
<li><a
href="0009830ea1"><code>0009830</code></a>
[dependabot skip] chore: update generated content</li>
<li><a
href="23255232d3"><code>2325523</code></a>
build(deps): bump js-yaml from 5.2.1 to 5.2.2</li>
<li><a
href="4ec1d4a769"><code>4ec1d4a</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1056">#1056</a>
from docker/dependabot/npm_and_yarn/postcss-8.5.22</li>
<li><a
href="5fc99ba47b"><code>5fc99ba</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1053">#1053</a>
from docker/dependabot/github_actions/aws-actions/co...</li>
<li><a
href="e512bd59d1"><code>e512bd5</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1052">#1052</a>
from docker/dependabot/github_actions/codeql-actions...</li>
<li><a
href="a146c91b8f"><code>a146c91</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1059">#1059</a>
from crazy-max/harden-buildx-scope-paths</li>
<li>Additional commits viewable in <a
href="af1e73f918...dbcb813823">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=docker/login-action&package-manager=github_actions&previous-version=4.4.0&new-version=4.6.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 01:30:37 +03:00
dependabot[bot]
34f0bb99f3
build(deps): bump cloud.google.com/go/kms from 1.32.0 to 1.33.0 (#1491)
Bumps
[cloud.google.com/go/kms](https://github.com/googleapis/google-cloud-go)
from 1.32.0 to 1.33.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/releases">cloud.google.com/go/kms's
releases</a>.</em></p>
<blockquote>
<h2>video: v1.33.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/video/v1.32.0...video/v1.33.0">1.33.0</a>
(2026-07-13)</h2>
<h3>Features</h3>
<ul>
<li><strong>o11y:</strong> Regenerate clients for LRO tracing (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20107">#20107</a>)
(<a
href="779074edd2">779074e</a>)</li>
</ul>
<h2>kms: v1.33.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.32.0...kms/v1.33.0">1.33.0</a>
(2026-07-23)</h2>
<h3>Features</h3>
<ul>
<li>Update API sources and regenerate (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20188">#20188</a>)
(<a
href="104e0de4fb">104e0de</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/blob/main/documentai/CHANGES.md">cloud.google.com/go/kms's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.32.0...documentai/v1.33.0">1.33.0</a>
(2024-08-20)</h2>
<h3>Features</h3>
<ul>
<li><strong>documentai:</strong> Add support for Go 1.23 iterators (<a
href="84461c0ba4">84461c0</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4f63392822"><code>4f63392</code></a>
chore: release main (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20195">#20195</a>)</li>
<li><a
href="09acbb37a3"><code>09acbb3</code></a>
feat(bigtable): add Session struct + state machine (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20117">#20117</a>)</li>
<li><a
href="0b4eb72ef1"><code>0b4eb72</code></a>
chore(cloud/sql): onboarding a new API (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20206">#20206</a>)</li>
<li><a
href="bcbf71431d"><code>bcbf714</code></a>
feat(bigtable): add AFE picker (Simple / LeastInFlight / LeastLatency)
(<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20204">#20204</a>)</li>
<li><a
href="6e776ebe4a"><code>6e776eb</code></a>
ci: revert &quot;ci: librarian to use Go 1.25.8 toolchain&quot; (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20205">#20205</a>)</li>
<li><a
href="f0c7260f65"><code>f0c7260</code></a>
chore(main): release bigtable 1.51.0 (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20014">#20014</a>)</li>
<li><a
href="a466345926"><code>a466345</code></a>
feat(bigtable): add sessionTracer for per-Session lifecycle + vRPC
metrics (#...</li>
<li><a
href="a9990b4e81"><code>a9990b4</code></a>
chore(bigtable): remove toolchain directive (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20203">#20203</a>)</li>
<li><a
href="104e0de4fb"><code>104e0de</code></a>
feat: update API sources and regenerate (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20188">#20188</a>)</li>
<li><a
href="8dfb2b4267"><code>8dfb2b4</code></a>
ci: librarian to use Go 1.25.8 toolchain (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20200">#20200</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.32.0...kms/v1.33.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cloud.google.com/go/kms&package-manager=go_modules&previous-version=1.32.0&new-version=1.33.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 01:30:21 +03:00
dependabot[bot]
ac340e0b88
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.253.0 to 3.255.0 in /deploy (#1490)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.253.0 to 3.255.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.255.0</h2>
<h2>3.255.0 (2026-07-28)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Add an <code>--extension</code> flag to package commands for
extension-parameterized packages, reinstalled from
<code>Pulumi.yaml</code> on <code>pulumi install</code></li>
<li>[cli] Project files to disk and surface their paths as environment
variables for all output formats when opening an ESC environment <a
href="https://redirect.github.com/pulumi/pulumi/pull/23993">#23993</a></li>
<li>[engine] Resolve an invoke's provider from the
<code>providers</code> option of the parent named on the request,
matching the resolution applied to resource registrations <a
href="https://redirect.github.com/pulumi/pulumi/pull/24016">#24016</a></li>
<li>[cli/do] Add <code>--resources</code> to refer to existing resources
in state in <code>do</code> input expressions <a
href="https://redirect.github.com/pulumi/pulumi/pull/24037">#24037</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[programgen/nodejs] Parent an invoke written inside a component to
that component, so it resolves the component's providers <a
href="https://redirect.github.com/pulumi/pulumi/pull/24017">#24017</a></li>
<li>[pcl] Apply the <code>providers</code> option of a
<code>component</code> block to the resources and invokes it declares <a
href="https://redirect.github.com/pulumi/pulumi/pull/24016">#24016</a></li>
<li>[cli/import] Fix import file generation when parent resources share
names <a
href="https://redirect.github.com/pulumi/pulumi/pull/24069">#24069</a></li>
<li>[cli] Fix parallel <code>pulumi install</code> processes sharing a
<code>PULUMI_HOME</code> intermittently failing with a missing provider
executable error <a
href="https://redirect.github.com/pulumi/pulumi/pull/24080">#24080</a></li>
<li>[sdk/python] Allow Construct and Call methods to run concurrently in
provider servers <a
href="https://redirect.github.com/pulumi/pulumi/pull/24081">#24081</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[engine] Support strings containing non-UTF8 bytes flowing between
providers, the engine, state, and languages that opt in (Go and PCL
initially) <a
href="https://redirect.github.com/pulumi/pulumi/pull/23856">#23856</a></li>
<li>[cli] Add a <code>--summary</code> flag to <code>pulumi stack
history events</code> that reduces a past update's events to the same
summary shape as a live <code>pulumi up --output json</code>, extended
with error diagnostics and failed-resource markers <a
href="https://redirect.github.com/pulumi/pulumi/pull/23960">#23960</a></li>
<li>[protobuf] Allow state converters to supply resource inputs and
outputs in ConvertState responses <a
href="https://redirect.github.com/pulumi/pulumi/pull/23987">#23987</a></li>
<li>[engine] Allow policy packs to point to executable binaries, not
just script folders <a
href="https://redirect.github.com/pulumi/pulumi/pull/24052">#24052</a></li>
<li>[cli/display] The Neo diagnostics link now suggests <code>pulumi neo
--debug-update</code> or <code>pulumi neo --debug-preview</code> to
investigate the failed operation <a
href="https://redirect.github.com/pulumi/pulumi/pull/24075">#24075</a></li>
<li>[sdk/python] Allow <code>UV_PROJECT_ENVIRONMENT</code> to override
the virtualenv path if uv is used <a
href="https://redirect.github.com/pulumi/pulumi/pull/24077">#24077</a></li>
<li>[cli] Allow otel traces to be sent over https <a
href="https://redirect.github.com/pulumi/pulumi/pull/24078">#24078</a></li>
</ul>
<h2>v3.254.0</h2>
<h2>3.254.0 (2026-07-23)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Add <code>pulumi logs share</code> command for sharing logs
with Pulumi <a
href="https://redirect.github.com/pulumi/pulumi/pull/22546">#22546</a></li>
<li>[cli] Add <code>pulumi stack migrate</code> to migrate a stack from
another backend to the currently logged-in backend, including
re-encrypting config secrets and stack state under the target secrets
provider <a
href="https://redirect.github.com/pulumi/pulumi/pull/22902">#22902</a></li>
<li>[cli/config] Add an <code>--override-env</code> flag to
<code>up</code>, <code>preview</code>, <code>destroy</code>, and
<code>refresh</code> to substitute imported environments for a single
run without editing the stack config <a
href="https://redirect.github.com/pulumi/pulumi/pull/23562">#23562</a></li>
<li>[cli] Add <code>pulumi neo acp</code> to run Neo as an Agent Client
Protocol agent over stdio for ACP-capable editors, with read-only and
plan mode exposed as session config options <a
href="https://redirect.github.com/pulumi/pulumi/pull/23886">#23886</a></li>
<li>[cli/neo] Retry transient <code>pulumi neo</code> stream and
message-send failures, and add <code>pulumi neo resume</code> with chat
history <a
href="https://redirect.github.com/pulumi/pulumi/pull/23835">#23835</a></li>
<li>[cli/neo] Make Ctrl+C clear typed text and preserve Ctrl+A/Ctrl+E
line navigation in <code>pulumi neo</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23932">#23932</a></li>
<li>[cli/do] Add <code>upsert</code> to do, allowing resources to be
statefully created or updated in a stack <a
href="https://redirect.github.com/pulumi/pulumi/pull/23813">#23813</a></li>
<li>[sdk/python] Add <code>pulumi.run</code> for natively awaited Python
program entrypoints that can return stack outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23945">#23945</a></li>
<li>[cli/do] Allow expressions for number inputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23954">#23954</a></li>
<li>[cli/do] Allow expressions for boolean inputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23967">#23967</a></li>
<li>[cli/policy] Add <code>--runtime-options</code> to <code>pulumi
policy new</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23992">#23992</a></li>
<li>[cli/do] Add support for stateful create <a
href="https://redirect.github.com/pulumi/pulumi/pull/23996">#23996</a></li>
<li>[cli/do] Add support for stateful delete <a
href="https://redirect.github.com/pulumi/pulumi/pull/24000">#24000</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdkgen/go] Fix Go codegen for plain properties nested inside
non-plain objects <a
href="https://redirect.github.com/pulumi/pulumi/pull/22524">#22524</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.255.0 (2026-07-28)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Add an <code>--extension</code> flag to package commands for
extension-parameterized packages, reinstalled from
<code>Pulumi.yaml</code> on <code>pulumi install</code></li>
<li>[cli] Project files to disk and surface their paths as environment
variables for all output formats when opening an ESC environment <a
href="https://redirect.github.com/pulumi/pulumi/pull/23993">#23993</a></li>
<li>[engine] Resolve an invoke's provider from the
<code>providers</code> option of the parent named on the request,
matching the resolution applied to resource registrations <a
href="https://redirect.github.com/pulumi/pulumi/pull/24016">#24016</a></li>
<li>[cli/do] Add <code>--resources</code> to refer to existing resources
in state in <code>do</code> input expressions <a
href="https://redirect.github.com/pulumi/pulumi/pull/24037">#24037</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[programgen/nodejs] Parent an invoke written inside a component to
that component, so it resolves the component's providers <a
href="https://redirect.github.com/pulumi/pulumi/pull/24017">#24017</a></li>
<li>[pcl] Apply the <code>providers</code> option of a
<code>component</code> block to the resources and invokes it declares <a
href="https://redirect.github.com/pulumi/pulumi/pull/24016">#24016</a></li>
<li>[cli/import] Fix import file generation when parent resources share
names <a
href="https://redirect.github.com/pulumi/pulumi/pull/24069">#24069</a></li>
<li>[cli] Fix parallel <code>pulumi install</code> processes sharing a
<code>PULUMI_HOME</code> intermittently failing with a missing provider
executable error <a
href="https://redirect.github.com/pulumi/pulumi/pull/24080">#24080</a></li>
<li>[sdk/python] Allow Construct and Call methods to run concurrently in
provider servers <a
href="https://redirect.github.com/pulumi/pulumi/pull/24081">#24081</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[engine] Support strings containing non-UTF8 bytes flowing between
providers, the engine, state, and languages that opt in (Go and PCL
initially) <a
href="https://redirect.github.com/pulumi/pulumi/pull/23856">#23856</a></li>
<li>[cli] Add a <code>--summary</code> flag to <code>pulumi stack
history events</code> that reduces a past update's events to the same
summary shape as a live <code>pulumi up --output json</code>, extended
with error diagnostics and failed-resource markers <a
href="https://redirect.github.com/pulumi/pulumi/pull/23960">#23960</a></li>
<li>[protobuf] Allow state converters to supply resource inputs and
outputs in ConvertState responses <a
href="https://redirect.github.com/pulumi/pulumi/pull/23987">#23987</a></li>
<li>[engine] Allow policy packs to point to executable binaries, not
just script folders <a
href="https://redirect.github.com/pulumi/pulumi/pull/24052">#24052</a></li>
<li>[cli/display] The Neo diagnostics link now suggests <code>pulumi neo
--debug-update</code> or <code>pulumi neo --debug-preview</code> to
investigate the failed operation <a
href="https://redirect.github.com/pulumi/pulumi/pull/24075">#24075</a></li>
<li>[sdk/python] Allow <code>UV_PROJECT_ENVIRONMENT</code> to override
the virtualenv path if uv is used <a
href="https://redirect.github.com/pulumi/pulumi/pull/24077">#24077</a></li>
<li>[cli] Allow otel traces to be sent over https <a
href="https://redirect.github.com/pulumi/pulumi/pull/24078">#24078</a></li>
</ul>
<h2>3.254.0 (2026-07-23)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Add <code>pulumi logs share</code> command for sharing logs
with Pulumi <a
href="https://redirect.github.com/pulumi/pulumi/pull/22546">#22546</a></li>
<li>[cli] Add <code>pulumi stack migrate</code> to migrate a stack from
another backend to the currently logged-in backend, including
re-encrypting config secrets and stack state under the target secrets
provider <a
href="https://redirect.github.com/pulumi/pulumi/pull/22902">#22902</a></li>
<li>[cli/config] Add an <code>--override-env</code> flag to
<code>up</code>, <code>preview</code>, <code>destroy</code>, and
<code>refresh</code> to substitute imported environments for a single
run without editing the stack config <a
href="https://redirect.github.com/pulumi/pulumi/pull/23562">#23562</a></li>
<li>[cli] Add <code>pulumi neo acp</code> to run Neo as an Agent Client
Protocol agent over stdio for ACP-capable editors, with read-only and
plan mode exposed as session config options <a
href="https://redirect.github.com/pulumi/pulumi/pull/23886">#23886</a></li>
<li>[cli/neo] Retry transient <code>pulumi neo</code> stream and
message-send failures, and add <code>pulumi neo resume</code> with chat
history <a
href="https://redirect.github.com/pulumi/pulumi/pull/23835">#23835</a></li>
<li>[cli/neo] Make Ctrl+C clear typed text and preserve Ctrl+A/Ctrl+E
line navigation in <code>pulumi neo</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23932">#23932</a></li>
<li>[cli/do] Add <code>upsert</code> to do, allowing resources to be
statefully created or updated in a stack <a
href="https://redirect.github.com/pulumi/pulumi/pull/23813">#23813</a></li>
<li>[sdk/python] Add <code>pulumi.run</code> for natively awaited Python
program entrypoints that can return stack outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23945">#23945</a></li>
<li>[cli/do] Allow expressions for number inputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23954">#23954</a></li>
<li>[cli/do] Allow expressions for boolean inputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23967">#23967</a></li>
<li>[cli/policy] Add <code>--runtime-options</code> to <code>pulumi
policy new</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23992">#23992</a></li>
<li>[cli/do] Add support for stateful create <a
href="https://redirect.github.com/pulumi/pulumi/pull/23996">#23996</a></li>
<li>[cli/do] Add support for stateful delete <a
href="https://redirect.github.com/pulumi/pulumi/pull/24000">#24000</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdkgen/go] Fix Go codegen for plain properties nested inside
non-plain objects <a
href="https://redirect.github.com/pulumi/pulumi/pull/22524">#22524</a></li>
<li>[cli/neo] Keep <code>pulumi neo</code> connected during quiet
periods when the event stream only receives keep-alive heartbeats <a
href="https://redirect.github.com/pulumi/pulumi/pull/23935">#23935</a></li>
<li>[engine] Validate snippets before persisting them <a
href="https://redirect.github.com/pulumi/pulumi/pull/23920">#23920</a></li>
<li>[backend] Fix dangling ReplaceWith references in the journal
replayer <a
href="https://redirect.github.com/pulumi/pulumi/pull/23927">#23927</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7a0dceacbe"><code>7a0dcea</code></a>
Go feature discovery: consult the new system first (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24088">#24088</a>)</li>
<li><a
href="f011f0f664"><code>f011f0f</code></a>
Let renovate auto-merge the unbundled language runtime pins (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24087">#24087</a>)</li>
<li><a
href="546e5098cf"><code>546e509</code></a>
Fix <code>make renovate</code> changelog script (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24086">#24086</a>)</li>
<li><a
href="7d30b0c0a1"><code>7d30b0c</code></a>
Add manual resource references to do (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24037">#24037</a>)</li>
<li><a
href="aa51d8a8fa"><code>aa51d8a</code></a>
otel traces: allow traces over https:// (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24078">#24078</a>)</li>
<li><a
href="10b00bcb95"><code>10b00bc</code></a>
fix parallel <code>pulumi install</code> resulting in provider missing
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/24080">#24080</a>)</li>
<li><a
href="fcd2794882"><code>fcd2794</code></a>
Update first-party Pulumi dependencies (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24083">#24083</a>)</li>
<li><a
href="0d702cad76"><code>0d702ca</code></a>
Parent invokes written inside a component to that component in nodejs
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/24017">#24017</a>)</li>
<li><a
href="676cc1c536"><code>676cc1c</code></a>
Fix import file generation (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24069">#24069</a>)</li>
<li><a
href="76adffb9f5"><code>76adffb</code></a>
Remove locks from Construct/Call in python servers (<a
href="https://redirect.github.com/pulumi/pulumi/issues/24081">#24081</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.253.0...v3.255.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.253.0&new-version=3.255.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 01:30:05 +03:00
dependabot[bot]
4e1f96a716
build(deps): bump github.com/danielgtaylor/huma/v2 from 2.39.0 to 2.39.1 (#1489)
Bumps
[github.com/danielgtaylor/huma/v2](https://github.com/danielgtaylor/huma)
from 2.39.0 to 2.39.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/danielgtaylor/huma/releases">github.com/danielgtaylor/huma/v2's
releases</a>.</em></p>
<blockquote>
<h1>v2.39.1</h1>
<h2>Overview</h2>
<p>A patch release: correctness fixes for resolvers, validation, and
response handling, plus a dependency refresh.</p>
<h3>Response Status Visible to Middleware Again</h3>
<p><code>WithContext</code> context propagation in v2.39.0 copied the
response status by value, so middleware that called
<code>WithContext</code> and then read <code>Status()</code> after
<code>next()</code> always saw <code>0</code> instead of the status the
handler set, breaking access logging and telemetry. The status is now
shared by every context copy across all adapters, restoring the pre-2.39
invariant while keeping context propagation intact. (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1081">#1081</a>)</p>
<h3>Resolvers &amp; Defaults in Arrays and Maps</h3>
<ul>
<li>Nested resolvers now run for fixed-size arrays
(<code>[2]Item</code>), not just slices (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1076">#1076</a>)</li>
<li>A resolver on a named collection type (e.g. <code>type Coords
[2]float64</code>) no longer panics, and is no longer conflated with a
resolver on its element type, which previously ran the element's
resolver twice and the collection's never (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1082">#1082</a>)</li>
<li>Values reached through a map are now written back after being
walked, so applying a default no longer panics with <code>reflect:
reflect.Value.Set using unaddressable value</code> and resolver
mutations are no longer silently discarded (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1082">#1082</a>)</li>
</ul>
<h3>Stricter <code>email</code> and <code>uri</code> Formats</h3>
<p>Validation for two string formats is tighter, so payloads that
previously passed may now return <code>422</code>:</p>
<ul>
<li><code>email</code> / <code>idn-email</code> accept an addr-spec
only; full mailbox forms with a display name (<code>Name
&lt;user@example.com&gt;</code>) are rejected</li>
<li><code>uri</code> / <code>iri</code> require an absolute URI with a
non-empty scheme, while relative references remain valid under
<code>uri-reference</code> / <code>iri-reference</code> (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1068">#1068</a>)</li>
</ul>
<h3>Validation Robustness</h3>
<ul>
<li>An unresolvable schema <code>$ref</code> during
<code>Validate</code> now reports <code>expected schema $ref to resolve:
...</code> instead of panicking on a nil dereference, covering
discriminators and <code>map[string]any</code> /
<code>map[any]any</code> values (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1065">#1065</a>)</li>
<li>Named numeric slice parameters (e.g. <code>type IDs []int64</code>)
are built with their declared element type and validated with item,
length, and uniqueness constraints intact (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1074">#1074</a>)</li>
</ul>
<h2>Other Fixes</h2>
<ul>
<li>Resolver errors that wrap a <code>HeadersError</code> now contribute
their headers to the response, matching the handler error path (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1070">#1070</a>)</li>
<li>A nil interface response body no longer panics in the schema link
transformer (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1072">#1072</a>)</li>
<li>Dependencies updated (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1066">#1066</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>fix: do not panic on unresolved schema $ref during Validate by <a
href="https://github.com/baiyuxi930826"><code>@​baiyuxi930826</code></a>
in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1065">danielgtaylor/huma#1065</a></li>
<li>chore: update dependencies by <a
href="https://github.com/wolveix"><code>@​wolveix</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1066">danielgtaylor/huma#1066</a></li>
<li>fix: tighten format email and uri validation by <a
href="https://github.com/baiyuxi930826"><code>@​baiyuxi930826</code></a>
in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1068">danielgtaylor/huma#1068</a></li>
<li>fix: preserve wrapped resolver error metadata by <a
href="https://github.com/ggmolly"><code>@​ggmolly</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1070">danielgtaylor/huma#1070</a></li>
<li>fix: handle nil interface response bodies by <a
href="https://github.com/ggmolly"><code>@​ggmolly</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1072">danielgtaylor/huma#1072</a></li>
<li>fix: parse named numeric slice parameters by <a
href="https://github.com/ggmolly"><code>@​ggmolly</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1074">danielgtaylor/huma#1074</a></li>
<li>fix: share response status across WithContext copies by <a
href="https://github.com/wolveix"><code>@​wolveix</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1081">danielgtaylor/huma#1081</a></li>
<li>fix: run nested resolvers in fixed arrays by <a
href="https://github.com/ggmolly"><code>@​ggmolly</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1076">danielgtaylor/huma#1076</a></li>
<li>fix: distinguish collection and element matches when walking input
by <a href="https://github.com/wolveix"><code>@​wolveix</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1082">danielgtaylor/huma#1082</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/baiyuxi930826"><code>@​baiyuxi930826</code></a>
made their first contribution in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1065">danielgtaylor/huma#1065</a></li>
<li><a href="https://github.com/ggmolly"><code>@​ggmolly</code></a> made
their first contribution in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1070">danielgtaylor/huma#1070</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/danielgtaylor/huma/compare/v2.39.0...v2.39.1">https://github.com/danielgtaylor/huma/compare/v2.39.0...v2.39.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="198225eaac"><code>198225e</code></a>
fix: distinguish collection and element matches when walking input (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1082">#1082</a>)</li>
<li><a
href="5961f0a01d"><code>5961f0a</code></a>
fix: run nested resolvers in fixed arrays (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1076">#1076</a>)</li>
<li><a
href="85aad8ffbd"><code>85aad8f</code></a>
fix: share response status across WithContext copies (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1081">#1081</a>)</li>
<li><a
href="22a3cb0100"><code>22a3cb0</code></a>
fix: parse named numeric slice parameters (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1074">#1074</a>)</li>
<li><a
href="ac9959c059"><code>ac9959c</code></a>
fix: handle nil interface response bodies (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1072">#1072</a>)</li>
<li><a
href="b659c7472c"><code>b659c74</code></a>
fix: preserve wrapped resolver error metadata (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1070">#1070</a>)</li>
<li><a
href="14aea2fe3d"><code>14aea2f</code></a>
fix: tighten format email and uri validation (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1068">#1068</a>)</li>
<li><a
href="bba0d542c4"><code>bba0d54</code></a>
chore: update dependencies (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1066">#1066</a>)</li>
<li><a
href="e114668342"><code>e114668</code></a>
fix: do not panic on unresolved schema $ref during Validate (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1065">#1065</a>)</li>
<li>See full diff in <a
href="https://github.com/danielgtaylor/huma/compare/v2.39.0...v2.39.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/danielgtaylor/huma/v2&package-manager=go_modules&previous-version=2.39.0&new-version=2.39.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 01:29:42 +03:00
Tadas Antanavicius
2a28830156
docs: remove Tadas as WG Lead (#1493)
Per discussion with @rdimitrov, removing my listing as WG Lead of
Registry so I can free up some time to work on [AI
Catalog](https://github.com/Agent-Card/ai-catalog) and [Server
Cards](https://github.com/modelcontextprotocol/experimental-ext-server-card).

FYI @BobDickinson @pree-dew

Co-authored-by: Tadas Antanavicius <jon@tadasant.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 01:29:25 +03:00
dependabot[bot]
4000b09953
build(deps): bump github.com/google/go-containerregistry from 0.21.7 to 0.21.8 (#1507)
Bumps
[github.com/google/go-containerregistry](https://github.com/google/go-containerregistry)
from 0.21.7 to 0.21.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/go-containerregistry/releases">github.com/google/go-containerregistry's
releases</a>.</em></p>
<blockquote>
<h2>v0.21.8</h2>
<p>The artifacts attached to this release are missing SLSA provenance,
see <a
href="https://redirect.github.com/google/go-containerregistry/issues/2390">#2390</a>.</p>
<h2>What's Changed</h2>
<ul>
<li>build(deps): bump the go-deps group across 1 directory with 3
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2353">google/go-containerregistry#2353</a></li>
<li>build(deps): bump golang.org/x/crypto from 0.45.0 to 0.52.0 in
/cmd/krane by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2367">google/go-containerregistry#2367</a></li>
<li>build(deps): bump golang.org/x/crypto from 0.50.0 to 0.52.0 in
/pkg/authn/k8schain by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2368">google/go-containerregistry#2368</a></li>
<li>build(deps): bump golang.org/x/net from 0.49.0 to 0.55.0 in
/pkg/authn/kubernetes by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2363">google/go-containerregistry#2363</a></li>
<li>build(deps): bump the go-deps group across 3 directories with 7
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2377">google/go-containerregistry#2377</a></li>
<li>build(deps): bump the actions group across 1 directory with 5
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2375">google/go-containerregistry#2375</a></li>
<li>Reject unsafe Windows archive paths in Extract by <a
href="https://github.com/Haihan-Jiang"><code>@​Haihan-Jiang</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2330">google/go-containerregistry#2330</a></li>
<li>feat(goreleaser): add loong64 build support for crane/gcrane/krane
by <a
href="https://github.com/xuxiaowei-com-cn"><code>@​xuxiaowei-com-cn</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2358">google/go-containerregistry#2358</a></li>
<li>Document tag and digest reference semantics by <a
href="https://github.com/Haihan-Jiang"><code>@​Haihan-Jiang</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2325">google/go-containerregistry#2325</a></li>
<li>remote: release pull limiter slot when body is read to EOF by <a
href="https://github.com/knQzx"><code>@​knQzx</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2373">google/go-containerregistry#2373</a></li>
<li>tarball: bounds-check layer index in uncompressed LayerByDiffID by
<a
href="https://github.com/arpitjain099"><code>@​arpitjain099</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2370">google/go-containerregistry#2370</a></li>
<li>authn: read Podman auth from XDG config by <a
href="https://github.com/vigneshakaviki"><code>@​vigneshakaviki</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2379">google/go-containerregistry#2379</a></li>
<li>transport: per-host bearer token exchange on cross-host redirect by
<a href="https://github.com/amitzig"><code>@​amitzig</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2360">google/go-containerregistry#2360</a></li>
<li>mutate: bounds-check layer index when building rebase addendums by
<a
href="https://github.com/arpitjain099"><code>@​arpitjain099</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2371">google/go-containerregistry#2371</a></li>
<li>fix(daemon): copy ExposedPorts from source config in
computeImageConfig by <a
href="https://github.com/x64vps"><code>@​x64vps</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2356">google/go-containerregistry#2356</a></li>
<li>feat(remote): add WithReferrersTagFallback option by <a
href="https://github.com/kevinmdavis"><code>@​kevinmdavis</code></a> in
<a
href="https://redirect.github.com/google/go-containerregistry/pull/2366">google/go-containerregistry#2366</a></li>
<li>mutate: apply opaque-directory whiteouts (.wh..wh..opq) in Extract
by <a href="https://github.com/sadmanf"><code>@​sadmanf</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2372">google/go-containerregistry#2372</a></li>
<li>tarball: use correct file extension for zstd/uncompressed by <a
href="https://github.com/milas"><code>@​milas</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2382">google/go-containerregistry#2382</a></li>
<li>build(deps): bump github.com/moby/moby/client from 0.5.0 to 0.5.1 in
the go-deps group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2380">google/go-containerregistry#2380</a></li>
<li>actions: update actions to be pinned by hash by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2384">google/go-containerregistry#2384</a></li>
<li>Bump go version to 1.26.5 by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2388">google/go-containerregistry#2388</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/xuxiaowei-com-cn"><code>@​xuxiaowei-com-cn</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2358">google/go-containerregistry#2358</a></li>
<li><a href="https://github.com/knQzx"><code>@​knQzx</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2373">google/go-containerregistry#2373</a></li>
<li><a
href="https://github.com/arpitjain099"><code>@​arpitjain099</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2370">google/go-containerregistry#2370</a></li>
<li><a
href="https://github.com/vigneshakaviki"><code>@​vigneshakaviki</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2379">google/go-containerregistry#2379</a></li>
<li><a href="https://github.com/amitzig"><code>@​amitzig</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2360">google/go-containerregistry#2360</a></li>
<li><a href="https://github.com/x64vps"><code>@​x64vps</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2356">google/go-containerregistry#2356</a></li>
<li><a
href="https://github.com/kevinmdavis"><code>@​kevinmdavis</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2366">google/go-containerregistry#2366</a></li>
<li><a href="https://github.com/sadmanf"><code>@​sadmanf</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2372">google/go-containerregistry#2372</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/go-containerregistry/compare/v0.21.7...v0.21.8">https://github.com/google/go-containerregistry/compare/v0.21.7...v0.21.8</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="2ea098f4b1"><code>2ea098f</code></a>
Bump go version to 1.26.5 (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2388">#2388</a>)</li>
<li><a
href="ec2e586877"><code>ec2e586</code></a>
actions: reformat ALL actions (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2386">#2386</a>)</li>
<li><a
href="ab819b62e8"><code>ab819b6</code></a>
actions: fix unformatted action (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2385">#2385</a>)</li>
<li><a
href="eed9a206c1"><code>eed9a20</code></a>
actions: update actions to be pinned by hash (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2384">#2384</a>)</li>
<li><a
href="8a97709675"><code>8a97709</code></a>
build(deps): bump github.com/moby/moby/client (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2380">#2380</a>)</li>
<li><a
href="d04bf7d851"><code>d04bf7d</code></a>
tarball: use correct file extension for zstd/uncompressed (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2382">#2382</a>)</li>
<li><a
href="4d13d5326e"><code>4d13d53</code></a>
mutate: apply opaque-directory whiteouts (.wh..wh..opq) in Extract (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2372">#2372</a>)</li>
<li><a
href="af2603f63f"><code>af2603f</code></a>
feat(remote): add WithReferrersTagFallback option (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2366">#2366</a>)</li>
<li><a
href="fb196956b1"><code>fb19695</code></a>
fix(daemon): copy ExposedPorts from source config in computeImageConfig
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2356">#2356</a>)</li>
<li><a
href="0c9d9110e2"><code>0c9d911</code></a>
mutate: bounds-check layer index when building rebase addendums (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2371">#2371</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/google/go-containerregistry/compare/v0.21.7...v0.21.8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/google/go-containerregistry&package-manager=go_modules&previous-version=0.21.7&new-version=0.21.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-07 01:28:11 +03:00
Radoslav Dimitrov
0b5cc0f6a9
build(deps): consolidate open dependabot updates (#1482)
Consolidates the five open dependabot PRs into a single change so they
can be reviewed and merged together. Each bump was reproduced against
current `main` (`go get` + `go mod tidy` for Go modules; the exact SHA
pins applied for the actions group), rather than merging the individual
branches, to avoid stale `go.sum` conflicts.

## Root module (`go.mod`)
| Dependency | From | To | Supersedes |
|---|---|---|---|
| `google.golang.org/grpc` | 1.82.0 | 1.82.1 | #1479 |
| `github.com/prometheus/client_golang` | 1.23.2 | 1.24.1 | #1475 |
| `github.com/danielgtaylor/huma/v2` | 2.38.0 | 2.39.0 | #1474 |

## Deploy module (`deploy/go.mod`)
| Dependency | From | To | Supersedes |
|---|---|---|---|
| `github.com/pulumi/pulumi-kubernetes/sdk/v4` | 4.32.0 | 4.33.0 | #1449
|

## GitHub Actions (#1476)
- `actions/setup-go` SHA bumped across `ci.yml`, `release.yml`,
`deploy-production.yml`, `deploy-staging.yml`
- `actions/download-artifact` v4 → v8.0.1 in
`close-invalid-publish-prs.yml`

`go mod tidy` re-resolved transitive dependencies in both modules
accordingly.

## Verification
- `go build ./...` passes (root + deploy)
- `go vet ./...` passes
- `govulncheck ./...` reports no `golang.org/x/text` finding (the
GO-2026-5970 fix from #1481 is preserved; tidy pulled x/text to v0.40.0)

## Follow-up
Once this merges, the five superseded PRs (#1479, #1475, #1474, #1449,
#1476) can be closed.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 06:13:53 -04:00
dependabot[bot]
b25ab9b93a
build(deps): bump google.golang.org/grpc from 1.81.1 to 1.82.1 in /deploy (#1480)
Bumps [google.golang.org/grpc](https://github.com/grpc/grpc-go) from
1.81.1 to 1.82.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/grpc/grpc-go/releases">google.golang.org/grpc's
releases</a>.</em></p>
<blockquote>
<h2>Release 1.82.1</h2>
<h1>Security</h1>
<ul>
<li>server: Stop reading from the connection when flooded by HTTP/2
frames. The default value for this limit is 100 frames, excluding DATA
and HEADERS, and may be changed by setting environment variable
<code>GRPC_GO_EXPERIMENTAL_CONTROL_BUFFER_THROTTLE_LIMIT</code>.</li>
<li>xds/rbac: Support <code>Metadata</code> and
<code>RequestedServerName</code> permissions matcher fields. If present
in a DENY rule, previously these would be ignored and fail-open.</li>
<li>xds/rbac: Fix panic when parsing unsupported fields in
<code>NotRule</code>/<code>NotId</code> permissions.</li>
<li>xds/rbac: Support the deprecated <code>source_ip</code> principal
identifier by treating it as equivalent to
<code>direct_remote_ip</code>.</li>
</ul>
<h2>Release 1.82.0</h2>
<h1>Behavior Changes</h1>
<ul>
<li>server: Remove support for
<code>GRPC_GO_EXPERIMENTAL_DISABLE_STRICT_PATH_CHECKING</code>
environment varibale. Strict incoming RPC path validation (which has
been the default since <code>v1.79.3</code>) can no longer be disabled.
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/9112">#9112</a>)</li>
<li>transport: Add environment variable to change the default max header
list size from <code>16MB</code> to <code>8KB</code>. This may be
enabled by setting
<code>GRPC_GO_EXPERIMENTAL_ENABLE_8KB_DEFAULT_HEADER_LIST_SIZE=true</code>.
This will be enabled by default in a subsequent release. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9019">#9019</a>)</li>
<li>balancer: Load Balancing policy registry is now case-sensitive. Set
<code>GRPC_GO_EXPERIMENTAL_CASE_SENSITIVE_BALANCER_REGISTRIES=false</code>
(and file an issue) to revert to case-insensitive behavior. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9017">#9017</a>)</li>
</ul>
<h1>New Features</h1>
<ul>
<li>experimental/stats: Expose a new API,
<code>NewContextWithLabelCallback</code>, to register a callback that is
invoked when telemetry labels are added. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8877">#8877</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/seth-epps"><code>@​seth-epps</code></a></li>
</ul>
</li>
<li>client: Return a portion of the response body in the error message,
when the client receives an unexpected non-gRPC HTTP response, to make
debugging easier. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8929">#8929</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/chengxilo"><code>@​chengxilo</code></a></li>
</ul>
</li>
<li>server: Add environment variable
<code>GRPC_GO_SERVER_GOROUTINE_LABELS</code> that controls setting
<code>runtime/pprof.Labels</code> on goroutines spawned by the server.
Set <code>GRPC_GO_SERVER_GOROUTINE_LABELS=grpc.method=true</code> to add
the <code>grpc.method</code> label on goroutines spawned to handle
incoming requests. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9082">#9082</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/dfinkel"><code>@​dfinkel</code></a></li>
</ul>
</li>
</ul>
<h1>Bug Fixes</h1>
<ul>
<li>xds/server: Fix a memory leak of HTTP filter instances occurring
when route configurations are updated in-place during a Route Discovery
Service (RDS) update. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9138">#9138</a>)</li>
<li>grpc: In the deprecated <code>gzip</code> Compressor (used via the
deprecated <code>WithCompressor</code> dial option), enforce the
<code>MaxRecvMsgSize</code> limit on the decompressed message buffer,
preventing excessive memory allocation from highly compressed payloads.
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/9114">#9114</a>)
<ul>
<li>Special Thanks: <a
href="https://github.com/evilgensec"><code>@​evilgensec</code></a></li>
</ul>
</li>
<li>stats/opentelemetry: Record retry attempts,
<code>grpc.previous-rpc-attempts</code>, at the call level and not the
attempt level. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8923">#8923</a>)</li>
<li>encoding: Ensure <code>Close()</code> is always called on readers
returned from <code>Compressor.Decompress</code> if possible. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9135">#9135</a>)</li>
<li>channelz: Fix the <code>LastMessageSentTimestamp</code> and
<code>LastMessageReceivedTimestamp</code> fields in
<code>SocketMetrics</code> to ensure they contain correct timestamp
values. (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9109">#9109</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ebd8f06a09"><code>ebd8f06</code></a>
Change version to 1.82.1 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9238">#9238</a>)</li>
<li><a
href="4ea465d4ab"><code>4ea465d</code></a>
Cherry-pick commits (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9236">#9236</a>)</li>
<li><a
href="9494a2cf32"><code>9494a2c</code></a>
Change version to 1.82.1-dev (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9171">#9171</a>)</li>
<li><a
href="bd239854f0"><code>bd23985</code></a>
Change version to 1.82.0 (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9170">#9170</a>)</li>
<li><a
href="0f3086db7a"><code>0f3086d</code></a>
Fix minor issues not covered by PR <a
href="https://redirect.github.com/grpc/grpc-go/issues/9137">#9137</a>
(<a
href="https://redirect.github.com/grpc/grpc-go/issues/9147">#9147</a>)</li>
<li><a
href="fef07fbb2b"><code>fef07fb</code></a>
internal: Split v3procservicepb import into pb and grpc for extproc (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9163">#9163</a>)</li>
<li><a
href="91dd64f4b8"><code>91dd64f</code></a>
transport: surface subsequent data when receiving non-gRPC header (<a
href="https://redirect.github.com/grpc/grpc-go/issues/8929">#8929</a>)</li>
<li><a
href="adc97de952"><code>adc97de</code></a>
test/kokoro: add config for regional-td test (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9158">#9158</a>)</li>
<li><a
href="57c9ff14e0"><code>57c9ff1</code></a>
xds: ensure full-string matching for RBAC Filter rules (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9148">#9148</a>)</li>
<li><a
href="b58f32d9ff"><code>b58f32d</code></a>
server: Set a pprof label on new stream goroutines (<a
href="https://redirect.github.com/grpc/grpc-go/issues/9082">#9082</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/grpc/grpc-go/compare/v1.81.1...v1.82.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=google.golang.org/grpc&package-manager=go_modules&previous-version=1.81.1&new-version=1.82.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/registry/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 06:03:48 -04:00
Radoslav Dimitrov
8d3517519f
fix(deps): bump golang.org/x/text to v0.39.0 (GO-2026-5970) (#1481)
## Problem

The **Build, Lint, and Validate** CI job is failing on every open PR
(#1480, #1474, #1449) and on `main`. The failing step is `govulncheck`:

```
Vulnerability #1: GO-2026-5970
    Infinite loop on invalid input in golang.org/x/text
    Found in: golang.org/x/text@v0.38.0
    Fixed in: golang.org/x/text@v0.39.0
```

This is **not** caused by any of those PRs' changes —
`govulncheck-action` fetches the live vulnerability database at runtime,
so when GO-2026-5970 was published, every branch based on the current
`main` started failing. The vulnerable symbol is reachable via:

- `auth.DefaultHTTPKeyFetcher.FetchKey` → `http.Client.Do`
- `database.NewTestDB` → `pgx.Connect`

so the scan exits with code 3.

## Fix

Bump the (indirect) `golang.org/x/text` dependency from `v0.38.0` to the
fixed `v0.39.0` and `go mod tidy`.

## Verification

- `govulncheck ./...` no longer reports GO-2026-5970 (confirmed
locally).
- `go build ./...` passes.

## Note

The `deploy/` module pins `golang.org/x/text@v0.37.0`, which is also <
v0.39.0. It is a separate module and is **not** scanned by this CI job
(govulncheck runs `./...` in the root module only), so it does not block
CI. Worth a follow-up bump for hygiene, but out of scope here.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-27 06:03:12 -04:00
dependabot[bot]
5cbf3320e8
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.251.0 to 3.253.0 in /deploy (#1448)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.251.0 to 3.253.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.253.0</h2>
<h2>3.253.0 (2026-07-14)</h2>
<h3>Features</h3>
<ul>
<li>[auto/go] Support --import-pending-creates for refresh command in Go
Automation API for preview refresh and refresh operations <a
href="https://redirect.github.com/pulumi/pulumi/pull/23833">#23833</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdk] Precompose filenames to NFC on macOS when matching ignore
patterns during archive creation, mirroring git's core.precomposeunicode
so composed patterns match decomposed filenames <a
href="https://redirect.github.com/pulumi/pulumi/pull/23566">#23566</a></li>
<li>[cli] Respect the -v log level again so that without -v only
warnings and errors are written to stderr <a
href="https://redirect.github.com/pulumi/pulumi/pull/23910">#23910</a></li>
<li>[codegen] Correctly generate provider resources declared inside PCL
components for Node.js, Python and Go <a
href="https://redirect.github.com/pulumi/pulumi/pull/23904">#23904</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli] Add a <code>--version</code> flag to the <code>pulumi</code>
command that prints the version, same as <code>pulumi version</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23898">#23898</a></li>
<li>[cli] Align <code>env</code> commands with the CLI naming
guidelines, making <code>list</code>, <code>remove</code> and
<code>move</code> the canonical names with <code>ls</code>,
<code>rm</code>, <code>delete</code> and <code>mv</code> kept as aliases
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23901">#23901</a></li>
</ul>
<h2>v3.252.0</h2>
<h2>3.252.0 (2026-07-13)</h2>
<h3>Features</h3>
<ul>
<li>[auto] Add <code>import</code> to the generated automation APIs for
NodeJS, Python and Go <a
href="https://redirect.github.com/pulumi/pulumi/pull/23876">#23876</a></li>
<li>[cli] Improve the error message when using Pulumi ESC with a DIY
backend to suggest logging into Pulumi Cloud <a
href="https://redirect.github.com/pulumi/pulumi/pull/23811">#23811</a></li>
<li>[cli] Show command name for cli commands when running any command
that lists logs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23889">#23889</a></li>
<li>[cli/display] Render strings containing non-UTF8 bytes as
b&quot;<!-- raw HTML omitted -->&quot; in diffs and JSON output <a
href="https://redirect.github.com/pulumi/pulumi/pull/23870">#23870</a></li>
<li>[cli/env] Add a <code>--reason</code> flag to <code>pulumi env
open-request</code> to explain the request to approvers <a
href="https://redirect.github.com/pulumi/pulumi/pull/23802">#23802</a></li>
<li>[cli/state] Improve the error message when a resource URN is not
found in the state for <code>pulumi state</code> commands, suggesting
close-matching URNs and how to list the URNs in the stack <a
href="https://redirect.github.com/pulumi/pulumi/pull/23812">#23812</a></li>
<li>[pcl] Allow binding hooks to a resource's <code>onError</code>
option <a
href="https://redirect.github.com/pulumi/pulumi/pull/23838">#23838</a></li>
<li>[sdk/nodejs] Add a <code>production</code> runtime option for
Node.js projects. When set to <code>true</code> in
<code>Pulumi.yaml</code>, <code>pulumi install</code> skips
<code>devDependencies</code> (npm <code>--production</code>, pnpm
<code>--production</code>, yarn <code>--production</code>). <a
href="https://redirect.github.com/pulumi/pulumi/pull/23849">#23849</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[cli] Exit with a non-zero code when a command group such as
<code>pulumi env</code> is given an unknown subcommand or no subcommand
at all <a
href="https://redirect.github.com/pulumi/pulumi/pull/23814">#23814</a></li>
<li>[cli] Fix a panic when displaying a stack-level policy violation <a
href="https://redirect.github.com/pulumi/pulumi/pull/23692">#23692</a></li>
<li>[cli] Make reading non-secret stack outputs and running <code>pulumi
about</code> no longer require the passphrase for passphrase-encrypted
stacks <a
href="https://redirect.github.com/pulumi/pulumi/pull/23820">#23820</a></li>
<li>[cli] Avoid <code>pulumi logs &lt;command&gt;</code> showing the log
for the currently running command <a
href="https://redirect.github.com/pulumi/pulumi/pull/23887">#23887</a></li>
<li>[cli/do] Fix calling delete on PF resources that need read called
first <a
href="https://redirect.github.com/pulumi/pulumi/pull/23837">#23837</a></li>
<li>[cli/env] Submit the change request created by <code>pulumi env
open-request</code> so it is pending approval instead of being left as
an unsubmitted draft <a
href="https://redirect.github.com/pulumi/pulumi/pull/23802">#23802</a></li>
<li>[cli/neo] Fix the initial prompt sometimes rendering above the
welcome banner in <code>pulumi neo</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23831">#23831</a></li>
<li>[engine] Fix importing a resource whose import identifier differs
from its canonical ID causes the resource to be deleted on a subsequent
update <a
href="https://redirect.github.com/pulumi/pulumi/pull/23834">#23834</a></li>
<li>[programgen] Deduplicate identical apply arguments to avoid
unnecessary Promise.all/pulumi.all/Output.All in generated code <a
href="https://redirect.github.com/pulumi/pulumi/pull/22293">#22293</a></li>
<li>[sdk] Failed resource registrations will return faulted outputs, not
unknown outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23844">#23844</a></li>
<li>[sdk/nodejs] Fix empty node_modules folders in serialized function
archives when using pnpm or symlinked workspace packages <a
href="https://redirect.github.com/pulumi/pulumi/pull/23866">#23866</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[sdk/nodejs] Report the TypeScript version in <code>pulumi
about</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23850">#23850</a></li>
<li>[sdk/nodejs] Update OpenTelemetry dependencies <a
href="https://redirect.github.com/pulumi/pulumi/pull/23855">#23855</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.253.0 (2026-07-14)</h2>
<h3>Features</h3>
<ul>
<li>[auto/go] Support --import-pending-creates for refresh command in Go
Automation API for preview refresh and refresh operations <a
href="https://redirect.github.com/pulumi/pulumi/pull/23833">#23833</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdk] Precompose filenames to NFC on macOS when matching ignore
patterns during archive creation, mirroring git's core.precomposeunicode
so composed patterns match decomposed filenames <a
href="https://redirect.github.com/pulumi/pulumi/pull/23566">#23566</a></li>
<li>[cli] Respect the -v log level again so that without -v only
warnings and errors are written to stderr <a
href="https://redirect.github.com/pulumi/pulumi/pull/23910">#23910</a></li>
<li>[codegen] Correctly generate provider resources declared inside PCL
components for Node.js, Python and Go <a
href="https://redirect.github.com/pulumi/pulumi/pull/23904">#23904</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli] Add a <code>--version</code> flag to the <code>pulumi</code>
command that prints the version, same as <code>pulumi version</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23898">#23898</a></li>
<li>[cli] Align <code>env</code> commands with the CLI naming
guidelines, making <code>list</code>, <code>remove</code> and
<code>move</code> the canonical names with <code>ls</code>,
<code>rm</code>, <code>delete</code> and <code>mv</code> kept as aliases
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23901">#23901</a></li>
</ul>
<h2>3.252.0 (2026-07-13)</h2>
<h3>Features</h3>
<ul>
<li>[auto] Add <code>import</code> to the generated automation APIs for
NodeJS, Python and Go <a
href="https://redirect.github.com/pulumi/pulumi/pull/23876">#23876</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[cli] Exit with a non-zero code when a command group such as
<code>pulumi env</code> is given an unknown subcommand or no subcommand
at all <a
href="https://redirect.github.com/pulumi/pulumi/pull/23814">#23814</a></li>
<li>[cli] Fix a panic when displaying a stack-level policy violation <a
href="https://redirect.github.com/pulumi/pulumi/pull/23692">#23692</a></li>
<li>[cli] Make reading non-secret stack outputs and running <code>pulumi
about</code> no longer require the passphrase for passphrase-encrypted
stacks <a
href="https://redirect.github.com/pulumi/pulumi/pull/23820">#23820</a></li>
<li>[cli] Avoid <code>pulumi logs &lt;command&gt;</code> showing the log
for the currently running command <a
href="https://redirect.github.com/pulumi/pulumi/pull/23887">#23887</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli] Improve the error message when using Pulumi ESC with a DIY
backend to suggest logging into Pulumi Cloud <a
href="https://redirect.github.com/pulumi/pulumi/pull/23811">#23811</a></li>
<li>[cli] Show command name for cli commands when running any command
that lists logs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23889">#23889</a></li>
<li>[cli/display] Render strings containing non-UTF8 bytes as
b&quot;<!-- raw HTML omitted -->&quot; in diffs and JSON output <a
href="https://redirect.github.com/pulumi/pulumi/pull/23870">#23870</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[cli/do] Fix calling delete on PF resources that need read called
first <a
href="https://redirect.github.com/pulumi/pulumi/pull/23837">#23837</a></li>
<li>[cli/env] Submit the change request created by <code>pulumi env
open-request</code> so it is pending approval instead of being left as
an unsubmitted draft <a
href="https://redirect.github.com/pulumi/pulumi/pull/23802">#23802</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli/env] Add a <code>--reason</code> flag to <code>pulumi env
open-request</code> to explain the request to approvers <a
href="https://redirect.github.com/pulumi/pulumi/pull/23802">#23802</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[cli/neo] Fix the initial prompt sometimes rendering above the
welcome banner in <code>pulumi neo</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23831">#23831</a></li>
</ul>
<h3>Improvements</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="94536e530d"><code>94536e5</code></a>
Update first-party Pulumi dependencies (major) (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23913">#23913</a>)</li>
<li><a
href="435c4f36ae"><code>435c4f3</code></a>
Align env commands with the CLI command guidelines (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23901">#23901</a>)</li>
<li><a
href="da11b64f0d"><code>da11b64</code></a>
Add a --version flag to the pulumi command (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23898">#23898</a>)</li>
<li><a
href="03bf3a8cbf"><code>03bf3a8</code></a>
Rename rawStringBytesDisplay to byteStringDisplay (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23909">#23909</a>)</li>
<li><a
href="3344335970"><code>3344335</code></a>
Bump HCL to 0.10.0 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23890">#23890</a>)</li>
<li><a
href="deb8acfde3"><code>deb8acf</code></a>
Support import pending creates parameter (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23833">#23833</a>)</li>
<li><a
href="54158aeba8"><code>54158ae</code></a>
Precompose filenames to NFC on macOS when matching archive ignore
patterns (#...</li>
<li><a
href="93f6e51d9b"><code>93f6e51</code></a>
logging: fix -v=&lt;n&gt; output (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23910">#23910</a>)</li>
<li><a
href="d8e98e7ccd"><code>d8e98e7</code></a>
Update first-party Pulumi dependencies (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23912">#23912</a>)</li>
<li><a
href="f669f791c5"><code>f669f79</code></a>
Add conformance test for using a provider in a component (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23904">#23904</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.251.0...v3.253.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.251.0&new-version=3.253.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 05:54:07 -04:00
dependabot[bot]
2271214bd8
build(deps): bump cloud.google.com/go/kms from 1.31.0 to 1.32.0 (#1447)
Bumps
[cloud.google.com/go/kms](https://github.com/googleapis/google-cloud-go)
from 1.31.0 to 1.32.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/releases">cloud.google.com/go/kms's
releases</a>.</em></p>
<blockquote>
<h2>kms: v1.32.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.31.0...kms/v1.32.0">1.32.0</a>
(2026-07-13)</h2>
<h3>Features</h3>
<ul>
<li><strong>o11y:</strong> Regenerate clients for LRO tracing (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20107">#20107</a>)
(<a
href="779074edd2">779074e</a>)</li>
<li>Update API sources and regenerate (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20109">#20109</a>)
(<a
href="4314d30500">4314d30</a>)</li>
</ul>
<h2>retail: v1.32.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/retail/v1.31.0...retail/v1.32.0">1.32.0</a>
(2026-07-13)</h2>
<h3>Features</h3>
<ul>
<li><strong>o11y:</strong> Regenerate clients for LRO tracing (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/20107">#20107</a>)
(<a
href="779074edd2">779074e</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/blob/main/documentai/CHANGES.md">cloud.google.com/go/kms's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.31.0...documentai/v1.32.0">1.32.0</a>
(2024-08-08)</h2>
<h3>Features</h3>
<ul>
<li><strong>documentai:</strong> A new field
<code>gen_ai_model_info</code> is added to message
<code>.google.cloud.documentai.v1.ProcessorVersion</code> (<a
href="649c075d53">649c075</a>)</li>
<li><strong>documentai:</strong> A new field <code>imageless_mode</code>
is added to message
<code>.google.cloud.documentai.v1.ProcessRequest</code> (<a
href="649c075d53">649c075</a>)</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li><strong>documentai:</strong> Update google.golang.org/api to
v0.191.0 (<a
href="5b32644eb8">5b32644</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="06584bf5df"><code>06584bf</code></a>
chore: librarian release pull request: 20260413T221959Z (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14427">#14427</a>)</li>
<li><a
href="74eab64d1b"><code>74eab64</code></a>
feat: enable open telemetry attrs (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14426">#14426</a>)</li>
<li><a
href="ec20708bfb"><code>ec20708</code></a>
fix(pubsub/v2): fix span linking and add missing attributes (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14326">#14326</a>)</li>
<li><a
href="5b553fe5b5"><code>5b553fe</code></a>
chore(all): add telemetry features to GAPIC libraries (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14380">#14380</a>)</li>
<li><a
href="f4b10eef3a"><code>f4b10ee</code></a>
chore: librarian release pull request: 20260413T041034Z (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14421">#14421</a>)</li>
<li><a
href="dc245af519"><code>dc245af</code></a>
feat(storage): add client feature tracking support (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14320">#14320</a>)</li>
<li><a
href="cfdd7bad68"><code>cfdd7ba</code></a>
chore(.github/CODEOWNERS): Add AION SDK as code owners for the auth
library (...</li>
<li><a
href="e2d578ca0c"><code>e2d578c</code></a>
test(datastore): skip flaky tests due to datastore contention (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14416">#14416</a>)</li>
<li><a
href="56e1a627d5"><code>56e1a62</code></a>
chore: librarian release pull request: 20260409T222456Z (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14413">#14413</a>)</li>
<li><a
href="5ca653ac3e"><code>5ca653a</code></a>
chore: regenerate libraries using protobuf 31, and update generation
check wo...</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.31.0...dlp/v1.32.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cloud.google.com/go/kms&package-manager=go_modules&previous-version=1.31.0&new-version=1.32.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-27 05:53:48 -04:00
Radoslav Dimitrov
29e32c39dc
deploy: update prod to v1.8.0 (#1443)
Promotes production to the
[`v1.8.0`](https://github.com/modelcontextprotocol/registry/releases/tag/v1.8.0)
release.

- `deploy/Pulumi.gcpProd.yaml` → `imageTag: 1.8.0` (one line).
- The release build for `v1.8.0` completed successfully, so the image is
present in ghcr.
- **Merging this triggers `deploy-production.yml`** (it's path-filtered
to `deploy/Pulumi.gcpProd.yaml`); the PR itself doesn't deploy.

### Notable behavior changes in v1.8.0
- **Org-namespace publishing now requires org Owner** (via GitHub login
/ PAT). Member-level publishers lose org publish — intended tightening.
- Stricter validation may reject some previously-accepted package
metadata / names (#1310, #1331, #1411).
- New: cargo (crates.io) package registry support (#1207).

### After merge
- Confirm prod `/v0/version` reports `1.8.0` before treating the rollout
as done.

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-13 05:03:10 -04:00
Thomas Thomsen
d813d2b805
fix(validators): distinguish a missing package from a missing version on PyPI/NPM (#1411)
Fixes #553.

The PyPI and npm validators fetch the version-specific metadata endpoint
(`/pypi/{name}/{version}/json` and the npm equivalent) and report any
non-200 as `<pkg> not found`. That endpoint 404s for two different
reasons though: the package doesn't exist, or it exists and only the
*version* is missing (e.g. a release that hasn't propagated yet). So a
valid package reads as gone:

```diff
- PyPI package 'requests' not found (status: 404)
+ PyPI package 'requests' exists, but version '99.99.99' was not found (status: 404). A newly published release can take a moment to appear on PyPI. Wait and retry, or publish version '99.99.99' before registering it
```

On a version 404 it probes the package-level endpoint
(`/pypi/{name}/json`, `/{name}`) with a `HEAD` to tell the two apart,
and reports 429/5xx as transient rather than "not found". `HEAD` so it
reads a status without pulling the whole packument. The probe carries
its own 3s deadline: it only refines the error message, so a hung probe
must not stretch the validator past the ~10s-per-registry budget the
publish path assumes. Same probe-and-classify shape as the existing
cargo validator.

The fetch is split into `validatePyPIPackage` / `validateNPMPackage`
behind `export_test.go` so the branches are testable with `httptest`,
the same seam cargo uses.

### Testing
- [x] hermetic `httptest` for the status matrix (version-missing,
package-missing, 5xx, 429, inconclusive probe, positive path, scoped
npm); the mocks pin the expected method per endpoint (`GET` fetch,
`HEAD` probe)
- [x] hermetic deadline test: a hung probe is cut off at ~3s and
reported as inconclusive, not "not found"
- [x] existing live package tests still pass, now also hitting the HEAD
probe; on a live 429/5xx they now `t.Skip` as inconclusive instead of
flaking (deliberate: CI runs these against the real registries with no
short-mode gating)
- [x] `gofmt` / `go vet` / `golangci-lint` clean

Out of scope: auto-retry for the propagation race, and SSRF
redirect-pinning parity for the pypi/npm clients (pre-existing, shared
with nuget).
2026-07-12 15:24:34 -04:00
Radoslav Dimitrov
5d736c7c6c
test(api): remove placeholder CORS test superseded by #1436 (#1441)
Follow-up to #1436.

`internal/api/cors_test.go` was a placeholder: both `TestCORSHeaders`
and `TestCORSHeaderValues` construct `api.NewServer(...)`, discard it,
and then assert against a locally-built `http.HandlerFunc` that has no
CORS middleware — so they never exercised the real stack.
`TestCORSHeaderValues` only `t.Log`s; `TestCORSHeaders`'s only real
assertion (preflight status in {200,204}) ran against a bare handler
that always returns 200. The comments admit as much ("this is a bit of a
hack", "verified via integration tests").

That empty coverage is exactly why the missing `PATCH` in the CORS
`AllowedMethods` (fixed in #1436) went unnoticed.

#1436 added `TestCORSPreflightAllowedMethods`, which drives the real
wrapped handler through the new `Server.Handler()` accessor and asserts
every routed method — including PATCH — is allowed. With that in place
the placeholder carries no remaining coverage, so this PR removes it.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 15:18:39 -04:00
Yusufhan Saçak
3a39b665ac
fix(api): allow PATCH in CORS so browsers can call the status endpoints (#1436)
The status endpoints (PATCH /v0/servers/{name}/status and the
per-version one) are served with PATCH, but the CORS middleware's
AllowedMethods lists GET/POST/PUT/DELETE/OPTIONS and never PATCH. So a
cross-origin browser preflight for those endpoints comes back without
the allow headers and the browser blocks the actual request. One-line
fix: add PATCH to the allowed methods.

While here, the existing CORS test turned out to be a placeholder that
never reaches the real wrapped handler (its own comments say so), which
is why this went unnoticed. Added a small Handler() accessor and a
proper preflight test that asserts each routed method including PATCH is
allowed.
2026-07-12 21:53:13 +03:00
Yufeng He
c36b521bf1
fix: reject mangled publisher metadata (#1310)
## Summary
- add a publisher preflight that rejects non-UTF-8 `server.json` bytes
before parsing
- reject unpaired UTF-16 surrogate escapes inside JSON string fields
before publish/validate requests are sent
- keep valid non-ASCII descriptions, including em dashes, round-tripping
through the publish path
- make the publisher test token helper set `USERPROFILE` as well as
`HOME` so Windows tests use the temp home directory

Closes #1306.

## To verify
- `go test ./cmd/publisher/commands -run
"TestPublishCommand_(Success|PreservesNonASCIIDescription|RejectsInvalidUTF8ServerJSON|RejectsUnpairedSurrogateEscape)$"
-count=1`
- `go test ./cmd/publisher/commands -run TestPublishCommand -count=1`
- `go test ./cmd/publisher/commands -run TestValidateCommand -count=1`
- `git diff --check`

Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-07-12 12:57:45 -04:00
Radoslav Dimitrov
2d3262c8aa
fix(ci): re-validate author association via REST in close-invalid-publish-prs (#1440)
## What

Stage 2 of the auto-close automation (`close-invalid-publish-prs.yml`)
re-derived the PR author association with:

```bash
gh pr view "$PR_NUMBER" --json authorAssociation --jq '.authorAssociation'
```

But `gh pr view --json` has **no** `authorAssociation` field. `gh` exits
non-zero with `Unknown JSON field: "authorAssociation"`, and because the
step runs under `set -euo pipefail`, the whole job aborts **before** it
comments, labels, or closes. Flagged PRs therefore stayed open.

## Why it went unnoticed

- **Stage 1 (detect) was fine** — it reads `author_association` from the
event payload (`github.event.pull_request.author_association`), which is
valid.
- Only the **stage-2 re-derivation** was broken.
- Every prior stage-2 run showed "success" because those PRs weren't
flagged: with no artifact, stage 2 exits early at the artifact check and
never reaches the broken line.
- **[PR
#1438](https://github.com/modelcontextprotocol/registry/pull/1438) was
the first genuine publish-attempt PR** since the automation landed
(#1393), so it was the first to exercise the bug — [run
`29178568034`](https://github.com/modelcontextprotocol/registry/actions/runs/29178568034)
failed on exactly this line.

## Fix

Fetch `author_association` from the REST pulls endpoint, which does
expose it (verified: returns `FIRST_TIME_CONTRIBUTOR` for #1438):

```bash
gh api "repos/$GH_REPO/pulls/$PR_NUMBER" --jq '.author_association'
```

Both `$GH_REPO` and `$PR_NUMBER` are already-sanitized env vars, so no
new injection surface.

## Follow-up

Stage 2 is idempotent (guarded by the `invalid` label), so once merged a
maintainer can re-run it — or simply re-open/re-close — to clean up
#1438.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-12 12:11:04 -04:00
Rúben Sousa Dinis
3fe10fc4c6
docs: add polygraph to community projects (#1421)
Adds polygraph (https://polygraph.so) to the **Other** section of
`docs/community-projects.md`, per the *Adding Your Project* instructions
(one-line entry).

polygraph publishes independent behavioral security grades (A–F) for MCP
servers from an open, reproducible harness
(https://github.com/polygraphso/litmus) — it exercises a server's live
tool surface and grades what it does (tool-output injection, undeclared
egress, sensitive-data handling, adversarial-input robustness), then
publishes the results as an adoption-ranked index with per-server
reports. It reads the official registry to discover and version servers,
and adds the independent ratings layer this project's docs note
downstream aggregators can provide.

One-line entry only; no code or schema changes.
2026-07-10 18:55:54 -04:00
Radoslav Dimitrov
9e762b03c7
docs(auth): document fine-grained PAT permission for org publishing (+ pagination-cap test) (#1435)
Follow-up to #1383, surfaced while validating that change end-to-end
against staging.

## Why

#1383 hardened org-namespace publishing to require Owner (`admin`) role,
read via `GET /user/memberships/orgs`. Validating on staging revealed a
gap: the docs only mention the classic `read:org` scope, but a
**fine-grained PAT** (GitHub's recommended token type) needs a
*different* permission to expose org membership. Without it, GitHub
returns no org memberships for the token, so the exchange silently
grants only the personal namespace — with no hint why org publishing
"doesn't work."

This is **not** a code bug (the behavior is fail-closed and correct
given GitHub's response); it's a documentation/UX gap.

## What

- **Docs** (`authentication.mdx`, `github-actions.mdx`): spell out both
token types —
  - Classic PAT → `read:org` scope
- Fine-grained PAT → **Organization permissions → Members → Read-only**
(the equivalent), noting a fine-grained PAT is bound to a single
resource owner.
  - Also clarified `read:user` is not required.
- **Test** (`github_at_test.go`): cover the `maxOrgMembershipPages`
pagination cap — when every page is full, the exchange **fails closed**
(no token) rather than returning a possibly-truncated org grant. This
path was previously untested.
- **Comment** (`github_at.go`): qualify the `X-GitHub-SSO` 403 check as
best-effort — we have not confirmed the memberships *list* endpoint
emits that header on SSO enforcement (it may just omit the org). The
check is safe either way, but the comment no longer overstates it as a
guarantee.

## Verification (live, against staging)

Confirmed by exchanging real tokens for `rdimitrov` on
`staging.registry.modelcontextprotocol.io`:

- **Classic `read:org` PAT** across 16 real org memberships → the JWT
granted exactly the 8 **admin** orgs + personal namespace, and **zero**
of the 8 **member** orgs (incl. `stacklok`, `modelcontextprotocol`) —
the core #1383 behavior, working.
- **Fine-grained PAT**: without Members:read → personal namespace only
(fail-closed); after adding Members:read → the org (Owner) namespace is
granted. This is what the new docs describe.

No runtime behavior change here beyond the added test; the docs and
comment are the substance.

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-10 18:48:56 -04:00
dependabot[bot]
5da9b4c8bf
build(deps): bump golang.org/x/crypto from 0.51.0 to 0.52.0 (#1433)
Bumps [golang.org/x/crypto](https://github.com/golang/crypto) from
0.51.0 to 0.52.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a1c0d99298"><code>a1c0d99</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="3c7c86938f"><code>3c7c869</code></a>
ssh: fix deadlock on unexpected channel responses</li>
<li><a
href="533fb3f7e4"><code>533fb3f</code></a>
ssh: fix source-address critical option bypass</li>
<li><a
href="abbc44d451"><code>abbc44d</code></a>
ssh: fix incorrect operator order</li>
<li><a
href="e052873987"><code>e052873</code></a>
ssh: fix infinite loop on large channel writes due to integer
overflow</li>
<li><a
href="b61cf853a8"><code>b61cf85</code></a>
ssh: enforce user presence verification for security keys</li>
<li><a
href="9c2cd33e8d"><code>9c2cd33</code></a>
ssh: enforce strict limits on DSA key parameters</li>
<li><a
href="890731877d"><code>8907318</code></a>
ssh: reject RSA keys with excessively large moduli</li>
<li><a
href="ffd87b4878"><code>ffd87b4</code></a>
ssh: fix panic when authority callbacks are nil</li>
<li><a
href="4e7a7384ec"><code>4e7a738</code></a>
ssh: fix deadlock on unexpected global responses</li>
<li>Additional commits viewable in <a
href="https://github.com/golang/crypto/compare/v0.51.0...v0.52.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-10 17:06:10 -04:00
Tadas Antanavicius
2bc37b1999
fix(auth): grant org namespace only to org Owners, not all members (#1383)
## The bug (scoped to `github-at`)

When you exchange a GitHub OAuth/PAT token for a registry JWT, the
handler granted `io.github.<org>/*` publish permission for **every**
organization you belong to. It derived that list from [`GET
/users/{username}/orgs`](https://docs.github.com/en/rest/orgs/orgs#list-organizations-for-a-user),
which:

1. returns only **public** org memberships, and
2. carries **no role** — an org Owner and a brand-new member look
identical.

So membership was silently treated as publishing authority. Anyone who
is (or whose public membership lists them as) a member of `acme` could
publish — and, because publish is a pure namespace-glob with no
per-server ownership check, **overwrite** — any server under
`io.github.acme/*`.

## The fix

Switch to [`GET
/user/memberships/orgs`](https://docs.github.com/en/rest/orgs/members#list-organization-memberships-for-the-authenticated-user),
which returns the **authenticated caller's role** per org (and includes
private memberships), and grant the org namespace only when the role is
`admin` (org Owner).

- **Personal namespaces are unchanged** — you always get
`io.github.<your-username>/*`.
- **Org namespaces now require Owner.** GitHub has no org-level
"maintainer" role; org membership is either `admin` (Owner) or `member`.
We grant only on `admin`.
- **`read:org` is the only scope needed.** A minimal token without it
still authenticates and still publishes to your personal namespace; a
genuine missing-scope `403` from the memberships call is treated as "no
admin orgs" rather than a hard failure, so we don't push anyone to
over-scope a token. A `403`/`429` that is actually a rate limit
(`X-RateLimit-Remaining: 0` / `Retry-After`) fails closed instead, so a
throttle can't silently strip a real Owner's org grant. Critically, the
token needs **no repository scopes** — the registry never reads or
writes code, so an org Owner can hand CI a near-powerless `read:org`
token.

The authorization decision stays stateless and delegated to GitHub — no
new storage, no new endpoints, no schema changes — consistent with
[design principle #2](docs/design/design-principles.md) (minimal
operational burden).

### Containing the CI token

The registry-side change makes the org Owner the only one who can mint
org-namespace authority. But if that Owner drops the resulting PAT into
a plain repo secret, **every repository writer** can reach it (via
branch/tag pushes that run repo-controlled build/test code in the
privileged job) — quietly re-widening publish access beyond Owners.
External fork contributors still cannot reach it by default (no secrets
on fork PRs, no branch push), barring misconfigurations like
`pull_request_target`-with-checkout or self-hosted runners on public
repos.

`docs/modelcontextprotocol-io/github-actions.mdx` documents how to
contain that blast radius:

- store the token as a **GitHub Actions Environment secret** (the PAT
example uses `environment:`),
- restrict that environment to the default branch / release tags and
require PR reviews on it, so only reviewed, maintainer-approved code can
reach the token,
- optionally add a **required environment reviewer** for explicit
per-publish approval,
- and avoid the two footguns (`pull_request_target` checkout,
self-hosted runners on public repos).

This shrinks *who holds* the org credential; it does not change the fact
that an authorized publish can still overwrite a different server in the
same namespace until per-server publisher ownership exists (the
follow-up noted below).

## Why this shape, given the alternatives

[Pree's
writeup](https://github.com/modelcontextprotocol/registry/issues/982#issuecomment-3982959559)
([Notion analysis
doc](https://www.notion.so/MCP-Registry-Authorization-Model-Analysis-Issue-982-31736f79f74980bc90c6e53de1c564c5))
is the clearest framing of the problem and the option space, laying out
three broad solutions:

- **Approach A — GitHub App as the authority layer.** Strong model, but
its natural unit of authority is a *repo*, so it needs a repo→server
mapping to authorize a namespace. The safe, flexible version of that
mapping is registry-managed state — which collapses into Approach B.
It's also GitHub-only.
- **Approach B — a registry-managed grants table** (OIDC bootstrap, or
device-flow admin check). The most capable and provider-agnostic option,
and probably where v1 wants to go. But it introduces exactly the
"registry manages an authorization database" layer we wanted to avoid
taking on right now: revocation, sync, audit, migration.
- **Approach C — scoped bearer tokens (npm-style).** Good ergonomics,
but again implies issuance/storage the registry would own.

The two-property test (does the registry control the decision? is it
granted through an act requiring real authority?) is the right lens.
This change satisfies it **without** new state: the registry makes the
decision (it filters on role), and the authority is real (live GitHub
Owner role, re-checked on every short-lived token exchange).

**What this deliberately gives up**, so reviewers can weigh it honestly:

- **Owners are always in the loop.** Only org Owners can publish org
servers; there's no delegated "this team can publish this server" — that
needs Approach B's state. Reduced flexibility in exchange for zero new
infrastructure.
- **Blast radius within an org is unchanged.** An Owner (or Owner-scoped
CI token) can still overwrite *any* server under the org namespace,
because there's still no per-server publisher ownership. That
hijack-an-existing-server problem is real but **orthogonal** to this fix
and belongs in its own change (record publisher identity per server;
enforce it on update) — a follow-up to take alongside the OIDC hardening
below.
- **OIDC is untouched and remains coarser.** The `github-oidc` path
still grants the whole `io.github.<owner>/*` namespace to any workflow
with `id-token: write`, i.e. effectively anyone with write access to any
repo in the org, and it excludes non-Actions CI (Jenkins/GitLab can't
mint GitHub Actions OIDC). The admin-PAT path here is the
higher-assurance option for org publishing; OIDC stays as a
lower-assurance Actions convenience to be tightened separately.

## Revocation

The registry JWT is **5-minute, no-refresh** (per #264/#273), so loss of
Owner status propagates within minutes on the next token exchange, with
no revocation list to maintain.

## Tests

`go test ./internal/api/handlers/v0/auth/...` passes, including:

- member-role org is **not** granted; only admin orgs are
- a missing-scope `403` (no `read:org`) still yields the personal
namespace and no error
- an admin org on a **later page** of memberships is still granted
(pagination correctness)
- a `5xx` from the memberships call **fails closed** (no token issued)
rather than degrading to personal-only
- a rate-limit `403` (`X-RateLimit-Remaining: 0` / `Retry-After`)
**fails closed** — not mistaken for a missing-scope `403`
- existing org/name-validation tests updated to the new endpoint + role
shape

`gofmt`/`go vet`/`golangci-lint` (CI-pinned v2.11.4) clean; CI green on
all checks.

## Live verification

Confirmed end-to-end against real `api.github.com` (not just mocks) by
exercising this branch's `ExchangeToken` and decoding the `permissions`
claim of the returned JWT.

A dedicated org, **Tadasant Test Org** (login `Tadasant-Test-Org`), is
Owned by one account and has a second account joined as a plain
**member**. Both memberships are `active`, verified via the same
endpoint the fix uses (`GET /user/memberships/orgs/{org}`):

| Token (role) | `io.github.Tadasant-Test-Org/*` granted? | Other
patterns granted |
|---|---|---|
| Owner (`admin`) | ✅ yes | personal `io.github.<owner>/*` |
| member | ❌ no | personal `io.github.<member>/*` + the orgs that
account actually Owns |

The member case is the meaningful one: that membership is **active and
returned** by `GET /user/memberships/orgs`, and is excluded purely
because its role is `member`, not `admin`. Under the previous `GET
/users/{username}/orgs` behavior (membership = authority, no role), the
same active membership **would have granted** the org namespace. The
role filter is also selective rather than blanket-deny — the member
account still receives the namespaces of the orgs where it genuinely
holds Owner.

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-07-10 17:05:47 -04:00
dependabot[bot]
224e23dc2c
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.248.0 to 3.251.0 in /deploy (#1431)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.248.0 to 3.251.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.251.0</h2>
<h2>3.251.0 (2026-07-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>[cli] Show a <code>retain</code> marker for retain-on-delete
resources in <code>--diff</code> output <a
href="https://redirect.github.com/pulumi/pulumi/pull/23754">#23754</a></li>
<li>[cli] Don't miscopy out archives <a
href="https://redirect.github.com/pulumi/pulumi/pull/23798">#23798</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[cli] Add <code>pulumi neo --debug-update</code> and <code>pulumi
neo --debug-preview</code> flags to investigate a failed update or
preview, suggested in the failure output <a
href="https://redirect.github.com/pulumi/pulumi/pull/23499">#23499</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli/convert] Add an <code>ecosystem</code> field to converter
mapping requests so a converter can request mappings for the ecosystem
it consumes rather than its own name <a
href="https://redirect.github.com/pulumi/pulumi/pull/23804">#23804</a></li>
<li>[cli/deployment] <code>pulumi deployment settings</code> no longer
writes the local <code>Pulumi.&lt;stack&gt;.deploy.yaml</code> file: the
experimental <code>init</code>, <code>pull</code>,
<code>configure</code>, and <code>env</code> subcommands have been
removed, and the CLI no longer calls the deployment-settings encrypt
endpoint. <code>get</code>/<code>edit</code>/<code>destroy</code>
continue to manage settings directly in Pulumi Cloud <a
href="https://redirect.github.com/pulumi/pulumi/pull/23480">#23480</a></li>
<li>[cli/deployment] The deployment settings file
(<code>Pulumi.&lt;stack&gt;.deploy.yaml</code>) has been removed
entirely. The experimental <code>pulumi deployment settings push</code>
(<code>update</code>/<code>up</code>) command, the
<code>--config-file</code> flag, and the SDK helpers that read the file
have been removed. Manage deployment settings directly in Pulumi Cloud
with <code>pulumi deployment settings get</code>, <code>edit</code>, and
<code>destroy</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23480">#23480</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[cli/display] Prevent plugin debug logs from appearing as raw JSON
in the CLI's output when logging with <code>--logtostderr</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23633">#23633</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli/env] Report the new revision number when an environment
definition is updated (e.g. <code>pulumi env edit</code>, <code>pulumi
env provider</code>, <code>pulumi env version rollback</code>) <a
href="https://redirect.github.com/pulumi/pulumi/pull/23799">#23799</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[cli/env] Fold the Pulumi ESC engine and CLI into the pulumi/pulumi
monorepo, removing the sdk↔esc Go module cycle. Internal refactor with
no user-facing behavior change; <code>pulumi env</code>/<code>pulumi
esc</code> are unaffected. <a
href="https://redirect.github.com/pulumi/pulumi/pull/23746">#23746</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli/import] Support importing resources under parameterized
providers from a converter or import file <a
href="https://redirect.github.com/pulumi/pulumi/pull/23763">#23763</a></li>
<li>[cli/import] Support importing resources under
extension-parameterized providers <a
href="https://redirect.github.com/pulumi/pulumi/pull/23779">#23779</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[engine] Add <code>TargetSnippets</code> to deployment options to
target snippets by UUID. <a
href="https://redirect.github.com/pulumi/pulumi/pull/23745">#23745</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[engine] Add OpenTelemetry spans to the StackReference read path so
performance traces can pinpoint slow snapshot fetches, deserialization,
or secret decryption <a
href="https://redirect.github.com/pulumi/pulumi/pull/23787">#23787</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[programgen/pcl] Invoke functions declared with multi-argument
inputs using positional arguments in PCL <a
href="https://redirect.github.com/pulumi/pulumi/pull/23571">#23571</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdk/nodejs] Don't include the version in module paths when
serializing functions when using pnpm <a
href="https://redirect.github.com/pulumi/pulumi/pull/23767">#23767</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.251.0 (2026-07-08)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>[cli] Show a <code>retain</code> marker for retain-on-delete
resources in <code>--diff</code> output <a
href="https://redirect.github.com/pulumi/pulumi/pull/23754">#23754</a></li>
<li>[cli] Don't miscopy out archives <a
href="https://redirect.github.com/pulumi/pulumi/pull/23798">#23798</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[cli] Add <code>pulumi neo --debug-update</code> and <code>pulumi
neo --debug-preview</code> flags to investigate a failed update or
preview, suggested in the failure output <a
href="https://redirect.github.com/pulumi/pulumi/pull/23499">#23499</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli/convert] Add an <code>ecosystem</code> field to converter
mapping requests so a converter can request mappings for the ecosystem
it consumes rather than its own name <a
href="https://redirect.github.com/pulumi/pulumi/pull/23804">#23804</a></li>
<li>[cli/deployment] <code>pulumi deployment settings</code> no longer
writes the local <code>Pulumi.&lt;stack&gt;.deploy.yaml</code> file: the
experimental <code>init</code>, <code>pull</code>,
<code>configure</code>, and <code>env</code> subcommands have been
removed, and the CLI no longer calls the deployment-settings encrypt
endpoint. <code>get</code>/<code>edit</code>/<code>destroy</code>
continue to manage settings directly in Pulumi Cloud <a
href="https://redirect.github.com/pulumi/pulumi/pull/23480">#23480</a></li>
<li>[cli/deployment] The deployment settings file
(<code>Pulumi.&lt;stack&gt;.deploy.yaml</code>) has been removed
entirely. The experimental <code>pulumi deployment settings push</code>
(<code>update</code>/<code>up</code>) command, the
<code>--config-file</code> flag, and the SDK helpers that read the file
have been removed. Manage deployment settings directly in Pulumi Cloud
with <code>pulumi deployment settings get</code>, <code>edit</code>, and
<code>destroy</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23480">#23480</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[cli/display] Prevent plugin debug logs from appearing as raw JSON
in the CLI's output when logging with <code>--logtostderr</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23633">#23633</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli/env] Report the new revision number when an environment
definition is updated (e.g. <code>pulumi env edit</code>, <code>pulumi
env provider</code>, <code>pulumi env version rollback</code>) <a
href="https://redirect.github.com/pulumi/pulumi/pull/23799">#23799</a></li>
</ul>
<h3>Miscellaneous</h3>
<ul>
<li>[cli/env] Fold the Pulumi ESC engine and CLI into the pulumi/pulumi
monorepo, removing the sdk↔esc Go module cycle. Internal refactor with
no user-facing behavior change; <code>pulumi env</code>/<code>pulumi
esc</code> are unaffected. <a
href="https://redirect.github.com/pulumi/pulumi/pull/23746">#23746</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli/import] Support importing resources under parameterized
providers from a converter or import file <a
href="https://redirect.github.com/pulumi/pulumi/pull/23763">#23763</a></li>
<li>[cli/import] Support importing resources under
extension-parameterized providers <a
href="https://redirect.github.com/pulumi/pulumi/pull/23779">#23779</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[engine] Add <code>TargetSnippets</code> to deployment options to
target snippets by UUID. <a
href="https://redirect.github.com/pulumi/pulumi/pull/23745">#23745</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[engine] Add OpenTelemetry spans to the StackReference read path so
performance traces can pinpoint slow snapshot fetches, deserialization,
or secret decryption <a
href="https://redirect.github.com/pulumi/pulumi/pull/23787">#23787</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[programgen/pcl] Invoke functions declared with multi-argument
inputs using positional arguments in PCL <a
href="https://redirect.github.com/pulumi/pulumi/pull/23571">#23571</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdk/nodejs] Don't include the version in module paths when
serializing functions when using pnpm <a
href="https://redirect.github.com/pulumi/pulumi/pull/23767">#23767</a></li>
<li>[sdk/nodejs] Support pnpm 11 <a
href="https://redirect.github.com/pulumi/pulumi/pull/23815">#23815</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="aff0ffa2cc"><code>aff0ffa</code></a>
do: fix <code>--dry-run</code> for delete (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23809">#23809</a>)</li>
<li><a
href="c9a87908cd"><code>c9a8790</code></a>
Add pulumi neo debug command (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23499">#23499</a>)</li>
<li><a
href="4a79549ecd"><code>4a79549</code></a>
Invoke multi-argument-input functions positionally in PCL (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23571">#23571</a>)</li>
<li><a
href="3212152920"><code>3212152</code></a>
do: make default input YAML (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23808">#23808</a>)</li>
<li><a
href="93ab9680c5"><code>93ab968</code></a>
Add an ecosystem to converter mapping requests (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23804">#23804</a>)</li>
<li><a
href="82c4164562"><code>82c4164</code></a>
do: align prompting with up/destroy (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23805">#23805</a>)</li>
<li><a
href="3ec25324d4"><code>3ec2532</code></a>
Update actions/download-artifact action to v8 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23793">#23793</a>)</li>
<li><a
href="5e1b1d0903"><code>5e1b1d0</code></a>
Add more tracing spans around stack references (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23787">#23787</a>)</li>
<li><a
href="45b7ec7e17"><code>45b7ec7</code></a>
do: improve usage section (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23782">#23782</a>)</li>
<li><a
href="54b4e80e49"><code>54b4e80</code></a>
Don't include the version in module paths when serializing functions
when usi...</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.248.0...v3.251.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.248.0&new-version=3.251.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:53:31 -04:00
dependabot[bot]
7f647ef44f
build(deps): bump the actions group across 1 directory with 4 updates (#1430)
Bumps the actions group with 4 updates in the / directory:
[golangci/golangci-lint-action](https://github.com/golangci/golangci-lint-action),
[ko-build/setup-ko](https://github.com/ko-build/setup-ko),
[docker/login-action](https://github.com/docker/login-action) and
[goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action).

Updates `golangci/golangci-lint-action` from 9.2.1 to 9.3.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/golangci/golangci-lint-action/releases">golangci/golangci-lint-action's
releases</a>.</em></p>
<blockquote>
<h2>v9.3.0</h2>
<!-- raw HTML omitted -->
<h2>What's Changed</h2>
<h3>Changes</h3>
<ul>
<li>feat: add no-run-logs-group as experimental option by <a
href="https://github.com/ldez"><code>@​ldez</code></a> in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1403">golangci/golangci-lint-action#1403</a></li>
</ul>
<h3>Dependencies</h3>
<ul>
<li>build(deps): bump github/codeql-action from 4.35.4 to 4.35.5 in the
github-actions group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1395">golangci/golangci-lint-action#1395</a></li>
<li>build(deps): bump tmp from 0.2.5 to 0.2.6 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1397">golangci/golangci-lint-action#1397</a></li>
<li>build(deps): bump github/codeql-action from 4.35.5 to 4.36.0 in the
github-actions group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1398">golangci/golangci-lint-action#1398</a></li>
<li>build(deps): bump tmp from 0.2.6 to 0.2.7 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1399">golangci/golangci-lint-action#1399</a></li>
<li>build(deps-dev): bump js-yaml from 4.1.1 to 4.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/golangci/golangci-lint-action/pull/1400">golangci/golangci-lint-action#1400</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/golangci/golangci-lint-action/compare/v9.2.1...v9.3.0">https://github.com/golangci/golangci-lint-action/compare/v9.2.1...v9.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="ba0d7d2ec0"><code>ba0d7d2</code></a>
chore: prepare release v9.3.0</li>
<li><a
href="efd0857dc4"><code>efd0857</code></a>
feat: add no-run-logs-group as experimental option (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1403">#1403</a>)</li>
<li><a
href="ed485de1ff"><code>ed485de</code></a>
build(deps): bump undici from 6.24.0 to 6.27.0</li>
<li><a
href="8872e8d04c"><code>8872e8d</code></a>
build(deps-dev): bump js-yaml from 4.1.1 to 4.2.0 (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1400">#1400</a>)</li>
<li><a
href="b163415b47"><code>b163415</code></a>
build(deps): bump tmp from 0.2.6 to 0.2.7 (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1399">#1399</a>)</li>
<li><a
href="e52a9f8996"><code>e52a9f8</code></a>
build(deps): bump github/codeql-action from 4.35.5 to 4.36.0 in the
github-ac...</li>
<li><a
href="8182aa3494"><code>8182aa3</code></a>
build(deps): bump tmp from 0.2.5 to 0.2.6 (<a
href="https://redirect.github.com/golangci/golangci-lint-action/issues/1397">#1397</a>)</li>
<li><a
href="5403a413de"><code>5403a41</code></a>
build(deps): bump github/codeql-action from 4.35.4 to 4.35.5 in the
github-ac...</li>
<li>See full diff in <a
href="82606bf257...ba0d7d2ec0">compare
view</a></li>
</ul>
</details>
<br />

Updates `ko-build/setup-ko` from 0.9 to 0.10
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/ko-build/setup-ko/releases">ko-build/setup-ko's
releases</a>.</em></p>
<blockquote>
<h2>v0.10</h2>
<h2>What's Changed</h2>
<ul>
<li>Harden composite action against shell expression and env-file
injection by <a
href="https://github.com/imjasonh"><code>@​imjasonh</code></a> with <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/ko-build/setup-ko/pull/66">ko-build/setup-ko#66</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/imjasonh"><code>@​imjasonh</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a>
made their first contribution in <a
href="https://redirect.github.com/ko-build/setup-ko/pull/66">ko-build/setup-ko#66</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/ko-build/setup-ko/compare/v0.9...v0.10">https://github.com/ko-build/setup-ko/compare/v0.9...v0.10</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="61b4d1d396"><code>61b4d1d</code></a>
Merge pull request <a
href="https://redirect.github.com/ko-build/setup-ko/issues/66">#66</a>
from ko-build/copilot/address-findings-report</li>
<li><a
href="92951cd43f"><code>92951cd</code></a>
Harden composite action shell input handling</li>
<li><a
href="369dc1ff72"><code>369dc1f</code></a>
Merge pull request <a
href="https://redirect.github.com/ko-build/setup-ko/issues/64">#64</a>
from ko-build/dependabot/github_actions/actions/checko...</li>
<li><a
href="aa4f2f232d"><code>aa4f2f2</code></a>
Bump actions/checkout from 6.0.3 to 7.0.0</li>
<li><a
href="2e5f3a96a3"><code>2e5f3a9</code></a>
Merge pull request <a
href="https://redirect.github.com/ko-build/setup-ko/issues/62">#62</a>
from ko-build/dependabot/github_actions/all-22d6a8b472</li>
<li><a
href="fefb89f09a"><code>fefb89f</code></a>
Update use-action.yaml</li>
<li><a
href="074c42371e"><code>074c423</code></a>
Update Go version from 1.25 to 1.26 in CI workflow</li>
<li><a
href="d43b83971c"><code>d43b839</code></a>
Bump the all group across 1 directory with 2 updates</li>
<li><a
href="8719e8eccf"><code>8719e8e</code></a>
Merge pull request <a
href="https://redirect.github.com/ko-build/setup-ko/issues/60">#60</a>
from ko-build/dependabot/github_actions/all-2c6e677ddc</li>
<li><a
href="9beb6ab819"><code>9beb6ab</code></a>
Bump actions/setup-go from 6.2.0 to 6.3.0 in the all group</li>
<li>Additional commits viewable in <a
href="https://github.com/ko-build/setup-ko/compare/v0.9...v0.10">compare
view</a></li>
</ul>
</details>
<br />

Updates `docker/login-action` from 4.2.0 to 4.4.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/docker/login-action/releases">docker/login-action's
releases</a>.</em></p>
<blockquote>
<h2>v4.4.0</h2>
<ul>
<li>Skip empty <code>registry-auth</code> secret mask by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/1035">docker/login-action#1035</a></li>
<li>Bump <code>@​aws-sdk/client-ecr</code> and
<code>@​aws-sdk/client-ecr-public</code> to 3.1077.0 <a
href="https://redirect.github.com/docker/login-action/pull/1034">docker/login-action#1034</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v4.3.0...v4.4.0">https://github.com/docker/login-action/compare/v4.3.0...v4.4.0</a></p>
<h2>v4.3.0</h2>
<ul>
<li>Preserve names in esbuild bundle by <a
href="https://github.com/crazy-max"><code>@​crazy-max</code></a> in <a
href="https://redirect.github.com/docker/login-action/pull/1022">docker/login-action#1022</a></li>
<li>Bump <code>@​aws-sdk/client-ecr</code> and
<code>@​aws-sdk/client-ecr-public</code> to 3.1076.0 <a
href="https://redirect.github.com/docker/login-action/pull/999">docker/login-action#999</a>
<a
href="https://redirect.github.com/docker/login-action/pull/1030">docker/login-action#1030</a></li>
<li>Bump <code>@​docker/actions-toolkit</code> from 0.90.0 to 0.92.0 in
<a
href="https://redirect.github.com/docker/login-action/pull/1004">docker/login-action#1004</a>
<a
href="https://redirect.github.com/docker/login-action/pull/1027">docker/login-action#1027</a></li>
<li>Bump <code>@​sigstore/core</code> from 3.1.0 to 3.2.1 in <a
href="https://redirect.github.com/docker/login-action/pull/1023">docker/login-action#1023</a></li>
<li>Bump <code>@​sigstore/verify</code> from 3.1.0 to 3.1.1 in <a
href="https://redirect.github.com/docker/login-action/pull/1029">docker/login-action#1029</a></li>
<li>Bump http-proxy-agent and https-proxy-agent to 9.1.0 in <a
href="https://redirect.github.com/docker/login-action/pull/1017">docker/login-action#1017</a></li>
<li>Bump js-yaml from 4.1.1 to 5.2.0 in <a
href="https://redirect.github.com/docker/login-action/pull/1028">docker/login-action#1028</a></li>
<li>Bump sigstore from 4.1.0 to 4.1.1 in <a
href="https://redirect.github.com/docker/login-action/pull/1031">docker/login-action#1031</a></li>
<li>Bump tmp from 0.2.5 to 0.2.7 in <a
href="https://redirect.github.com/docker/login-action/pull/1002">docker/login-action#1002</a></li>
<li>Bump undici from 6.24.1 to 6.27.0 in <a
href="https://redirect.github.com/docker/login-action/pull/1020">docker/login-action#1020</a></li>
<li>Bump vite from 7.3.3 to 7.3.6 in <a
href="https://redirect.github.com/docker/login-action/pull/1019">docker/login-action#1019</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/docker/login-action/compare/v4.2.0...v4.3.0">https://github.com/docker/login-action/compare/v4.2.0...v4.3.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="af1e73f918"><code>af1e73f</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1034">#1034</a>
from docker/dependabot/npm_and_yarn/aws-sdk-dependen...</li>
<li><a
href="da722bde43"><code>da722bd</code></a>
[dependabot skip] chore: update generated content</li>
<li><a
href="2916ad60bd"><code>2916ad6</code></a>
build(deps): bump the aws-sdk-dependencies group across 1 directory with
2 up...</li>
<li><a
href="ca0a662f78"><code>ca0a662</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1035">#1035</a>
from crazy-max/fix-registry-auth-empty-mask</li>
<li><a
href="c455755a57"><code>c455755</code></a>
chore: update generated content</li>
<li><a
href="48351901f8"><code>4835190</code></a>
skip empty registry-auth secret mask</li>
<li><a
href="992421c6e6"><code>992421c</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1033">#1033</a>
from docker/dependabot/github_actions/docker/bake-ac...</li>
<li><a
href="b249b43765"><code>b249b43</code></a>
Merge pull request <a
href="https://redirect.github.com/docker/login-action/issues/1032">#1032</a>
from docker/dependabot/github_actions/docker/bake-ac...</li>
<li><a
href="1b67977736"><code>1b67977</code></a>
build(deps): bump docker/bake-action from 7.2.0 to 7.3.0</li>
<li><a
href="9d49d6a323"><code>9d49d6a</code></a>
build(deps): bump docker/bake-action/subaction/matrix</li>
<li>Additional commits viewable in <a
href="650006c6eb...af1e73f918">compare
view</a></li>
</ul>
</details>
<br />

Updates `goreleaser/goreleaser-action` from 7.2.2 to 7.2.3
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/goreleaser/goreleaser-action/releases">goreleaser/goreleaser-action's
releases</a>.</em></p>
<blockquote>
<h2>v7.2.3</h2>
<h2>What's Changed</h2>
<ul>
<li>ci(deps): bump the actions group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/563">goreleaser/goreleaser-action#563</a></li>
<li>chore(deps): bump undici from 6.24.1 to 6.27.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/565">goreleaser/goreleaser-action#565</a></li>
<li>build: regenerate dist after undici 6.27.0 bump by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/567">goreleaser/goreleaser-action#567</a></li>
<li>ci: auto-rebuild dist on dependabot PRs by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/568">goreleaser/goreleaser-action#568</a></li>
<li>ci: use a GitHub App token to rebuild dist on dependabot PRs by <a
href="https://github.com/caarlos0"><code>@​caarlos0</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/569">goreleaser/goreleaser-action#569</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/goreleaser/goreleaser-action/compare/v7.2.2...v7.2.3">https://github.com/goreleaser/goreleaser-action/compare/v7.2.2...v7.2.3</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f06c13b6b1"><code>f06c13b</code></a>
chore: update dist</li>
<li><a
href="d3934597ca"><code>d393459</code></a>
ci: fix job</li>
<li><a
href="ee731b1700"><code>ee731b1</code></a>
chore: workflow dispatch</li>
<li><a
href="55de448558"><code>55de448</code></a>
chore(deps): bump js-yaml from 4.1.1 to 4.2.0</li>
<li><a
href="a4f614e65e"><code>a4f614e</code></a>
ci: use a GitHub App token to rebuild dist on dependabot PRs (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/569">#569</a>)</li>
<li><a
href="d2d17a6c5d"><code>d2d17a6</code></a>
ci: auto-rebuild dist on dependabot PRs (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/568">#568</a>)</li>
<li><a
href="d13def3a6e"><code>d13def3</code></a>
build: regenerate dist after undici 6.27.0 bump (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/567">#567</a>)</li>
<li><a
href="21549b6bea"><code>21549b6</code></a>
chore(deps): bump undici from 6.24.1 to 6.27.0 (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/565">#565</a>)</li>
<li><a
href="47c416d5e8"><code>47c416d</code></a>
ci(deps): bump the actions group with 3 updates (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/563">#563</a>)</li>
<li>See full diff in <a
href="5daf1e915a...f06c13b6b1">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:53:11 -04:00
dependabot[bot]
5cc44d091c
build(deps): bump github.com/coreos/go-oidc/v3 from 3.19.0 to 3.20.0 (#1429)
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc)
from 3.19.0 to 3.20.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coreos/go-oidc/releases">github.com/coreos/go-oidc/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.20.0</h2>
<h2>What's Changed</h2>
<ul>
<li>oidc: modernize with new Go APIs by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/487">coreos/go-oidc#487</a></li>
<li>oidc: improve documentation for APIs by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/488">coreos/go-oidc#488</a></li>
<li>SECURITY.md: add a security policy and point to project-level
reporting by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/489">coreos/go-oidc#489</a></li>
<li>oidc: ignore JWKs with unknown signing algorithms rather than
failing by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/491">coreos/go-oidc#491</a></li>
<li>readme: update README and docs by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/492">coreos/go-oidc#492</a></li>
<li>oidc: add API for determining when issuer URLs mismatch by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/493">coreos/go-oidc#493</a></li>
<li>oidc: add constants for &quot;email&quot; and &quot;profile&quot;
scopes by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/494">coreos/go-oidc#494</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coreos/go-oidc/compare/v3.19.0...v3.20.0">https://github.com/coreos/go-oidc/compare/v3.19.0...v3.20.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="75dfa5c062"><code>75dfa5c</code></a>
oidc: add constants for &quot;email&quot; and &quot;profile&quot;
scopes</li>
<li><a
href="a89f0468cc"><code>a89f046</code></a>
oidc: add API for determining when issuer URLs mismatch</li>
<li><a
href="6a69b6d27e"><code>6a69b6d</code></a>
readme: update README and docs</li>
<li><a
href="f9049c9907"><code>f9049c9</code></a>
oidc: ignore JWKs with unknown signing algorithms rather than
failing</li>
<li><a
href="2f178e0a9d"><code>2f178e0</code></a>
SECURITY.md: add a security policy and point to project-level
reporting</li>
<li><a
href="b3bc7daa57"><code>b3bc7da</code></a>
oidc: improve documentation for APIs</li>
<li><a
href="0db90530b3"><code>0db9053</code></a>
oidc: modernize with new Go APIs</li>
<li>See full diff in <a
href="https://github.com/coreos/go-oidc/compare/v3.19.0...v3.20.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coreos/go-oidc/v3&package-manager=go_modules&previous-version=3.19.0&new-version=3.20.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:52:55 -04:00
dependabot[bot]
f3162dbc1e
build(deps): bump golang.org/x/mod from 0.37.0 to 0.38.0 (#1428)
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.37.0 to
0.38.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="792ac169a9"><code>792ac16</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="fe2ec04f7c"><code>fe2ec04</code></a>
all: fix some comments to improve readability</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.37.0...v0.38.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/mod&package-manager=go_modules&previous-version=0.37.0&new-version=0.38.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-09 15:52:31 -04:00
Radoslav Dimitrov
65aab79997
ci: auto-close PRs that try to publish servers via the repo (#1393)
## Summary

We keep getting PRs (e.g. #1385, #1368, #1367, #1363, #1354) that try to
"publish" an MCP server by adding files under `servers/` or editing
`data/seed.json`. That isn't how publishing works — servers are
published with the `mcp-publisher` CLI against the live registry API.
This adds automation that detects those PRs, comments with a pointer to
the publishing quickstart, labels them `invalid`, and closes them.

## How it works (two stages, no `pull_request_target`)

`pull_request_target` is intentionally avoided. Instead:

- **Stage 1 — `detect-invalid-publish-prs.yml`** runs on `pull_request`
(opened/reopened) with a **read-only** token. It only reads the changed
file paths and, if the PR *exclusively* touches `servers/**` and/or
`data/seed.json` (and the author isn't a MEMBER/OWNER/COLLABORATOR),
records just the PR number as a short-lived artifact. It can't comment
or close anything.
- **Stage 2 — `close-invalid-publish-prs.yml`** runs via `workflow_run`
in the trusted base-repo context (write token). It picks up the flagged
PR number, **independently re-validates** the PR from the API (still
open, external author, files still match, not already labeled), then
comments, labels `invalid`, and closes.

### Trust boundary

The only thing crossing from the untrusted stage to the privileged stage
is the **PR number**, sanitized to digits only. Stage 2 never trusts
stage 1's verdict — it re-derives every decision. Neither stage ever
checks out or runs PR code.

### Safety against false positives

- Fires only when a PR touches *exclusively* `servers/**` and/or
`data/seed.json` — a real code PR that also happens to touch seed data
is left alone.
- Skips `MEMBER`/`OWNER`/`COLLABORATOR` authors, so maintainers editing
dev seed data aren't auto-closed.
- Idempotent: skips PRs already labeled `invalid` (e.g. if a maintainer
reopens one).

## Notes

- Like any `pull_request`/`workflow_run` automation, this only takes
effect **once merged to `main`** — it is not retroactive and won't run
on this PR. The currently-open offending PRs should be closed manually.
- Pinned action SHAs match the repo's existing convention
(`upload-artifact` reuses the SHA already in `ci.yml`).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 15:43:23 -04:00
dependabot[bot]
535941a30e
build(deps): bump github.com/pulumi/pulumi-kubernetes/sdk/v4 from 4.31.1 to 4.32.0 in /deploy (#1353)
Bumps
[github.com/pulumi/pulumi-kubernetes/sdk/v4](https://github.com/pulumi/pulumi-kubernetes)
from 4.31.1 to 4.32.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi-kubernetes/releases">github.com/pulumi/pulumi-kubernetes/sdk/v4's
releases</a>.</em></p>
<blockquote>
<h2>v4.32.0</h2>
<p>No release notes provided.</p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi-kubernetes/blob/master/CHANGELOG.md">github.com/pulumi/pulumi-kubernetes/sdk/v4's
changelog</a>.</em></p>
<blockquote>
<h2>4.32.0 (June 5, 2026)</h2>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/3176">#3176</a>
ensure Helm-installed CRDs can be resolved during preview</li>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4396">#4396</a>
Fix panic when creating a
<code>kubernetes.io/service-account-token</code> Secret with a
non-existent ServiceAccount.</li>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4394">#4394</a>
Don't fail YAML render when a custom resource's namespace scope can't be
determined offline. The resource is rendered without a namespace and a
warning is logged, rather than erroring.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Align the documented minimum supported Kubernetes version and local
SDK install instructions with current provider behavior.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a03ff6ba58"><code>a03ff6b</code></a>
hotfix: e2e test failure on master (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4427">#4427</a>)</li>
<li><a
href="27f2e0beb5"><code>27f2e0b</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4425">#4425</a>)</li>
<li><a
href="1db6d7e497"><code>1db6d7e</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4424">#4424</a>)</li>
<li><a
href="b53dfdc243"><code>b53dfdc</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4422">#4422</a>)</li>
<li><a
href="92750222c3"><code>9275022</code></a>
Prepare for v4.32.0 release (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4419">#4419</a>)</li>
<li><a
href="845c3a397a"><code>845c3a3</code></a>
Resolve custom resource namespace scope from Helm release CRDs (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4417">#4417</a>)</li>
<li><a
href="db24ea92b0"><code>db24ea9</code></a>
fix: allow ambient KUBECONFIG in render mode (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4406">#4406</a>)</li>
<li><a
href="0833fabaf8"><code>0833fab</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4418">#4418</a>)</li>
<li><a
href="efa552f607"><code>efa552f</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4415">#4415</a>)</li>
<li><a
href="6f1295176a"><code>6f12951</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4414">#4414</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi-kubernetes/compare/v4.31.1...v4.32.0">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 06:46:17 -04:00
Burak Bayır
44397cbe1d
Fix broken reference documentation links (#1387)
Summary:
- Fix the reference index FAQ link to point at the existing docs FAQ.
- Correct package registry guide links from docs/contributing into
docs/reference.

Validation:
- Focused markdown-link-check on the changed docs passed.
- Git whitespace check passed.

Co-authored-by: kriptoburak <kriptoburak@users.noreply.github.com>
2026-06-25 06:44:48 -04:00
dependabot[bot]
dda760f0a9
build(deps): bump github.com/google/go-containerregistry from 0.21.6 to 0.21.7 (#1373)
Bumps
[github.com/google/go-containerregistry](https://github.com/google/go-containerregistry)
from 0.21.6 to 0.21.7.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/go-containerregistry/releases">github.com/google/go-containerregistry's
releases</a>.</em></p>
<blockquote>
<h2>v0.21.7</h2>
<h2>What's Changed</h2>
<ul>
<li>tarball: return error instead of panicking on missing
rootfs.diff_ids by <a
href="https://github.com/iahsanGill"><code>@​iahsanGill</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2304">google/go-containerregistry#2304</a></li>
<li>gcrane: honor --platform flag in copy by <a
href="https://github.com/iahsanGill"><code>@​iahsanGill</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2307">google/go-containerregistry#2307</a></li>
<li>mutate: verify layer digests in Extract and Time by <a
href="https://github.com/momenashrafff"><code>@​momenashrafff</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2303">google/go-containerregistry#2303</a></li>
<li>tarball: close layer readers during Write by <a
href="https://github.com/nandbhat"><code>@​nandbhat</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2308">google/go-containerregistry#2308</a></li>
<li>build(deps): bump the actions group across 1 directory with 2
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2311">google/go-containerregistry#2311</a></li>
<li>build(deps): bump github.com/docker/cli from 29.4.3+incompatible to
29.5.2+incompatible in the go-deps group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2312">google/go-containerregistry#2312</a></li>
<li>BUGFIX: Fail with error when read exceeds maximum by <a
href="https://github.com/inteon"><code>@​inteon</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2328">google/go-containerregistry#2328</a></li>
<li>build(deps): bump the actions group across 1 directory with 2
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2327">google/go-containerregistry#2327</a></li>
<li>fix(name): anchor loopback registry detection by <a
href="https://github.com/rohan-patnaik"><code>@​rohan-patnaik</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2314">google/go-containerregistry#2314</a></li>
<li>Reject symlinks in OCI layout blobs by <a
href="https://github.com/mosskappa"><code>@​mosskappa</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2306">google/go-containerregistry#2306</a></li>
<li>fix(crane): avoid creating export tar on pull failure by <a
href="https://github.com/Haihan-Jiang"><code>@​Haihan-Jiang</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2318">google/go-containerregistry#2318</a></li>
<li>feat(kubernetes): allow ignoring pull secrets by <a
href="https://github.com/rohan-patnaik"><code>@​rohan-patnaik</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2315">google/go-containerregistry#2315</a></li>
<li>fix(name): preserve localhost registry references by <a
href="https://github.com/rohan-patnaik"><code>@​rohan-patnaik</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2316">google/go-containerregistry#2316</a></li>
<li>pkg/registry: export ErrNotFound by <a
href="https://github.com/malt3"><code>@​malt3</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2176">google/go-containerregistry#2176</a></li>
<li>pkg/registry: export RedirectError by <a
href="https://github.com/malt3"><code>@​malt3</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2177">google/go-containerregistry#2177</a></li>
<li>build(deps): bump the go-deps group across 1 directory with 2
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2343">google/go-containerregistry#2343</a></li>
<li>build(deps): bump the actions group across 1 directory with 2
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2344">google/go-containerregistry#2344</a></li>
<li>fix: prevent SSRF in google.List() pagination by <a
href="https://github.com/tufstraka"><code>@​tufstraka</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2332">google/go-containerregistry#2332</a></li>
<li>internal/gzip: fix goroutine leak in ReadCloserLevel by <a
href="https://github.com/amarkdotdev"><code>@​amarkdotdev</code></a> in
<a
href="https://redirect.github.com/google/go-containerregistry/pull/2347">google/go-containerregistry#2347</a></li>
<li>fix(transport): apply refreshed bearer token after cross-host
redirect by <a
href="https://github.com/64johnlee"><code>@​64johnlee</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2337">google/go-containerregistry#2337</a></li>
<li>build(deps): bump the go-deps group across 3 directories with 4
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2348">google/go-containerregistry#2348</a></li>
<li>fix(tarball): normalize paths when matching files by <a
href="https://github.com/bstoll"><code>@​bstoll</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2334">google/go-containerregistry#2334</a></li>
<li>transport: do not re-attach bearer token after cross-host redirect
by <a href="https://github.com/evilgensec"><code>@​evilgensec</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2349">google/go-containerregistry#2349</a></li>
<li>Bump CI go version to 1.26.4 by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2350">google/go-containerregistry#2350</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/momenashrafff"><code>@​momenashrafff</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2303">google/go-containerregistry#2303</a></li>
<li><a href="https://github.com/nandbhat"><code>@​nandbhat</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2308">google/go-containerregistry#2308</a></li>
<li><a href="https://github.com/inteon"><code>@​inteon</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2328">google/go-containerregistry#2328</a></li>
<li><a
href="https://github.com/rohan-patnaik"><code>@​rohan-patnaik</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2314">google/go-containerregistry#2314</a></li>
<li><a href="https://github.com/mosskappa"><code>@​mosskappa</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2306">google/go-containerregistry#2306</a></li>
<li><a
href="https://github.com/Haihan-Jiang"><code>@​Haihan-Jiang</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2318">google/go-containerregistry#2318</a></li>
<li><a href="https://github.com/tufstraka"><code>@​tufstraka</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2332">google/go-containerregistry#2332</a></li>
<li><a
href="https://github.com/amarkdotdev"><code>@​amarkdotdev</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2347">google/go-containerregistry#2347</a></li>
<li><a href="https://github.com/64johnlee"><code>@​64johnlee</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2337">google/go-containerregistry#2337</a></li>
<li><a href="https://github.com/bstoll"><code>@​bstoll</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2334">google/go-containerregistry#2334</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/go-containerregistry/compare/v0.21.6...v0.21.7">https://github.com/google/go-containerregistry/compare/v0.21.6...v0.21.7</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c68d899782"><code>c68d899</code></a>
Bump go version to 1.26.4 (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2350">#2350</a>)</li>
<li><a
href="da61d865f8"><code>da61d86</code></a>
transport: do not re-attach bearer token after cross-host redirect (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2349">#2349</a>)</li>
<li><a
href="09fe1e5528"><code>09fe1e5</code></a>
fix(tarball): normalize paths when matching files (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2334">#2334</a>)</li>
<li><a
href="5baa399d09"><code>5baa399</code></a>
build(deps): bump the go-deps group across 3 directories with 4 updates
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2348">#2348</a>)</li>
<li><a
href="97a8a17e27"><code>97a8a17</code></a>
fix(transport): apply refreshed bearer token after cross-host redirect
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2337">#2337</a>)</li>
<li><a
href="e9634975f4"><code>e963497</code></a>
internal/gzip: fix goroutine leak in ReadCloserLevel (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2347">#2347</a>)</li>
<li><a
href="02649eab0d"><code>02649ea</code></a>
fix: prevent SSRF in google.List() pagination (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2332">#2332</a>)</li>
<li><a
href="7204b401d3"><code>7204b40</code></a>
build(deps): bump the actions group across 1 directory with 2 updates
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2344">#2344</a>)</li>
<li><a
href="4cfaa93eb4"><code>4cfaa93</code></a>
build(deps): bump the go-deps group across 1 directory with 2 updates
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2343">#2343</a>)</li>
<li><a
href="6849394e8a"><code>6849394</code></a>
pkg/registry: export RedirectError (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2177">#2177</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/google/go-containerregistry/compare/v0.21.6...v0.21.7">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/google/go-containerregistry&package-manager=go_modules&previous-version=0.21.6&new-version=0.21.7)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 02:43:06 -04:00
dependabot[bot]
12b31e9d09
build(deps): bump github.com/coreos/go-oidc/v3 from 3.18.0 to 3.19.0 (#1374)
Bumps [github.com/coreos/go-oidc/v3](https://github.com/coreos/go-oidc)
from 3.18.0 to 3.19.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/coreos/go-oidc/releases">github.com/coreos/go-oidc/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.19.0</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: Key refresh should set <code>no-cache</code> to get most up to
date keys by <a
href="https://github.com/Yanni8"><code>@​Yanni8</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/485">coreos/go-oidc#485</a></li>
<li>oidc: add support for validating back-channel logout tokens by <a
href="https://github.com/ericchiang"><code>@​ericchiang</code></a> in <a
href="https://redirect.github.com/coreos/go-oidc/pull/486">coreos/go-oidc#486</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Yanni8"><code>@​Yanni8</code></a> made
their first contribution in <a
href="https://redirect.github.com/coreos/go-oidc/pull/485">coreos/go-oidc#485</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/coreos/go-oidc/compare/v3.18.0...v3.19.0">https://github.com/coreos/go-oidc/compare/v3.18.0...v3.19.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="4204f0b2b0"><code>4204f0b</code></a>
oidc: add support for validating back-channel logout tokens</li>
<li><a
href="f77e01c509"><code>f77e01c</code></a>
fix: Key refresh should set no-cache to get most up to date keys</li>
<li>See full diff in <a
href="https://github.com/coreos/go-oidc/compare/v3.18.0...v3.19.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/coreos/go-oidc/v3&package-manager=go_modules&previous-version=3.18.0&new-version=3.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 02:42:46 -04:00
dependabot[bot]
39e33b5d16
build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/azidentity from 1.13.1 to 1.14.0 (#1375)
Bumps
[github.com/Azure/azure-sdk-for-go/sdk/azidentity](https://github.com/Azure/azure-sdk-for-go)
from 1.13.1 to 1.14.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/Azure/azure-sdk-for-go/releases">github.com/Azure/azure-sdk-for-go/sdk/azidentity's
releases</a>.</em></p>
<blockquote>
<h2>sdk/azidentity/v1.14.0</h2>
<h2>1.14.0 (2026-06-15)</h2>
<h3>Breaking Changes</h3>
<blockquote>
<p>These changes affect only code written against a beta version such as
v1.14.0-beta.3</p>
</blockquote>
<ul>
<li>Removed
<code>WorkloadIdentityCredentialOptions.EnableAzureProxy</code>.
It will return in v1.15.0-beta.1</li>
</ul>
<h3>Bugs Fixed</h3>
<ul>
<li><code>AzureDeveloperCLICredential</code> improved reporting of error
messages returned from <code>azd</code></li>
</ul>
<h3>Other Changes</h3>
<ul>
<li>Returned <code>azidentity</code> errors include links to the
troubleshooting guide when appropriate</li>
<li>This module now requires a minimum Go version of 1.25</li>
<li>Upgraded dependencies</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="0495c205a1"><code>0495c20</code></a>
Prep azcore 1.14.0 for release (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23293">#23293</a>)</li>
<li><a
href="217edee7ec"><code>217edee</code></a>
fix(generator tool): filter tsp-client diagnostics log (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23292">#23292</a>)</li>
<li><a
href="023c88f9f1"><code>023c88f</code></a>
Increment package version after release of azidentity (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23290">#23290</a>)</li>
<li><a
href="17f3361700"><code>17f3361</code></a>
Sync eng/common directory with azure-sdk-tools for PR 8760 (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23271">#23271</a>)</li>
<li><a
href="f5f32342c2"><code>f5f3234</code></a>
bump proxy to one with an audit log and more correct locking (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23288">#23288</a>)</li>
<li><a
href="d707091074"><code>d707091</code></a>
Prepare azidentity v1.8.0-beta.2 for release (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23289">#23289</a>)</li>
<li><a
href="84d213cff1"><code>84d213c</code></a>
NewManagedIdentityCredential returns an error for unsupported ID options
(<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23">#23</a>...</li>
<li><a
href="ea67e9c718"><code>ea67e9c</code></a>
azcontainerregistry: move method to function (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23270">#23270</a>)</li>
<li><a
href="40dad0a8cb"><code>40dad0a</code></a>
fix (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23287">#23287</a>)</li>
<li><a
href="a368082ee3"><code>a368082</code></a>
fix generator tool: ExecuteGoGenerate func (<a
href="https://redirect.github.com/Azure/azure-sdk-for-go/issues/23286">#23286</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/Azure/azure-sdk-for-go/compare/sdk/azidentity/v1.13.1...sdk/azcore/v1.14.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/Azure/azure-sdk-for-go/sdk/azidentity&package-manager=go_modules&previous-version=1.13.1&new-version=1.14.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 02:42:30 -04:00
dependabot[bot]
cefa07dfe8
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.244.0 to 3.248.0 in /deploy (#1391)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.244.0 to 3.248.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.248.0</h2>
<h2>3.248.0 (2026-06-24)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>[cli] Fix a panic in <code>pulumi package get-schema</code> when
binding a schema that references an uninstalled plugin <a
href="https://redirect.github.com/pulumi/pulumi/pull/23647">#23647</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli] Add options to <code>pulumi stack get</code> for parity with
bare <code>pulumi stack</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23623">#23623</a></li>
<li>[cli] Add <code>--output</code> flag to about and whoami commands <a
href="https://redirect.github.com/pulumi/pulumi/pull/23651">#23651</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[engine] Add support for 'snippets', blocks of PCL kept in state to
track ad-hoc resources <a
href="https://redirect.github.com/pulumi/pulumi/pull/23286">#23286</a></li>
<li>[engine] Send the address of a schema loader service to resource
providers as part of the provider handshake <a
href="https://redirect.github.com/pulumi/pulumi/pull/23645">#23645</a></li>
<li>[engine] Send the address of a package resolver service to resource
providers as part of the provider handshake <a
href="https://redirect.github.com/pulumi/pulumi/pull/23654">#23654</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[programgen] Guard references to conditionally-created (boolean
<code>range</code>) resources in generated Python and NodeJS programs so
they type-check <a
href="https://redirect.github.com/pulumi/pulumi/pull/23634">#23634</a></li>
<li>[programgen] Generate map <code>range</code> resource collections as
key-indexed maps in Python and NodeJS so they can be indexed by key <a
href="https://redirect.github.com/pulumi/pulumi/pull/23639">#23639</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[sdk/nodejs] Add <code>Output.recover</code> to catch and recover
from exceptions in outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23642">#23642</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdkgen] Fix extra trailing new lines in comments <a
href="https://redirect.github.com/pulumi/pulumi/pull/23619">#23619</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[sdkgen] Require callers to pass an explicit schema loader when
binding PCL programs and package schemas <a
href="https://redirect.github.com/pulumi/pulumi/pull/23672">#23672</a></li>
</ul>
<h2>v3.247.0</h2>
<h2>3.247.0 (2026-06-18)</h2>
<h3>Features</h3>
<ul>
<li>[cli/config] Add --raw flag to <code>pulumi config set</code> to
avoid stripping newlines when input is piped through stdin <a
href="https://redirect.github.com/pulumi/pulumi/pull/23593">#23593</a></li>
<li>[cli/do] Add <code>--provider</code> flag to pull provider config to
use from existing provider state <a
href="https://redirect.github.com/pulumi/pulumi/pull/23560">#23560</a></li>
<li>[cli/engine] Resource providers now receive the active login's API
address and access token through PULUMI_API and PULUMI_ACCESS_TOKEN <a
href="https://redirect.github.com/pulumi/pulumi/pull/23589">#23589</a></li>
<li>[cli/neo] Add a <code>--disable-integrations</code> flag to
<code>pulumi neo</code> that runs the task with no integration
credentials <a
href="https://redirect.github.com/pulumi/pulumi/pull/23531">#23531</a></li>
<li>[engine] Send the address of a mapper service to resource providers
as part of the provider handshake</li>
<li>[programgen/go] Support functions with multiArgumentInputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23554">#23554</a></li>
<li>[programgen/python] Support functions with multiArgumentInputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23574">#23574</a></li>
<li>[sdk/nodejs] Registered resources can now be retrieved from the mock
monitor for test assertions <a
href="https://redirect.github.com/pulumi/pulumi/pull/20539">#20539</a></li>
<li>[sdk/python] Add <code>Output.recover</code> to catch and recover
from exceptions in outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23591">#23591</a></li>
<li>[sdkgen] Adds support for language agnostic cross references in
schemas. Use the form <code>{{% ref &lt;target&gt; %}}</code> to
reference other schema components in markdown descriptions. Such as `{{%
ref <a
href="https://redirect.github.com/pulumi/pulumi/pull/21369">#21369</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.248.0 (2026-06-24)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>[cli] Fix a panic in <code>pulumi package get-schema</code> when
binding a schema that references an uninstalled plugin <a
href="https://redirect.github.com/pulumi/pulumi/pull/23647">#23647</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli] Add options to <code>pulumi stack get</code> for parity with
bare <code>pulumi stack</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23623">#23623</a></li>
<li>[cli] Add <code>--output</code> flag to about and whoami commands <a
href="https://redirect.github.com/pulumi/pulumi/pull/23651">#23651</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[engine] Add support for 'snippets', blocks of PCL kept in state to
track ad-hoc resources <a
href="https://redirect.github.com/pulumi/pulumi/pull/23286">#23286</a></li>
<li>[engine] Send the address of a schema loader service to resource
providers as part of the provider handshake <a
href="https://redirect.github.com/pulumi/pulumi/pull/23645">#23645</a></li>
<li>[engine] Send the address of a package resolver service to resource
providers as part of the provider handshake <a
href="https://redirect.github.com/pulumi/pulumi/pull/23654">#23654</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[programgen] Guard references to conditionally-created (boolean
<code>range</code>) resources in generated Python and NodeJS programs so
they type-check <a
href="https://redirect.github.com/pulumi/pulumi/pull/23634">#23634</a></li>
<li>[programgen] Generate map <code>range</code> resource collections as
key-indexed maps in Python and NodeJS so they can be indexed by key <a
href="https://redirect.github.com/pulumi/pulumi/pull/23639">#23639</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[sdk/nodejs] Add <code>Output.recover</code> to catch and recover
from exceptions in outputs <a
href="https://redirect.github.com/pulumi/pulumi/pull/23642">#23642</a></li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[sdkgen] Fix extra trailing new lines in comments <a
href="https://redirect.github.com/pulumi/pulumi/pull/23619">#23619</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[sdkgen] Require callers to pass an explicit schema loader when
binding PCL programs and package schemas <a
href="https://redirect.github.com/pulumi/pulumi/pull/23672">#23672</a></li>
</ul>
<h2>3.247.0 (2026-06-18)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>[cli] Ensure <code>pulumi logout</code> clears the current tokenless
backend in coding agent environments <a
href="https://redirect.github.com/pulumi/pulumi/pull/23540">#23540</a></li>
<li>[cli] Read Git metadata correctly in repositories that enable the
worktreeConfig extension, such as those hosted on Azure DevOps <a
href="https://redirect.github.com/pulumi/pulumi/pull/23535">#23535</a></li>
</ul>
<h3>Improvements</h3>
<ul>
<li>[cli] Respect PULUMI_SKIP_CONFIRMATIONS whenever we ask for
confirmation <a
href="https://redirect.github.com/pulumi/pulumi/pull/23607">#23607</a></li>
<li>[cli] Use list and remove as the canonical names for list/remove
commands, with ls and rm as aliases <a
href="https://redirect.github.com/pulumi/pulumi/pull/23608">#23608</a></li>
</ul>
<h3>Features</h3>
<ul>
<li>[cli/config] Add --raw flag to <code>pulumi config set</code> to
avoid stripping newlines when input is piped through stdin <a
href="https://redirect.github.com/pulumi/pulumi/pull/23593">#23593</a></li>
</ul>
<h3>Bug Fixes</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a88168d865"><code>a88168d</code></a>
[programgen] Generate map ranges as key-indexed collections (Python
&amp; NodeJS)...</li>
<li><a
href="3263e4ae48"><code>3263e4a</code></a>
Bump language versions (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23685">#23685</a>)</li>
<li><a
href="a95f24c34b"><code>a95f24c</code></a>
Bump the Pulumi HCL version to 0.8.0 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23679">#23679</a>)</li>
<li><a
href="91f59ddad4"><code>91f59dd</code></a>
Require an explicit schema loader when binding programs and specs (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23672">#23672</a>)</li>
<li><a
href="35eb97386d"><code>35eb973</code></a>
Actually set an input in TestRefreshBeforeUpdateDeletedResource (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23681">#23681</a>)</li>
<li><a
href="9fd06c1f63"><code>9fd06c1</code></a>
Send a resolver target to providers during handshake (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23654">#23654</a>)</li>
<li><a
href="10914919a6"><code>1091491</code></a>
Start changing PolicyRemediationEvent to property.Map (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23667">#23667</a>)</li>
<li><a
href="e2cca27c77"><code>e2cca27</code></a>
[programgen] Guard references to conditionally-created resources (Python
&amp; No...</li>
<li><a
href="109f27fb39"><code>109f27f</code></a>
NodeJS recover method (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23642">#23642</a>)</li>
<li><a
href="facc18efca"><code>facc18e</code></a>
Send a loader target to providers during handshake (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23645">#23645</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.244.0...v3.248.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.244.0&new-version=3.248.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 02:42:05 -04:00
dependabot[bot]
f54f3b831c
build(deps): bump the actions group with 2 updates (#1392)
Bumps the actions group with 2 updates:
[actions/checkout](https://github.com/actions/checkout) and
[actions/setup-go](https://github.com/actions/setup-go).

Updates `actions/checkout` from 6 to 7
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/checkout/releases">actions/checkout's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>block checking out fork pr for pull_request_target and workflow_run
by <a href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li>
<li>Bump actions/publish-immutable-action from 0.0.3 to 0.0.4 in the
minor-actions-dependencies group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2458">actions/checkout#2458</a></li>
<li>Bump flatted from 3.3.1 to 3.4.2 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2460">actions/checkout#2460</a></li>
<li>Bump js-yaml from 4.1.0 to 4.2.0 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2461">actions/checkout#2461</a></li>
<li>Bump <code>@​actions/core</code> and
<code>@​actions/tool-cache</code> and Remove uuid by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2459">actions/checkout#2459</a></li>
<li>upgrade module to esm and update dependencies by <a
href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2463">actions/checkout#2463</a></li>
<li>Bump the minor-npm-dependencies group across 1 directory with 3
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/actions/checkout/pull/2462">actions/checkout#2462</a></li>
<li>getting ready for checkout v7 release by <a
href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2464">actions/checkout#2464</a></li>
<li>update error wording by <a
href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2467">actions/checkout#2467</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/aiqiaoy"><code>@​aiqiaoy</code></a> made
their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2454">actions/checkout#2454</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6.0.3...v7.0.0">https://github.com/actions/checkout/compare/v6.0.3...v7.0.0</a></p>
<h2>v6.0.3</h2>
<h2>What's Changed</h2>
<ul>
<li>Update changelog by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2357">actions/checkout#2357</a></li>
<li>fix: expand merge commit SHA regex and add SHA-256 test cases by <a
href="https://github.com/yaananth"><code>@​yaananth</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li>
<li>Fix checkout init for SHA-256 repositories by <a
href="https://github.com/yaananth"><code>@​yaananth</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2439">actions/checkout#2439</a></li>
<li>Update changelog for v6.0.3 by <a
href="https://github.com/yaananth"><code>@​yaananth</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2446">actions/checkout#2446</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/yaananth"><code>@​yaananth</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/checkout/pull/2414">actions/checkout#2414</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6...v6.0.3">https://github.com/actions/checkout/compare/v6...v6.0.3</a></p>
<h2>v6.0.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Add orchestration_id to git user-agent when ACTIONS_ORCHESTRATION_ID
is set by <a
href="https://github.com/TingluoHuang"><code>@​TingluoHuang</code></a>
in <a
href="https://redirect.github.com/actions/checkout/pull/2355">actions/checkout#2355</a></li>
<li>Fix tag handling: preserve annotations and explicit fetch-tags by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2356">actions/checkout#2356</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6.0.1...v6.0.2">https://github.com/actions/checkout/compare/v6.0.1...v6.0.2</a></p>
<h2>v6.0.1</h2>
<h2>What's Changed</h2>
<ul>
<li>Update all references from v5 and v4 to v6 by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2314">actions/checkout#2314</a></li>
<li>Add worktree support for persist-credentials includeIf by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2327">actions/checkout#2327</a></li>
<li>Clarify v6 README by <a
href="https://github.com/ericsciple"><code>@​ericsciple</code></a> in <a
href="https://redirect.github.com/actions/checkout/pull/2328">actions/checkout#2328</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/checkout/compare/v6...v6.0.1">https://github.com/actions/checkout/compare/v6...v6.0.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9c091bb21b"><code>9c091bb</code></a>
update error wording (<a
href="https://redirect.github.com/actions/checkout/issues/2467">#2467</a>)</li>
<li><a
href="1044a6dea9"><code>1044a6d</code></a>
getting ready for checkout v7 release (<a
href="https://redirect.github.com/actions/checkout/issues/2464">#2464</a>)</li>
<li><a
href="f0282184c7"><code>f028218</code></a>
Bump the minor-npm-dependencies group across 1 directory with 3 updates
(<a
href="https://redirect.github.com/actions/checkout/issues/2462">#2462</a>)</li>
<li><a
href="d914b262ff"><code>d914b26</code></a>
upgrade module to esm and update dependencies (<a
href="https://redirect.github.com/actions/checkout/issues/2463">#2463</a>)</li>
<li><a
href="537c7ef99c"><code>537c7ef</code></a>
Bump <code>@​actions/core</code> and <code>@​actions/tool-cache</code>
and Remove uuid (<a
href="https://redirect.github.com/actions/checkout/issues/2459">#2459</a>)</li>
<li><a
href="130a169078"><code>130a169</code></a>
Bump js-yaml from 4.1.0 to 4.2.0 (<a
href="https://redirect.github.com/actions/checkout/issues/2461">#2461</a>)</li>
<li><a
href="7d09575332"><code>7d09575</code></a>
Bump flatted from 3.3.1 to 3.4.2 (<a
href="https://redirect.github.com/actions/checkout/issues/2460">#2460</a>)</li>
<li><a
href="0f9f3aa320"><code>0f9f3aa</code></a>
Bump actions/publish-immutable-action (<a
href="https://redirect.github.com/actions/checkout/issues/2458">#2458</a>)</li>
<li><a
href="f9e715a95f"><code>f9e715a</code></a>
block checking out fork pr for pull_request_target and workflow_run (<a
href="https://redirect.github.com/actions/checkout/issues/2454">#2454</a>)</li>
<li>See full diff in <a
href="https://github.com/actions/checkout/compare/v6...v7">compare
view</a></li>
</ul>
</details>
<br />

Updates `actions/setup-go` from 6.4.0 to 6.5.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/actions/setup-go/releases">actions/setup-go's
releases</a>.</em></p>
<blockquote>
<h2>v6.5.0</h2>
<h2>What's Changed</h2>
<h3>Dependency update</h3>
<ul>
<li>Upgrade actions dependencies by <a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a> in
<a
href="https://redirect.github.com/actions/setup-go/pull/744">actions/setup-go#744</a></li>
<li>Upgrade <code>@​types/node</code> and typescript-eslint dependencies
to resolve npm audit findings by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-go/pull/755">actions/setup-go#755</a></li>
<li>Upgrade <code>@​actions/cache</code> to 5.1.0, log cache write
denied by <a
href="https://github.com/jasongin"><code>@​jasongin</code></a> in <a
href="https://redirect.github.com/actions/setup-go/pull/758">actions/setup-go#758</a></li>
<li>Upgrade version to 6.5.0 in package.json and package-lock.json by <a
href="https://github.com/HarithaVattikuti"><code>@​HarithaVattikuti</code></a>
in <a
href="https://redirect.github.com/actions/setup-go/pull/762">actions/setup-go#762</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a
href="https://github.com/priyagupta108"><code>@​priyagupta108</code></a>
with <a href="https://github.com/Copilot"><code>@​Copilot</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-go/pull/744">actions/setup-go#744</a></li>
<li><a href="https://github.com/jasongin"><code>@​jasongin</code></a>
made their first contribution in <a
href="https://redirect.github.com/actions/setup-go/pull/758">actions/setup-go#758</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/actions/setup-go/compare/v6...v6.5.0">https://github.com/actions/setup-go/compare/v6...v6.5.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="924ae3a1cd"><code>924ae3a</code></a>
chore: bump version to 6.5.0 in package.json and package-lock.json (<a
href="https://redirect.github.com/actions/setup-go/issues/762">#762</a>)</li>
<li><a
href="e91cc3bfe0"><code>e91cc3b</code></a>
Bump <code>@​actions/cache</code> to 5.1.0, log cache write denied (<a
href="https://redirect.github.com/actions/setup-go/issues/758">#758</a>)</li>
<li><a
href="4a2405e6ae"><code>4a2405e</code></a>
chore: update <code>@​types/node</code> and <a
href="https://github.com/typescript-eslint"><code>@​typescript-eslint</code></a>
dependencies to latest versi...</li>
<li><a
href="78961f6f84"><code>78961f6</code></a>
chore: update <a
href="https://github.com/actions"><code>@​actions</code></a>
dependencies and refresh license cache (<a
href="https://redirect.github.com/actions/setup-go/issues/744">#744</a>)</li>
<li>See full diff in <a
href="4a3601121d...924ae3a1cd">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-25 02:41:46 -04:00
Radoslav Dimitrov
fecef4f9ed
fix: don't leak internal error detail in GET /v0/servers 500 response (#1338)
## Summary
Fixes the information-disclosure regression introduced by #1335 (item 1
of #1337).

`ListServersError` passed the raw `err` into
`huma.Error500InternalServerError(...)`. huma serializes extra error
args into the response body's `errors` array (`ErrorModel.Errors`,
`json:"errors,omitempty"`), so on the **public, unauthenticated** `GET
/v0/servers` endpoint a genuine DB failure echoed the internal wrapped
error from `internal/database/postgres.go` (`error iterating rows: <pgx
error>`) back to the client. pgx/pgconn errors can carry SQLSTATE codes,
constraint/table/column names, and internal messages (CWE-209).

## Change
- Drop `err` from the 500 call so only the generic message is returned;
keep `log.Printf` for the server-side detail — matching the sibling
handlers (`servers.go:190/220`, `edit.go`, `status.go`).
- Add a regression test
(`TestListServersError_realFailureDoesNotLeakDetail`) that marshals the
500 error and asserts the internal detail is absent from the
client-visible body. Existing tests only asserted status codes, which is
why the leak slipped through.

The 499 client-cancelled path is unchanged (the client has already
disconnected, so nothing is leaked there).

## Test plan
- [x] `go test ./internal/api/handlers/v0/... -run ListServersError`
(3/3 pass)
- [x] `go build ./...`, `go vet`, `golangci-lint` (no new findings in
changed files)

## Note
This leaves the non-security items in #1337 (correcting the `superfluous
WriteHeader` claim, `statusClientClosed` const reuse, broader
cancellation-guard scope) for separate follow-up. Closing #1337 here
since the only security-impacting item is addressed; reopen/split if
you'd prefer to track the nits independently.

Closes #1337

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 03:08:33 -04:00
CK
ef29673221
fix: client-cancelled GET /v0/servers returns 499 without error log (#1335)
Maps context.Canceled from ListServers to 499 and skips the error-level log on client disconnect.

Merged as-is per maintainer decision; known follow-up tracked in #1337 (500-path error-detail leak + WriteHeader claim correction + nits).
2026-06-05 02:59:47 -04:00
Radoslav Dimitrov
04623ed925
fix(validators): harden mcp-name matching (PyPI/NuGet anchoring, comment-form safe) + cargo follow-ups (#1331)
Registry-wide hardening of the `mcp-name:` ownership-token match, plus
the cargo follow-up fixes from the #1330 review — consolidated here per
maintainer request. Rebased onto current `main` (the merged #1330 cargo
commit drops out), so the diff is just the net-new work.

### Changes
- **PyPI/NuGet: boundary-anchored token match.** Replace
`strings.Contains(readme, "mcp-name: "+name)` with the shared
`containsMCPNameToken`, so a README declaring a longer name
(`…/widget-pro`) no longer satisfies an ownership claim for a shorter
prefix (`…/widget`). (Cargo already got this in #1330; NPM is unaffected
— it compares an exact metadata field.)
- **Matcher: treat the HTML comment close as a boundary.** `<!--
mcp-name: NAME-->` / `<!--mcp-name: NAME-->` (any spacing) validate
again — the documented hidden-comment form for PyPI/NuGet — while a
genuine longer name (`…/widget--pro`) still does not.
- **Cargo hardening (review of #1330):** pin scheme+port (not just host)
on the README fetch and redirects; a rate-limited/failed crate-version
existence probe now reports *transient* instead of "not found"; a 403
with the crate present no longer flatly asserts "no README".
- **Docs:** note the token must be followed by a boundary.

### ⚠️ Behavior change for PyPI/NuGet — read before merging
The match is **strictly stricter** (verified by fuzz, 2.3M execs: it can
only flip pass→fail, never fail→pass). After the comment-close fix, the
**only** forms that newly fail are unusual *inline* ones: the token
ending a sentence (`…/my-mcp.`) or glued to a trailing `/`. The
documented forms (own line, in `<!-- … -->`) are unaffected.

**Correcting an earlier claim:** this re-validates on **edits too**, not
just new versions — `edit.go → UpdateServer → ValidateUpdateRequest →
validateRegistryOwnership` runs the token check on any edit of a live
server (only delete-transitions skip it). So an existing PyPI/NuGet
server whose README uses one of the breaking inline forms would fail on
its next publish *or* edit. Given the v0.1 API-freeze posture, this
should land as a deliberate, noted change.

### Testing
`go build`, `vet`, `gofmt`, `golangci-lint` (prod files),
`check-schema`, `validate-examples` all clean. Hermetic + **live**
PyPI/NuGet/cargo suite passes. New: `TestCargoURLAllowed`, a
combined-fixture probe-429→transient case, comment-form matcher cases,
and `FuzzContainsMCPNameToken` (the strictly-stricter property, 2.3M
execs).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 02:28:41 -04:00
Radoslav Dimitrov
7a6d1bc30a
fix(cargo): harden README fetch, clarify status handling, strengthen tests (#1330)
Follow-up to #1207, addressing items from the cargo validator review.
**Scoped to cargo + shared helpers — no behavior change for existing
npm/pypi/nuget/oci/mcpb publishers.** Safe to merge and promote.

### Changes
**SSRF hardening of the two-call README retrieval**
- Pin the step-2 README URL to an allowed host (`static.crates.io` in
prod; the base host under test) *before* fetching, so a metadata
response can't steer the validator at an internal/attacker host.
- `CheckRedirect` policy pins every redirect hop to the same allowlist
(the initial URL being pinned isn't enough if an upstream 3xx is
followed).
- Cap the README body with `io.LimitReader` (5 MiB).

> Not publisher-exploitable today (the URL comes from crates.io), so
this is defense-in-depth — but it makes the "host is pinned" guarantee
hold in code rather than rely on crates.io's behavior.

**Clearer status handling** (previously any non-5xx/non-200 collapsed to
"not found")
- **429** → reported as transient/retryable, at both the metadata and
README steps.
- **403** → disambiguated via the crate-version endpoint:
genuinely-missing stays "not found"; *exists-but-no-README* gets an
actionable "add a README with `mcp-name` and republish" message (mirrors
the NuGet validator). This continues the 5xx-vs-403 diagnostic split
@P4ST4S started in the #1207 review — thanks!

**Shared `containsMCPNameToken` helper**
Boundary-anchored ownership-token match (prevents prefix confusion, e.g.
a README declaring `io.github.acme/widget-pro` satisfying a claim for
`io.github.acme/widget`), used here **by the cargo validator only**.
Adopting it in PyPI/NuGet is a separate follow-up because it's a
behavior change for those already-live registries.

**Tests & docs**
Hermetic positive `ServerNameFormats`; combined fixture gains a
version-existence endpoint + cases for 403-missing vs 403-no-README,
429, and prefix-confusion rejection; new foreign-README-host (SSRF)
test; internal test for the helper. Docs: list `crates.io` in the
registry-requirements list + the `Package` model doc.

### Testing
`go build`, `go vet`, full `./internal/validators/...` suite (incl. live
cargo positive), `make check-schema`, `validate-examples` all pass. No
new `golangci-lint` findings.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 17:34:54 -04:00
dependabot[bot]
227621f1d0
build(deps): bump github.com/jackc/pgx/v5 from 5.9.2 to 5.10.0 (#1334)
Bumps [github.com/jackc/pgx/v5](https://github.com/jackc/pgx) from 5.9.2
to 5.10.0.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/jackc/pgx/blob/master/CHANGELOG.md">github.com/jackc/pgx/v5's
changelog</a>.</em></p>
<blockquote>
<h1>5.10.0 (June 3, 2026)</h1>
<p>This release includes a significant amount of hardening against
malicious or compromised PostgreSQL servers,
contributed by Sean Chittenden at CrowdStrike, Inc. This work bounds
binary decoders against attacker-controlled
message sizes, caps server-supplied SCRAM iteration counts, adds
<code>require_auth</code> to restrict which authentication
methods a server may use (mitigating downgrade attacks under
<code>sslmode=prefer</code>), and ensures cancellation requests are
sent over TLS when the original connection used TLS.</p>
<h2>Features</h2>
<ul>
<li>Add <code>require_auth</code> to restrict accepted server
authentication methods (Sean Chittenden at CrowdStrike, Inc.)</li>
<li>Add <code>ParseConfigOptions.ConnStringAllowedKeys</code> to
restrict allowed connection string keys (Sean Chittenden at CrowdStrike,
Inc.)</li>
<li>Add <code>StructArgs</code> and <code>StrictStructArgs</code> for
<code>@</code>-named queries (Tubelight30)</li>
<li>Add <code>ErrConnClosed</code> sentinel error and unwrap it from
<code>connLockError</code> (Charlie Tonneslan)</li>
<li>pgxpool: check if connection is expired before acquire
(arthurdotwork)</li>
</ul>
<h2>Security Hardening</h2>
<ul>
<li>Encrypt <code>CancelRequest</code> connection when the primary
connection used TLS (Sean Chittenden at CrowdStrike, Inc.)</li>
<li>Cap server-supplied SCRAM iteration count (Sean Chittenden at
CrowdStrike, Inc.)</li>
<li>Default Frontend max message body length to ~1 GiB (Sean Chittenden
at CrowdStrike, Inc.)</li>
<li>Bound hstore binary decode against malicious server input (Sean
Chittenden at CrowdStrike, Inc.)</li>
<li>Bound array binary decode element length against remaining message
bytes (Sean Chittenden at CrowdStrike, Inc.)</li>
<li>Bound array element count against remaining message bytes (Sean
Chittenden at CrowdStrike, Inc.)</li>
<li>Bound range, multirange, and tsvector binary decoders (Sean
Chittenden at CrowdStrike, Inc.)</li>
<li>Document secure connection configuration (Sean Chittenden at
CrowdStrike, Inc.)</li>
<li>Fix panic on malformed geometric text; return an error instead
(MaIII)</li>
</ul>
<h2>Fixes</h2>
<ul>
<li>Fix scanning <code>&quot;char&quot;</code> (OID 18) into
<code>*string</code> in binary format (luongs3)</li>
<li>Fix handling of typed-nil <code>driver.Valuer</code> in array and
composite codecs (Donncha Fahy)</li>
<li>Fix <code>CopyData.Data</code> hex decoding in
<code>UnmarshalJSON</code> (Charlie Tonneslan)</li>
<li>Fix data race when context is cancelled during connect</li>
<li>Fix <code>parseKeywordValueSettings</code> rejecting trailing
whitespace (alliasgher)</li>
<li>pgconn: preserve full error chain in
<code>normalizeTimeoutError</code> (Charlie Tonneslan)</li>
<li>pgconn: use a fresh context for the fallback connection in
<code>connectPreferred</code> (Charlie Tonneslan)</li>
<li>pgxpool: fix <code>MaxLifetimeDestroyCount</code> and ping order for
acquire-time expiry check</li>
<li>Add missing error check of <code>rows.Err</code> to load types (Jen
Altavilla)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7293fb1112"><code>7293fb1</code></a>
Update changelog for v5.10.0</li>
<li><a
href="1ade285284"><code>1ade285</code></a>
pgconn: document secure connection configuration</li>
<li><a
href="b4d6d4d1be"><code>b4d6d4d</code></a>
pgtype: bound range, multirange, and tsvector binary decoders</li>
<li><a
href="0639b37f8f"><code>0639b37</code></a>
pgconn: add ParseConfigOptions.ConnStringAllowedKeys</li>
<li><a
href="b28e65b0c3"><code>b28e65b</code></a>
pgtype: bound array element count against remaining message bytes</li>
<li><a
href="cd1f389d37"><code>cd1f389</code></a>
pgtype: bound array binary decode element length against remaining
bytes</li>
<li><a
href="ff27b5bbea"><code>ff27b5b</code></a>
pgtype: bound hstore binary decode against malicious server input</li>
<li><a
href="a6002e12a8"><code>a6002e1</code></a>
pgproto3: default Frontend max message body length to ~1 GiB</li>
<li><a
href="44f61732ec"><code>44f6173</code></a>
pgconn: cap server-supplied SCRAM iteration count</li>
<li><a
href="1a976f7bb9"><code>1a976f7</code></a>
pgconn: add require_auth to restrict accepted server auth methods</li>
<li>Additional commits viewable in <a
href="https://github.com/jackc/pgx/compare/v5.9.2...v5.10.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/jackc/pgx/v5&package-manager=go_modules&previous-version=5.9.2&new-version=5.10.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 16:03:35 -04:00
dependabot[bot]
a1ffe33fba
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.243.0 to 3.244.0 in /deploy (#1333)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.243.0 to 3.244.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.244.0</h2>
<h2>3.244.0 (2026-05-28)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>[cli/do] Fix top level flags like <code>--logtostderr</code> being
recognized when using <code>pulumi do</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23355">#23355</a></li>
<li>[cli/install] Distinguish multiple packages with the same
plugin</li>
<li>[engine] Fix snapshot integrity issue with <code>up
--refresh</code></li>
<li>[engine] Forward all provider errors to error hooks for retry <a
href="https://redirect.github.com/pulumi/pulumi/pull/23347">#23347</a></li>
<li>[engine] Trace cancel RPCs sent to plugins during shutdown as
children of the active operation instead of emitting separate root spans
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23362">#23362</a></li>
<li>[sdk/python] Merge requirements.txt into pyproject.toml when using
uv without a project section <a
href="https://redirect.github.com/pulumi/pulumi/pull/23340">#23340</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.244.0 (2026-05-28)</h2>
<h3>Bug Fixes</h3>
<ul>
<li>[cli/do] Fix top level flags like <code>--logtostderr</code> being
recognized when using <code>pulumi do</code> <a
href="https://redirect.github.com/pulumi/pulumi/pull/23355">#23355</a></li>
<li>[cli/install] Distinguish multiple packages with the same
plugin</li>
<li>[engine] Fix snapshot integrity issue with <code>up
--refresh</code></li>
<li>[engine] Forward all provider errors to error hooks for retry <a
href="https://redirect.github.com/pulumi/pulumi/pull/23347">#23347</a></li>
<li>[engine] Trace cancel RPCs sent to plugins during shutdown as
children of the active operation instead of emitting separate root spans
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23362">#23362</a></li>
<li>[sdk/python] Merge requirements.txt into pyproject.toml when using
uv without a project section <a
href="https://redirect.github.com/pulumi/pulumi/pull/23340">#23340</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fc6566b925"><code>fc6566b</code></a>
Actually deprecate <code>ConfigureRequest.variables</code> (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23367">#23367</a>)</li>
<li><a
href="6a91079482"><code>6a91079</code></a>
Fix Cancel/Shutdown methods to have the right tracing spans (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23362">#23362</a>)</li>
<li><a
href="74734c3d9c"><code>74734c3</code></a>
Fix do and root flags (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23355">#23355</a>)</li>
<li><a
href="8deae80ae5"><code>8deae80</code></a>
Tighten component dependency tests (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23353">#23353</a>)</li>
<li><a
href="e6a7bcc542"><code>e6a7bcc</code></a>
Add <code>runtime</code> field to policy packs (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23319">#23319</a>)</li>
<li><a
href="ceeab7df8c"><code>ceeab7d</code></a>
introduce otel logging exporter (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22609">#22609</a>)</li>
<li><a
href="a7d5f52327"><code>a7d5f52</code></a>
Update dependency tmp to v0.2.6 [SECURITY] (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23354">#23354</a>)</li>
<li><a
href="6b81137328"><code>6b81137</code></a>
s/go-change/changie/g (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23316">#23316</a>)</li>
<li><a
href="51fd46b207"><code>51fd46b</code></a>
Fix Mise troubles with <code>protoc-gen-js</code> /
<code>grpc-tools</code> (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23350">#23350</a>)</li>
<li><a
href="7b59639f25"><code>7b59639</code></a>
Retry all errors (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23347">#23347</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.243.0...v3.244.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.243.0&new-version=3.244.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 16:02:45 -04:00
dependabot[bot]
78bc7006b0
build(deps): bump go.opentelemetry.io/contrib/instrumentation/runtime from 0.68.0 to 0.69.0 in the opentelemetry group (#1332)
Bumps the opentelemetry group with 1 update:
[go.opentelemetry.io/contrib/instrumentation/runtime](https://github.com/open-telemetry/opentelemetry-go-contrib).

Updates `go.opentelemetry.io/contrib/instrumentation/runtime` from
0.68.0 to 0.69.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/releases">go.opentelemetry.io/contrib/instrumentation/runtime's
releases</a>.</em></p>
<blockquote>
<h2>v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0</h2>
<h3>Added</h3>
<ul>
<li>Add <code>error.type</code> attribute to
<code>http.client.request.duration</code> for transport failures in
<code>otelhttp</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li>
<li>Add examples for prometheus compatibility document. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li>
<li>Add support for <code>cardinality_limits</code> in
<code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li>Add <code>Resource</code> method to <code>SDK</code> in
<code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the
resolved SDK resource from declarative configuration. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a
new resource detector for Hetzner Cloud servers, ported from
<code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>.
Detects <code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>cloud.availability_zone</code>,
<code>host.id</code>, and <code>host.name</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Set error field as <code>record.SetErr</code> instead of a plain
attribute in
<code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li>
<li>Set the &quot;error&quot; field (e.g. created via
<code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain
attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li>
<li>Set fields implementing <code>error</code> interface from
<code>slog</code> records as <code>record.SetErr</code> instead of plain
attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li>
<li>Set emitted errors in
<code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record
errors (<code>Record.SetErr</code>) instead of
<code>exception.message</code> attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix header attributes lost when using sub-spans in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li>
<li>Validate <code>encoding</code> configuration for OTLP HTTP exporters
in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li>
<li>Remove the custom body wrapper from the request's body after the
request is processed to allow body type comparisons with the original
type in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
and
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li>Unknown or empty HTTP methods now report &quot;_OTHER&quot; instead
of &quot;GET&quot; across all HTTP instrumentations to align with
OpenTelemetry semantic conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li>
<li>The default span name formatter in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
now conforms to the OpenTelemetry HTTP semantic conventions for server
span names. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>)
<ul>
<li>The default span name is now <code>{method} {route}</code> (e.g.
<code>GET /foo/{id}</code>) when a route pattern is available, or
<code>{method}</code> (e.g. <code>GET</code>) otherwise.</li>
</ul>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove the deprecated <code>WithSpanOptions</code> option in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>otelconf: validate encoding configuration for OTLP HTTP exporters by
<a href="https://github.com/sonalgaud12"><code>@​sonalgaud12</code></a>
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8772">open-telemetry/opentelemetry-go-contrib#8772</a></li>
<li>fix(deps): update module github.com/aws/aws-sdk-go-v2/service/s3 to
v1.99.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8780">open-telemetry/opentelemetry-go-contrib#8780</a></li>
<li>chore(deps): update prom/prometheus docker tag to v3.11.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8779">open-telemetry/opentelemetry-go-contrib#8779</a></li>
<li>otellogrus: Set error field as <code>record.SetErr</code> by <a
href="https://github.com/sonalgaud12"><code>@​sonalgaud12</code></a> in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8778">open-telemetry/opentelemetry-go-contrib#8778</a></li>
<li>chore(deps): update module golang.org/x/sys to v0.43.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8783">open-telemetry/opentelemetry-go-contrib#8783</a></li>
<li>chore(deps): update golang.org/x/telemetry digest to 93c7c8a by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8786">open-telemetry/opentelemetry-go-contrib#8786</a></li>
<li>chore(deps): update module github.com/mattn/go-isatty to v0.0.21 by
<a href="https://github.com/renovate"><code>@​renovate</code></a>[bot]
in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8787">open-telemetry/opentelemetry-go-contrib#8787</a></li>
<li>chore(deps): update module github.com/mattn/go-runewidth to v0.0.23
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8788">open-telemetry/opentelemetry-go-contrib#8788</a></li>
<li>chore(deps): update golang.org/x by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8791">open-telemetry/opentelemetry-go-contrib#8791</a></li>
<li>chore(deps): update actions/github-script action to v9 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8795">open-telemetry/opentelemetry-go-contrib#8795</a></li>
<li>fix(deps): update golang.org/x by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8794">open-telemetry/opentelemetry-go-contrib#8794</a></li>
<li>otelzap: set error field as record.SetErr by <a
href="https://github.com/iblancasa"><code>@​iblancasa</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8719">open-telemetry/opentelemetry-go-contrib#8719</a></li>
<li>fix(deps): update golang.org/x to 746e56f by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8796">open-telemetry/opentelemetry-go-contrib#8796</a></li>
<li>chore(deps): update module golang.org/x/arch to v0.26.0 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8798">open-telemetry/opentelemetry-go-contrib#8798</a></li>
<li>Check if otelgrpc metrics are enabled by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8792">open-telemetry/opentelemetry-go-contrib#8792</a></li>
<li>chore(deps): update actions/upload-artifact action to v7.0.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8800">open-telemetry/opentelemetry-go-contrib#8800</a></li>
<li>Check instrument enabled in deprecatedruntime by <a
href="https://github.com/dashpole"><code>@​dashpole</code></a> in <a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8793">open-telemetry/opentelemetry-go-contrib#8793</a></li>
<li>chore(deps): update module github.com/ashanbrown/forbidigo/v2 to
v2.3.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8804">open-telemetry/opentelemetry-go-contrib#8804</a></li>
<li>chore(deps): update module github.com/ashanbrown/makezero/v2 to
v2.2.1 by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8802">open-telemetry/opentelemetry-go-contrib#8802</a></li>
<li>chore(deps): update module github.com/manuelarte/funcorder to v0.6.0
by <a
href="https://github.com/renovate"><code>@​renovate</code></a>[bot] in
<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/pull/8803">open-telemetry/opentelemetry-go-contrib#8803</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/blob/main/CHANGELOG.md">go.opentelemetry.io/contrib/instrumentation/runtime's
changelog</a>.</em></p>
<blockquote>
<h2>[1.44.0/2.5.1/0.69.0/0.37.1/0.24.0/0.19.0/0.16.1/0.16.0] -
2026-05-28</h2>
<h3>Added</h3>
<ul>
<li>Add <code>error.type</code> attribute to
<code>http.client.request.duration</code> for transport failures in
<code>otelhttp</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8801">#8801</a>)</li>
<li>Add examples for prometheus compatibility document. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8716">#8716</a>)</li>
<li>Add support for <code>cardinality_limits</code> in
<code>PeriodicMetricReader</code> in <code>otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li>Add <code>Resource</code> method to <code>SDK</code> in
<code>go.opentelemetry.io/contrib/otelconf/x</code> to expose the
resolved SDK resource from declarative configuration. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8913">#8913</a>)</li>
<li>Add <code>go.opentelemetry.io/contrib/detectors/hetzner</code>, a
new resource detector for Hetzner Cloud servers, ported from
<code>github.com/open-telemetry/opentelemetry-collector-contrib/processor/resourcedetectionprocessor/internal/hetzner</code>.
Detects <code>cloud.provider</code>, <code>cloud.platform</code>,
<code>cloud.region</code>, <code>cloud.availability_zone</code>,
<code>host.id</code>, and <code>host.name</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8979">#8979</a>)</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Set error field as <code>record.SetErr</code> instead of a plain
attribute in
<code>go.opentelemetry.io/contrib/bridges/otellogrus</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8776">#8776</a>)</li>
<li>Set the &quot;error&quot; field (e.g. created via
<code>zap.Error</code>) as <code>record.SetErr</code> instead of a plain
attribute in <code>go.opentelemetry.io/contrib/bridges/otelzap</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8719">#8719</a>)</li>
<li>Set fields implementing <code>error</code> interface from
<code>slog</code> records as <code>record.SetErr</code> instead of plain
attributes in <code>go.opentelemetry.io/contrib/bridges/otelslog</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8774">#8774</a>)</li>
<li>Set emitted errors in
<code>go.opentelemetry.io/contrib/bridges/otellogr</code> as record
errors (<code>Record.SetErr</code>) instead of
<code>exception.message</code> attributes. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8775">#8775</a>)</li>
</ul>
<h3>Fixed</h3>
<ul>
<li>Fix header attributes lost when using sub-spans in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8797">#8797</a>)</li>
<li>Validate <code>encoding</code> configuration for OTLP HTTP exporters
in <code>go.opentelemetry.io/contrib/otelconf</code>. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8772">#8772</a>)</li>
<li>Remove the custom body wrapper from the request's body after the
request is processed to allow body type comparisons with the original
type in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
and
<code>go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li>Unknown or empty HTTP methods now report &quot;_OTHER&quot; instead
of &quot;GET&quot; across all HTTP instrumentations to align with
OpenTelemetry semantic conventions. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8868">#8868</a>)</li>
<li>The default span name formatter in
<code>go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp</code>
now conforms to the OpenTelemetry HTTP semantic conventions for server
span names. (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8871">#8871</a>)
<ul>
<li>The default span name is now <code>{method} {route}</code> (e.g.
<code>GET /foo/{id}</code>) when a route pattern is available, or
<code>{method}</code> (e.g. <code>GET</code>) otherwise.</li>
</ul>
</li>
</ul>
<h3>Removed</h3>
<ul>
<li>Remove the deprecated <code>WithSpanOptions</code> option in
<code>go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc</code>.
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8991">#8991</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="03b2bcdb54"><code>03b2bcd</code></a>
Release v1.44.0/v2.5.1/v0.69.0/v0.37.1/v0.24.0/v0.19.0/v0.16.1/v0.16.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9033">#9033</a>)</li>
<li><a
href="80c46d4037"><code>80c46d4</code></a>
chore(deps): update module github.com/alecthomas/chroma/v2 to v2.26.0
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9034">#9034</a>)</li>
<li><a
href="51f292197d"><code>51f2921</code></a>
fix(deps): update module github.com/hetznercloud/hcloud-go/v2 to v2.41.2
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9026">#9026</a>)</li>
<li><a
href="db82162f1b"><code>db82162</code></a>
fix(deps): update aws-sdk-go-v2 monorepo (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9031">#9031</a>)</li>
<li><a
href="5a3e533d8c"><code>5a3e533</code></a>
fix(deps): update module github.com/aws/smithy-go to v1.26.0 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9032">#9032</a>)</li>
<li><a
href="c67843c753"><code>c67843c</code></a>
otelhttp: Remove custom wrapper after handling request (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/6914">#6914</a>)</li>
<li><a
href="c0a4135228"><code>c0a4135</code></a>
docs(otelhttptrace): add performance guidance for WithoutSubSpans (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8785">#8785</a>)</li>
<li><a
href="a51a86790e"><code>a51a867</code></a>
otelconf: implement cardinality_limits support in PeriodicMetricReader
(<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8885">#8885</a>)</li>
<li><a
href="dead6e50fc"><code>dead6e5</code></a>
chore(deps): update module go.yaml.in/yaml/v2 to v2.4.4 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/8994">#8994</a>)</li>
<li><a
href="979ce18575"><code>979ce18</code></a>
chore(deps): update module github.com/jgautheron/goconst to v1.10.2 (<a
href="https://redirect.github.com/open-telemetry/opentelemetry-go-contrib/issues/9030">#9030</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/open-telemetry/opentelemetry-go-contrib/compare/zpages/v0.68.0...zpages/v0.69.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=go.opentelemetry.io/contrib/instrumentation/runtime&package-manager=go_modules&previous-version=0.68.0&new-version=0.69.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-04 16:02:25 -04:00
Wolfe-James
685e354b2f
feat: add cargo (crates.io) as a package registry type (#1207)
> **Update — 2026-06-01 (commit 1f3be53)**
>
> - **All @P4ST4S review feedback addressed** — positive-path hermetic
mock + live anchor against `rust-faf-mcp v0.3.1`; 5xx routed as
transient; doc comment qualified. See the [close-out
comment](https://github.com/modelcontextprotocol/registry/pull/1207#issuecomment-4589711057)
for the per-item breakdown.
> - **Runtime-model question RESOLVED** — `package-types.mdx` documents
cargo and MCPB as both first-class Rust MCP distribution paths (cargo
for source-distributed, MCPB for prebuilt-binary). The "Open question"
section below was the original draft framing; the doc now ships the
resolution.
> - **Cargo-specific gotcha discovered and documented** — crates.io
strips HTML comments during README rendering, unlike PyPI/NuGet.
`package-types.mdx` now spells this out so cargo authors don't ship
invisible mcp-name tokens (which is exactly what happened to
`rust-faf-mcp v0.3.0`; fixed in v0.3.1).
> - **Stale reference removed in this update** — the "Out of scope" line
mentioning `docs/guides/publishing/publish-cargo.md` pointed at a path
that doesn't exist. The canonical per-type doc is
`docs/modelcontextprotocol-io/package-types.mdx`; the Cargo section has
been added there directly.
> - **Two real-world Rust MCP servers queued for day-one register**:
`rust-faf-mcp v0.3.1` (live, end-to-end validated by the new live test)
and `perfetto-mcp-rs` ([@0xZOne](https://github.com/0xZOne) in #1055).
> - **Tests:** 19/19 cargo tests pass (16 existing + 2 hermetic + 1 live
anchor). `make validate` clean. `golangci-lint` 0 issues.

---

Adds support for `registryType: cargo` so Rust MCP servers published to
crates.io can be registered through the
documented validation flow rather than the MCPB binary-packaging
workaround. Closes #1055.

  ## Motivation and Context

#1055 noted that crates.io has ~1,800 MCP-related packages with no
direct path into the registry — only the MCPB
binary-packaging workaround. This PR adds first-class support for cargo
as a package registry type: schema +
API surface, validator, integration tests, and a documented example. The
publishing guide
(`docs/guides/publishing/publish-cargo.md`) follows on this branch once
the runtime-model direction in
  **Additional context** is settled.

  ## How Has This Been Tested?

- **`make validate`** — clean. Schema-vs-openapi sync verified; 17/17
examples in `generic-server-json.md`
validate against the schema; `expectedServerJSONCount` bumped 16 → 17 to
match the new Cargo example.
- **`go test ./internal/validators/...`** — passes. 16 cargo validator
sub-cases across 4 test functions, run
  against real crates.io (~2.5s wall):
    - Input validation rejection paths
- Registry-baseURL rejection (4 variants: different host, trailing
slash, http-not-https, subdomain typo)
- Ownership validation against real crates (`serde`, `tokio`, `rand`) —
all correctly rejected for missing
  `mcp-name` token
- Server-name format variations (canonical `io.github.OWNER/REPO`,
multi-hyphen, underscore, numeric suffix)
- **Positive-path test** — gated on `rust-faf-mcp` v0.2.3+ being
published with `mcp-name:
io.github.Wolfe-Jam/rust-faf-mcp` in its README. Reserved as a TODO in
`cargo_test.go`; uncomments to become the
   live anchor once that publish lands.
- **Local `make test-unit`** — not run due to a Go toolchain version
quirk on my workstation (project
auto-downloads 1.26.0; my local `go` is 1.25.6, causing compile
mismatch). CI will exercise the full
  PostgreSQL-backed suite.

  ## Breaking Changes

None. This is an additive change — `cargo` joins the supported
`registryType` enum alongside
`npm`/`pypi`/`nuget`/`oci`/`mcpb`. Existing publishes continue to work
unchanged.

  ## Types of changes

  - [x] New feature (non-breaking change which adds functionality)
- [x] Documentation update (new Cargo example in
`generic-server-json.md`)

  ## Checklist

- [x] I have read the [MCP
Documentation](https://modelcontextprotocol.io)
  - [x] My code follows the repository's style guidelines
  - [x] New and existing tests pass locally
  - [x] I have added appropriate error handling
  - [x] I have added or updated documentation as needed

  ## Additional context

  ### Validator design — two-call retrieval on the documented API

`internal/validators/registries/cargo.go` mirrors the PyPI validator's
README-token approach (substring-match
`mcp-name: <serverName>`), with a two-call retrieval pattern to stay on
the documented public crates.io API:

1. `GET /api/v1/crates/{name}/{version}/readme` returns 200 OK with a
JSON pointer (`{"url":
"https://static.crates.io/readmes/.../...html"}`) — crates.io hands us
the URL rather than emitting a 302.
2. Follow the pointer to the rendered HTML; substring-match for the
token.

The two-call pattern stays on the documented public surface. The CDN URL
layout is observed-stable, but treating
it as the entry point would mean depending on an undocumented path. With
two calls, crates.io controls where
the README lives — if they move it, the metadata endpoint hands us the
new URL.

Missing crates and missing versions surface as **403** from the CDN
(S3's default for missing keys), not 404.
The validator treats any non-200 as "not found" and surfaces the actual
status code in the error message.

  ### Open question — runtime model

Cargo's runtime model is genuinely different from npm/PyPI/NuGet. `cargo
install` is one-time (binary lands on
PATH at `~/.cargo/bin`), not per-invocation like `npx`, `uvx`, or `dnx`
(the new one in .NET 10 SDK Preview 6+).
The new Cargo example in `generic-server-json.md` annotates this
honestly and omits `runtimeHint`.

If a different framing is preferred — e.g. recommending **MCPB**
(prebuilt binary distribution via GitHub
Releases) as the primary path for Rust MCP servers instead of cargo —
happy to adjust the documentation
accordingly. The schema + validator code in this PR is **additive** and
doesn't force a recommendation either
way; a Rust author who chooses cargo can use it, and one who prefers
MCPB still can.

  ### Out of scope (deferred)

- **`docs/guides/publishing/publish-cargo.md`** — follows on this branch
once the runtime-model direction above
  is settled.
- **Publisher CLI `Cargo.toml` autodetect** in
`cmd/publisher/commands/init.go` — separate concern, separate PR.
- **Positive-path validator test** — gated on `rust-faf-mcp` v0.2.3+
publishing as noted in *How Has This Been
  Tested?*.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-06-03 10:56:43 -04:00
dependabot[bot]
5d91ce7c2e
build(deps): bump the opentelemetry group with 5 updates (#1311) 2026-05-31 03:23:00 -04:00
dependabot[bot]
3a8e5428db
build(deps): bump github.com/Azure/azure-sdk-for-go/sdk/security/keyvault/azkeys from 1.4.0 to 1.5.0 (#1312) 2026-05-31 03:22:40 -04:00
dependabot[bot]
51f37e8de5
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.242.0 to 3.243.0 in /deploy (#1313) 2026-05-31 03:22:20 -04:00
dependabot[bot]
224f50288d
build(deps): bump the actions group with 2 updates (#1314) 2026-05-31 03:21:50 -04:00
Tadas Antanavicius
b97cc9fbd6
docs: update maintainer/collaborator matrix in README (#1324) 2026-05-31 03:20:31 -04:00
dependabot[bot]
f0f03c0127
build(deps): bump github.com/pulumi/pulumi-kubernetes/sdk/v4 from 4.30.0 to 4.31.1 in /deploy (#1298)
Bumps
[github.com/pulumi/pulumi-kubernetes/sdk/v4](https://github.com/pulumi/pulumi-kubernetes)
from 4.30.0 to 4.31.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi-kubernetes/releases">github.com/pulumi/pulumi-kubernetes/sdk/v4's
releases</a>.</em></p>
<blockquote>
<h2>v4.31.1</h2>
<h2>Changed</h2>
<ul>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4364">pulumi/pulumi-kubernetes#4364</a>
Update github.com/go-git/go-git/v5 to v5.19.1 (SECURITY).</li>
<li>Update first-party Pulumi dependencies to v3.242.0. which fixes <a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4354">pulumi/pulumi-kubernetes#4354</a></li>
</ul>
<h2>v4.31.0</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/2744">#2744</a>
Advertise a <code>helm</code> mapping for <code>terraform</code>
conversion so <code>pulumi import --from terraform</code> and
<code>pulumi convert --from terraform</code> recognize
<code>helm_release</code> and emit
<code>kubernetes:helm.sh/v3:Release</code>.</li>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4332">#4332</a>
Implement the <code>List</code> provider RPC and advertise
<code>listInputs</code> (<code>namespace</code>, <code>name</code>,
<code>labelSelector</code>, <code>fieldSelector</code>) on every
non-nested resource. <code>namespace</code> is omitted from
<code>listInputs</code> on cluster-scoped kinds. See <a
href="https://github.com/pulumi/pulumi-kubernetes/blob/HEAD/docs/list-rpc-semantics.md"><code>https://github.com/pulumi/pulumi-kubernetes/blob/HEAD/docs/list-rpc-semantics.md</code></a>
for design notes.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4261">#4261</a>
Fix CRD parameterization: implement <code>Parameterize(Value)</code> so
subsequent runs can reconstruct the CRD schema from saved state, and
flatten array-of-objects in OpenAPI specs so nested fields like
<code>spec.listeners</code> generate typed args.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade Kubernetes schema and libraries to v1.36.1.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi-kubernetes/blob/master/CHANGELOG.md">github.com/pulumi/pulumi-kubernetes/sdk/v4's
changelog</a>.</em></p>
<blockquote>
<h2>4.31.1 (May 19, 2026)</h2>
<h3>Changed</h3>
<ul>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4364">#4364</a>
Update <code>github.com/go-git/go-git/v5</code> to v5.19.1
(SECURITY).</li>
<li>Update first-party Pulumi dependencies to v3.242.0.</li>
</ul>
<h2>4.31.0 (May 14, 2026)</h2>
<h3>Added</h3>
<ul>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/2744">#2744</a>
Advertise a <code>helm</code> mapping for <code>terraform</code>
conversion so <code>pulumi import --from terraform</code> and
<code>pulumi convert --from terraform</code> recognize
<code>helm_release</code> and emit
<code>kubernetes:helm.sh/v3:Release</code>.</li>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4332">#4332</a>
Implement the <code>List</code> provider RPC and advertise
<code>listInputs</code> (<code>namespace</code>, <code>name</code>,
<code>labelSelector</code>, <code>fieldSelector</code>) on every
non-nested resource. <code>namespace</code> is omitted from
<code>listInputs</code> on cluster-scoped kinds. See <a
href="https://github.com/pulumi/pulumi-kubernetes/blob/master/docs/list-rpc-semantics.md"><code>https://github.com/pulumi/pulumi-kubernetes/blob/master/docs/list-rpc-semantics.md</code></a>
for design notes.</li>
</ul>
<h3>Fixed</h3>
<ul>
<li><a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/pull/4261">#4261</a>
Fix CRD parameterization: implement <code>Parameterize(Value)</code> so
subsequent runs can reconstruct the CRD schema from saved state, and
flatten array-of-objects in OpenAPI specs so nested fields like
<code>spec.listeners</code> generate typed args.</li>
</ul>
<h3>Changed</h3>
<ul>
<li>Upgrade Kubernetes schema and libraries to v1.36.1.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7bc3a67047"><code>7bc3a67</code></a>
Prepare for v4.31.1 release (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4366">#4366</a>)</li>
<li><a
href="1f5b4d26d1"><code>1f5b4d2</code></a>
Update first-party Pulumi dependencies to v3.242.0 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4365">#4365</a>)</li>
<li><a
href="e8f0d87ff0"><code>e8f0d87</code></a>
Update module github.com/go-git/go-git/v5 to v5.19.1 [SECURITY] (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4364">#4364</a>)</li>
<li><a
href="51e8420867"><code>51e8420</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4361">#4361</a>)</li>
<li><a
href="ccadf5581c"><code>ccadf55</code></a>
Update first-party Pulumi dependencies to v3.241.0 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4360">#4360</a>)</li>
<li><a
href="e0ac4d30bc"><code>e0ac4d3</code></a>
Bump kind 0.29.0 → 0.31.0 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4358">#4358</a>)</li>
<li><a
href="6b10bbea2f"><code>6b10bbe</code></a>
Update GitHub Actions workflows. (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4353">#4353</a>)</li>
<li><a
href="ee00284e93"><code>ee00284</code></a>
Update module github.com/pulumi/esc to v0.24.0 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4351">#4351</a>)</li>
<li><a
href="ed357fb97f"><code>ed357fb</code></a>
Fix duplicate ### Changed heading in k8s auto-bump workflow (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4345">#4345</a>)</li>
<li><a
href="52169e815f"><code>52169e8</code></a>
Update first-party Pulumi dependencies to v4.31.0 (<a
href="https://redirect.github.com/pulumi/pulumi-kubernetes/issues/4349">#4349</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi-kubernetes/compare/v4.30.0...v4.31.1">compare
view</a></li>
</ul>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-05-25 07:09:26 -04:00
Radoslav Dimitrov
66cc039fac
build(deps): bump golang.org/x/net to v0.55.0 (#1308)
## Summary
- Bumps `golang.org/x/net` from v0.53.0 to v0.55.0 to fix
[GO-2026-5026](https://pkg.go.dev/vuln/GO-2026-5026) (failure to reject
ASCII-only Punycode-encoded labels in `golang.org/x/net/idna`).
- govulncheck flagged the vuln via `auth.DefaultHTTPKeyFetcher.FetchKey`
→ `http.Client.Do` → `idna.ToASCII` at
`internal/api/handlers/v0/auth/http.go:191`.
- Also brings in associated `x/crypto`, `x/sys`, `x/text` bumps via `go
mod tidy`.

This unblocks open dependabot PRs (e.g. #1298) that are failing CI on
the same govulncheck finding despite not touching the root module.

## Test plan
- [x] `go build ./...`
- [x] `govulncheck` no longer reports GO-2026-5026 locally
- [ ] CI passes

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 07:02:10 -04:00
dependabot[bot]
5fe2c79e5c
build(deps): bump goreleaser/goreleaser-action from 7.2.1 to 7.2.2 in the actions group (#1299)
Bumps the actions group with 1 update:
[goreleaser/goreleaser-action](https://github.com/goreleaser/goreleaser-action).

Updates `goreleaser/goreleaser-action` from 7.2.1 to 7.2.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/goreleaser/goreleaser-action/releases">goreleaser/goreleaser-action's
releases</a>.</em></p>
<blockquote>
<h2>v7.2.2</h2>
<h2>What's Changed</h2>
<ul>
<li>ci(deps): bump the actions group with 3 updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/560">goreleaser/goreleaser-action#560</a></li>
<li>fix: nightly resolution to select newest published release by <a
href="https://github.com/Copilot"><code>@​Copilot</code></a> in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/562">goreleaser/goreleaser-action#562</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/Copilot"><code>@​Copilot</code></a> made
their first contribution in <a
href="https://redirect.github.com/goreleaser/goreleaser-action/pull/562">goreleaser/goreleaser-action#562</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/goreleaser/goreleaser-action/compare/v7...v7.2.2">https://github.com/goreleaser/goreleaser-action/compare/v7...v7.2.2</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="5daf1e915a"><code>5daf1e9</code></a>
fix: nightly resolution to select newest published release (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/562">#562</a>)</li>
<li><a
href="5cc7ebb73d"><code>5cc7ebb</code></a>
ci: update actions</li>
<li><a
href="702f5f91c9"><code>702f5f9</code></a>
ci(deps): bump the actions group with 3 updates (<a
href="https://redirect.github.com/goreleaser/goreleaser-action/issues/560">#560</a>)</li>
<li>See full diff in <a
href="1a80836c5c...5daf1e915a">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=goreleaser/goreleaser-action&package-manager=github_actions&previous-version=7.2.1&new-version=7.2.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-25 06:43:29 -04:00
dependabot[bot]
a23a518592
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.238.0 to 3.242.0 in /deploy (#1297)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.238.0 to 3.242.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.242.0</h2>
<h2>3.242.0 (2026-05-19)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[cli] Add a <code>pulumi</code> package for npx support</p>
</li>
<li>
<p>[cli] Add the <code>pulumi org member edit</code> command
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23235">#23235</a></p>
</li>
<li>
<p>[cli] Add the <code>pulumi org member remove</code> command
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23237">#23237</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi deployment get</code> to retrieve
details for a specific deployment
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23238">#23238</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi insights account scan get
&lt;account&gt; &lt;scan-id&gt;</code> to show the full workflow run for
a single Insights scan
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23255">#23255</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi insights account scan list
&lt;account&gt;</code> to discover recent scan IDs to feed into
<code>pulumi insights account scan log</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23255">#23255</a></p>
</li>
<li>
<p>[cli/deployment] Add dedicated flags for each deployment setting
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23236">#23236</a></p>
</li>
<li>
<p>[cli/do] Add the start of <code>pulumi do</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23176">#23176</a></p>
</li>
<li>
<p>[cli/neo] Add <code>--print</code>/<code>-p</code> to <code>pulumi
neo</code> to run a single prompt non-interactively and print the
agent's final response to stdout
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23245">#23245</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>[cli/cloud] Fix <code>pulumi insights account scan log --all</code>
to follow the server's pagination cursor through the end of the log, and
render <code>--job/--step</code> mode as structured lines instead of an
empty raw-string blob
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23256">#23256</a></p>
</li>
<li>
<p>[sdk] Close gzip.Writer in archiveTarGZIP to produce valid tar.gz
output
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23240">#23240</a></p>
</li>
<li>
<p>[sdkgen/python] Fix usage of ArgsDict types in typed dictionaries
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23253">#23253</a></p>
</li>
</ul>
<h2>v3.241.0</h2>
<h2>3.241.0 (2026-05-18)</h2>
<h3>Features</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.242.0 (2026-05-19)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[cli] Add a <code>pulumi</code> package for npx support</p>
</li>
<li>
<p>[cli] Add the <code>pulumi org member edit</code> command
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23235">#23235</a></p>
</li>
<li>
<p>[cli] Add the <code>pulumi org member remove</code> command
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23237">#23237</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi deployment get</code> to retrieve
details for a specific deployment
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23238">#23238</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi insights account scan get
&lt;account&gt; &lt;scan-id&gt;</code> to show the full workflow run for
a single Insights scan
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23255">#23255</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi insights account scan list
&lt;account&gt;</code> to discover recent scan IDs to feed into
<code>pulumi insights account scan log</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23255">#23255</a></p>
</li>
<li>
<p>[cli/deployment] Add dedicated flags for each deployment setting
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23236">#23236</a></p>
</li>
<li>
<p>[cli/do] Add the start of <code>pulumi do</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23176">#23176</a></p>
</li>
<li>
<p>[cli/neo] Add <code>--print</code>/<code>-p</code> to <code>pulumi
neo</code> to run a single prompt non-interactively and print the
agent's final response to stdout
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23245">#23245</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>[cli/cloud] Fix <code>pulumi insights account scan log --all</code>
to follow the server's pagination cursor through the end of the log, and
render <code>--job/--step</code> mode as structured lines instead of an
empty raw-string blob
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23256">#23256</a></p>
</li>
<li>
<p>[sdk] Close gzip.Writer in archiveTarGZIP to produce valid tar.gz
output
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23240">#23240</a></p>
</li>
<li>
<p>[sdkgen/python] Fix usage of ArgsDict types in typed dictionaries
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23253">#23253</a></p>
</li>
</ul>
<h2>3.241.0 (2026-05-18)</h2>
<h3>Features</h3>
<ul>
<li>[cli] Add <code>--output json</code> to <code>pulumi preview</code>
for a structured JSON summary of the operation result
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22927">#22927</a></li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="f4db8b5f55"><code>f4db8b5</code></a>
Upgrade Pulumi HCL to v0.3.2 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23261">#23261</a>)</li>
<li><a
href="cd682b849c"><code>cd682b8</code></a>
cli: add a <code>pulumi</code> package for npx support (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23145">#23145</a>)</li>
<li><a
href="e8364996b7"><code>e836499</code></a>
cli/neo: set AI_AGENT=neo for shell-tool child processes (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23251">#23251</a>)</li>
<li><a
href="2560b9015f"><code>2560b90</code></a>
unhide <code>org usage</code> command tree (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23259">#23259</a>)</li>
<li><a
href="4588160dba"><code>4588160</code></a>
unhide <code>org member</code> commands (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23257">#23257</a>)</li>
<li><a
href="f821c0dfc7"><code>f821c0d</code></a>
unhide <code>org role</code> commands (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23258">#23258</a>)</li>
<li><a
href="9356340a67"><code>9356340</code></a>
docs(contributing): minor grammar fixes (<code>PR</code> -&gt;
<code>PRs</code>, <code>Here's</code> -&gt; `Here are...</li>
<li><a
href="3779d16c8b"><code>3779d16</code></a>
unhide <code>org member</code> (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23241">#23241</a>)</li>
<li><a
href="c28bf15134"><code>c28bf15</code></a>
unhide a couple <code>stack</code> commands (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23243">#23243</a>)</li>
<li><a
href="90caf84946"><code>90caf84</code></a>
cli/cloud: fix <code>pulumi insights account scan log</code> pagination
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/23256">#23256</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.238.0...v3.242.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.238.0&new-version=3.242.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-25 06:42:44 -04:00
dependabot[bot]
3a8d268a87
build(deps): bump github.com/danielgtaylor/huma/v2 from 2.37.3 to 2.38.0 (#1296)
Bumps
[github.com/danielgtaylor/huma/v2](https://github.com/danielgtaylor/huma)
from 2.37.3 to 2.38.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/danielgtaylor/huma/releases">github.com/danielgtaylor/huma/v2's
releases</a>.</em></p>
<blockquote>
<h2>v2.38.0</h2>
<h2>Overview</h2>
<h3>Fiber v3</h3>
<p>This release adds support for Fiber v3. Dedicated v2 functions have
been added to ensure support for both.</p>
<h2>What's Changed</h2>
<ul>
<li>Fix header regression by <a
href="https://github.com/wolveix"><code>@​wolveix</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1007">danielgtaylor/huma#1007</a></li>
<li>feat(humafiber): add Fiber v3 support by <a
href="https://github.com/wheinze"><code>@​wheinze</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/962">danielgtaylor/huma#962</a></li>
<li>Accept empty base64 inputs by <a
href="https://github.com/wolveix"><code>@​wolveix</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1013">danielgtaylor/huma#1013</a></li>
<li>chore(deps): bump github.com/gofiber/fiber/v3 from 3.1.0 to 3.2.0 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1018">danielgtaylor/huma#1018</a></li>
<li>Propagate underlying context to GET/PUT requests in the autopatch
handler by <a
href="https://github.com/alixinne"><code>@​alixinne</code></a> in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1019">danielgtaylor/huma#1019</a></li>
<li>chore(deps): bump github.com/gofiber/fiber/v2 from 2.52.12 to
2.52.13 by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1022">danielgtaylor/huma#1022</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/wheinze"><code>@​wheinze</code></a> made
their first contribution in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/962">danielgtaylor/huma#962</a></li>
<li><a href="https://github.com/alixinne"><code>@​alixinne</code></a>
made their first contribution in <a
href="https://redirect.github.com/danielgtaylor/huma/pull/1019">danielgtaylor/huma#1019</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/danielgtaylor/huma/compare/v2.37.3...v2.38.0">https://github.com/danielgtaylor/huma/compare/v2.37.3...v2.38.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="c3f1651842"><code>c3f1651</code></a>
chore(deps): bump github.com/gofiber/fiber/v2 from 2.52.12 to 2.52.13
(<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1022">#1022</a>)</li>
<li><a
href="0dc6f40339"><code>0dc6f40</code></a>
Propagate underlying context to GET/PUT requests in the autopatch
handler (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1">#1</a>...</li>
<li><a
href="ce91c48843"><code>ce91c48</code></a>
chore(deps): bump github.com/gofiber/fiber/v3 from 3.1.0 to 3.2.0 (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1018">#1018</a>)</li>
<li><a
href="8fb47ee68a"><code>8fb47ee</code></a>
Accept empty base64 inputs (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1013">#1013</a>)</li>
<li><a
href="e2db596bb5"><code>e2db596</code></a>
feat(humafiber): add Fiber v3 support (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/962">#962</a>)</li>
<li><a
href="b2d8a3a98a"><code>b2d8a3a</code></a>
Fix header regression (<a
href="https://redirect.github.com/danielgtaylor/huma/issues/1007">#1007</a>)</li>
<li>See full diff in <a
href="https://github.com/danielgtaylor/huma/compare/v2.37.3...v2.38.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/danielgtaylor/huma/v2&package-manager=go_modules&previous-version=2.37.3&new-version=2.38.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-25 06:42:29 -04:00
dependabot[bot]
b90f63f52c
build(deps): bump github.com/google/go-containerregistry from 0.21.5 to 0.21.6 (#1295)
Bumps
[github.com/google/go-containerregistry](https://github.com/google/go-containerregistry)
from 0.21.5 to 0.21.6.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/google/go-containerregistry/releases">github.com/google/go-containerregistry's
releases</a>.</em></p>
<blockquote>
<h2>v0.21.6</h2>
<h2>What's Changed</h2>
<ul>
<li>fix: update dependencies to use new azure sdk components by <a
href="https://github.com/gaganhr94"><code>@​gaganhr94</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2262">google/go-containerregistry#2262</a></li>
<li>transport: restore resp.Body in retryError so CheckError can parse
it by <a
href="https://github.com/alliasgher"><code>@​alliasgher</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2264">google/go-containerregistry#2264</a></li>
<li>pkg/registry: return 202 Accepted for PATCH chunk uploads by <a
href="https://github.com/alliasgher"><code>@​alliasgher</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2265">google/go-containerregistry#2265</a></li>
<li>Follow OCI distribution spec for artifactType and annotations by <a
href="https://github.com/malt3"><code>@​malt3</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2269">google/go-containerregistry#2269</a></li>
<li>actions: attach Codecov token to coverage tests on main by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2270">google/go-containerregistry#2270</a></li>
<li>remote: use DeleteScope (with &quot;delete&quot; action) for
manifest deletion by <a
href="https://github.com/alliasgher"><code>@​alliasgher</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2266">google/go-containerregistry#2266</a></li>
<li>remote: limit concurrent layer pulls by <a
href="https://github.com/gnix0"><code>@​gnix0</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2271">google/go-containerregistry#2271</a></li>
<li>pkg/registry: reject corrupt disk blobs by <a
href="https://github.com/gnix0"><code>@​gnix0</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2272">google/go-containerregistry#2272</a></li>
<li>mutate: close layer readers during export by <a
href="https://github.com/gnix0"><code>@​gnix0</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2277">google/go-containerregistry#2277</a></li>
<li>crane/flatten: preserve image media type when flattening by <a
href="https://github.com/alliasgher"><code>@​alliasgher</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2267">google/go-containerregistry#2267</a></li>
<li>build(deps): bump goreleaser/goreleaser-action from 7.0.0 to 7.2.1
in the actions group across 1 directory by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2273">google/go-containerregistry#2273</a></li>
<li>build(deps): bump go.opentelemetry.io/otel from 1.36.0 to 1.41.0 by
<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2278">google/go-containerregistry#2278</a></li>
<li>build(deps): bump the go-deps group across 3 directories with 6
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2280">google/go-containerregistry#2280</a></li>
<li>Replace go-homedir with os.UserHomeDir by <a
href="https://github.com/jammie-jelly"><code>@​jammie-jelly</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2282">google/go-containerregistry#2282</a></li>
<li>pkg/name: only treat .localhost as non-HTTPS, not .local by <a
href="https://github.com/blackwell-systems"><code>@​blackwell-systems</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2281">google/go-containerregistry#2281</a></li>
<li>transport: block unspecified IPs (0.0.0.0, ::) in validateRealmURL
by <a href="https://github.com/marwan9696"><code>@​marwan9696</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2285">google/go-containerregistry#2285</a></li>
<li>test(mutate): add Extract round-trip test for filesystem object
preservation by <a
href="https://github.com/blackwell-systems"><code>@​blackwell-systems</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2283">google/go-containerregistry#2283</a></li>
<li>experiments: remove deprecated support for estargz by <a
href="https://github.com/thaJeztah"><code>@​thaJeztah</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2288">google/go-containerregistry#2288</a></li>
<li>build(deps): bump aws-actions/configure-aws-credentials from 6.1.0
to 6.1.1 in the actions group by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2289">google/go-containerregistry#2289</a></li>
<li>fix: limit HTTP response body reads to prevent OOM by <a
href="https://github.com/evilgensec"><code>@​evilgensec</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2296">google/go-containerregistry#2296</a></li>
<li>build(deps): bump the go-deps group across 3 directories with 6
updates by <a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot]
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2297">google/go-containerregistry#2297</a></li>
<li>transport: block redirects from token server to private/link-local
addresses (SSRF fix) by <a
href="https://github.com/evilgensec"><code>@​evilgensec</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2292">google/go-containerregistry#2292</a></li>
<li>pkg/v1/mutate: preserve relative symlinks that stay within rootfs in
Extract by <a
href="https://github.com/anishesg"><code>@​anishesg</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2279">google/go-containerregistry#2279</a></li>
<li>validate: skip non-layer layers by <a
href="https://github.com/imjasonh"><code>@​imjasonh</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2298">google/go-containerregistry#2298</a></li>
<li>remote: validate foreign layer URLs to prevent SSRF (fixes <a
href="https://redirect.github.com/google/go-containerregistry/issues/2259">#2259</a>)
by <a href="https://github.com/evilgensec"><code>@​evilgensec</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2293">google/go-containerregistry#2293</a></li>
<li>remote: block SSRF via private-IP Location headers in blob uploads
by <a
href="https://github.com/adilburaksen"><code>@​adilburaksen</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2295">google/go-containerregistry#2295</a></li>
<li>fix(mutate): preserve config blob and layers for non-Docker OCI
artifacts by <a
href="https://github.com/blackwell-systems"><code>@​blackwell-systems</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2286">google/go-containerregistry#2286</a></li>
<li>fix: preserve per-occurrence layer identity in mutate.Image.Layers()
by <a href="https://github.com/iahsanGill"><code>@​iahsanGill</code></a>
in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2299">google/go-containerregistry#2299</a></li>
<li>transport: retry HTTP 429 (Too Many Requests) by <a
href="https://github.com/iahsanGill"><code>@​iahsanGill</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2301">google/go-containerregistry#2301</a></li>
<li>transport: allow bearer realm at same host:port as registry by <a
href="https://github.com/iahsanGill"><code>@​iahsanGill</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2302">google/go-containerregistry#2302</a></li>
<li>Update go version to 1.26.3 by <a
href="https://github.com/Subserial"><code>@​Subserial</code></a> in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2300">google/go-containerregistry#2300</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/gaganhr94"><code>@​gaganhr94</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2262">google/go-containerregistry#2262</a></li>
<li><a
href="https://github.com/alliasgher"><code>@​alliasgher</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2264">google/go-containerregistry#2264</a></li>
<li><a href="https://github.com/malt3"><code>@​malt3</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2269">google/go-containerregistry#2269</a></li>
<li><a href="https://github.com/gnix0"><code>@​gnix0</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2271">google/go-containerregistry#2271</a></li>
<li><a
href="https://github.com/blackwell-systems"><code>@​blackwell-systems</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2281">google/go-containerregistry#2281</a></li>
<li><a
href="https://github.com/marwan9696"><code>@​marwan9696</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2285">google/go-containerregistry#2285</a></li>
<li><a href="https://github.com/anishesg"><code>@​anishesg</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2279">google/go-containerregistry#2279</a></li>
<li><a
href="https://github.com/adilburaksen"><code>@​adilburaksen</code></a>
made their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2295">google/go-containerregistry#2295</a></li>
<li><a
href="https://github.com/iahsanGill"><code>@​iahsanGill</code></a> made
their first contribution in <a
href="https://redirect.github.com/google/go-containerregistry/pull/2299">google/go-containerregistry#2299</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/google/go-containerregistry/compare/v0.21.5...v0.21.6">https://github.com/google/go-containerregistry/compare/v0.21.5...v0.21.6</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="53f7e39e15"><code>53f7e39</code></a>
Update go version to 1.26.3 (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2300">#2300</a>)</li>
<li><a
href="bf87c3bfe4"><code>bf87c3b</code></a>
transport: allow bearer realm at same host:port as registry (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2302">#2302</a>)</li>
<li><a
href="c55facddfb"><code>c55facd</code></a>
transport: retry HTTP 429 (Too Many Requests) (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2301">#2301</a>)</li>
<li><a
href="68a569e4a0"><code>68a569e</code></a>
fix: preserve per-occurrence layer identity in Layers() (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2299">#2299</a>)</li>
<li><a
href="35b354b436"><code>35b354b</code></a>
fix(mutate): preserve config blob and layers for non-Docker OCI
artifacts (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2">#2</a>...</li>
<li><a
href="e5983f2a67"><code>e5983f2</code></a>
remote: block SSRF via private-IP Location headers in blob uploads (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2295">#2295</a>)</li>
<li><a
href="6dad820da7"><code>6dad820</code></a>
remote: validate foreign layer URLs to prevent SSRF (fixes <a
href="https://redirect.github.com/google/go-containerregistry/issues/2259">#2259</a>)
(<a
href="https://redirect.github.com/google/go-containerregistry/issues/2293">#2293</a>)</li>
<li><a
href="78bdf1b7e2"><code>78bdf1b</code></a>
validate: skip non-layer layers (<a
href="https://redirect.github.com/google/go-containerregistry/issues/2298">#2298</a>)</li>
<li><a
href="c29d91cdc3"><code>c29d91c</code></a>
pkg/v1/mutate: preserve relative symlinks that stay within rootfs in
Extract ...</li>
<li><a
href="a70d75a691"><code>a70d75a</code></a>
transport: block redirects from token server to private/link-local
addresses ...</li>
<li>Additional commits viewable in <a
href="https://github.com/google/go-containerregistry/compare/v0.21.5...v0.21.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/google/go-containerregistry&package-manager=go_modules&previous-version=0.21.5&new-version=0.21.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-25 06:42:13 -04:00
dependabot[bot]
49cea83c9d
build(deps): bump github.com/go-git/go-git/v5 from 5.19.0 to 5.19.1 in /deploy (#1292)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git)
from 5.19.0 to 5.19.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-git/go-git/releases">github.com/go-git/go-git/v5's
releases</a>.</em></p>
<blockquote>
<h2>v5.19.1</h2>
<h2>What's Changed</h2>
<ul>
<li>v5: plumbing: transport/ssh, Shell-quote path by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2068">go-git/go-git#2068</a></li>
<li>v5: git: submodule, Fix relative URL resolution by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2070">go-git/go-git#2070</a></li>
<li>v5: git: submodule, canonical remote for relative URLs by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2074">go-git/go-git#2074</a></li>
<li>v5: git: submodule, error on remote without URLs by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2078">go-git/go-git#2078</a></li>
<li>v5: plumbing: format/idxfile, Validate offset64 indices by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2084">go-git/go-git#2084</a></li>
<li>v5: *: Reject malformed variable-length integers by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2092">go-git/go-git#2092</a></li>
<li>v5: plumbing: format/packfile, Tighten delta validation by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2091">go-git/go-git#2091</a></li>
<li>v5: Add <code>worktreeFilesystem</code> wrapper for worktree and
hardening by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2100">go-git/go-git#2100</a></li>
<li>v5: config: validate submodule names by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2082">go-git/go-git#2082</a></li>
<li>build: Update module github.com/go-git/go-git/v5 to v5.19.0
[SECURITY] (releases/v5.x) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2111">go-git/go-git#2111</a></li>
<li>v5: git: Allow MkdirAll on worktree-root paths by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2117">go-git/go-git#2117</a></li>
<li>v5: git: Stop validating symlink target paths by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2116">go-git/go-git#2116</a></li>
<li>v5: plumbing: format decoder input bounds and contracts by <a
href="https://github.com/hiddeco"><code>@​hiddeco</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2125">go-git/go-git#2125</a></li>
<li>plumbing: format/packfile, cap delta chain depth in parser by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2137">go-git/go-git#2137</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-git/go-git/compare/v5.19.0...v5.19.1">https://github.com/go-git/go-git/compare/v5.19.0...v5.19.1</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="3c3be601aa"><code>3c3be60</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2137">#2137</a>
from go-git/validate-v5</li>
<li><a
href="3fba897bd9"><code>3fba897</code></a>
plumbing: format/packfile, cap delta chain depth in parser</li>
<li><a
href="a97d6601c8"><code>a97d660</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2125">#2125</a>
from hiddeco/v5/format-input-bounds</li>
<li><a
href="aeaa125c8a"><code>aeaa125</code></a>
plumbing: format/objfile, require Header before Read</li>
<li><a
href="1f38e17121"><code>1f38e17</code></a>
plumbing: format/packfile, bound inflate size</li>
<li><a
href="f7545a0252"><code>f7545a0</code></a>
plumbing: format/idxfile, bound nr by file size</li>
<li><a
href="170b88181f"><code>170b881</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2116">#2116</a>
from pjbgf/symlink-v5</li>
<li><a
href="7b6d994467"><code>7b6d994</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2117">#2117</a>
from hiddeco/v5/worktree-fs-mkdirall-root-noop</li>
<li><a
href="f0709b32f8"><code>f0709b3</code></a>
git: Stop validating symlink target paths</li>
<li><a
href="776d00f11d"><code>776d00f</code></a>
git: Allow MkdirAll on worktree-root paths</li>
<li>Additional commits viewable in <a
href="https://github.com/go-git/go-git/compare/v5.19.0...v5.19.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-git/go-git/v5&package-manager=go_modules&previous-version=5.19.0&new-version=5.19.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/registry/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-25 06:41:58 -04:00
Radoslav Dimitrov
deb5e7b24a
chore(deps): reduce dependabot frequency from daily to weekly (#1284)
## Summary
- Dependency update PRs were arriving daily across gomod (root +
`/deploy`), github-actions, and docker — creating significant review
noise.
- Switch all four update entries in `.github/dependabot.yml` from
`interval: daily` to `interval: weekly` so they batch on a weekly
cadence (Dependabot defaults to Mondays).

## Test plan
- [ ] Confirm `.github/dependabot.yml` parses correctly (Dependabot will
report a config error on the repo if not)
- [ ] Observe that new dependency PRs stop appearing daily after merge

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 08:09:05 -04:00
dependabot[bot]
4819463aaa
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.237.0 to 3.238.0 in /deploy (#1283)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.237.0 to 3.238.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.238.0</h2>
<h2>3.238.0 (2026-05-13)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[cli] Add a <code>--language</code> flag to <code>pulumi package
add</code> to run outside a Pulumi project or plugin
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22791">#22791</a></p>
</li>
<li>
<p>[cli] Add <code>--output json</code> to <code>pulumi up</code> for a
structured JSON summary of the operation result
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22870">#22870</a></p>
</li>
<li>
<p>[cli] Recommend <code>pulumi cloud api describe</code> in
<code>pulumi cloud api --help</code> to verify operation parameters
before calling
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22881">#22881</a></p>
</li>
<li>
<p>[cli] Add <code>pulumi stack webhook list</code> to list all webhooks
configured for a stack
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23082">#23082</a></p>
</li>
<li>
<p>[cli/cloud] Rename <code>pulumi cloud api</code> to <code>pulumi
api</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22970">#22970</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi insights resource get</code> to look up
a single resource discovered by Pulumi Insights
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23077">#23077</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi template list</code> to list
registry-backed templates
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23074">#23074</a></p>
</li>
<li>
<p>[cli/cloud] Rename the <code>--format</code> flag to
<code>--output</code> on <code>pulumi api</code> and its subcommands
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23072">#23072</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi insights resource search</code> to
search for resources discovered by Pulumi Insights
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23087">#23087</a></p>
</li>
<li>
<p>[cli/engine] Add <code>--skip-plugin-pre-install</code> to skip
up-front plugin installation</p>
</li>
<li>
<p>[engine] Fail the deployment when an after hook fails
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22935">#22935</a></p>
</li>
<li>
<p>[cli/neo] Render the agent's TODO list in the <code>pulumi neo</code>
TUI
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22864">#22864</a></p>
</li>
<li>
<p>[cli/neo] Add <code>--approval-mode</code> and
<code>--permission-mode</code> flags to <code>pulumi neo</code>, with
Ctrl+A and Ctrl+R hotkeys to switch modes mid-session
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22950">#22950</a></p>
</li>
<li>
<p>[cli/package] When invoked by an AI coding agent, print <code>pulumi
api</code> pointers after <code>pulumi package add</code> and
<code>pulumi package gen-sdk</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22904">#22904</a></p>
</li>
<li>
<p>[pkg/testing] Recognize the <code>hcl</code> and <code>pcl</code>
runtimes in <code>integration.ProgramTest</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/23018">#23018</a></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog</h1>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="71ddfb54af"><code>71ddfb5</code></a>
Allow skipping up-front provider plugin installs for engine commands (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22947">#22947</a>)</li>
<li><a
href="f3da388a16"><code>f3da388</code></a>
[cli/import] Strip InputType after union reduction in structural typing
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/23115">#23115</a>)</li>
<li><a
href="11a5257851"><code>11a5257</code></a>
Neo auto-approve switch (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22950">#22950</a>)</li>
<li><a
href="3dd972cdad"><code>3dd972c</code></a>
Bump language providers (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23103">#23103</a>)</li>
<li><a
href="b88c0b2670"><code>b88c0b2</code></a>
Add l1-config-types-optional conformance test (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23108">#23108</a>)</li>
<li><a
href="4b708ecb32"><code>4b708ec</code></a>
Add registerPackage helper to cache package references per deployment
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/23014">#23014</a>)</li>
<li><a
href="c7ddd569b7"><code>c7ddd56</code></a>
cli/cloud: add <code>pulumi insights resource search</code> (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23087">#23087</a>)</li>
<li><a
href="3b02eb9846"><code>3b02eb9</code></a>
Update module github.com/go-git/go-git/v5 to v5.19.0 [SECURITY] (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22971">#22971</a>)</li>
<li><a
href="81026a0c40"><code>81026a0</code></a>
[cli/package] Use --output=markdown in package-add docs hint (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23098">#23098</a>)</li>
<li><a
href="69d216cd03"><code>69d216c</code></a>
unflake TestConstructUnknownPython (<a
href="https://redirect.github.com/pulumi/pulumi/issues/23086">#23086</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.237.0...v3.238.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.237.0&new-version=3.238.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-14 08:01:51 -04:00
Radoslav Dimitrov
4f75308d17
deploy: update prod to v1.7.9 (#1282)
Promotes
[v1.7.9](https://github.com/modelcontextprotocol/registry/releases/tag/v1.7.9)
to production. Includes the OCI validator fail-closed fix from #1281.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 17:08:24 -04:00
Radoslav Dimitrov
35b20719ee
fix(validators/oci): fail closed on upstream rate limiting (#1281)
## Summary

When the OCI validator's anonymous manifest fetch returns HTTP 429,
return a retryable error instead of `nil`. This aligns OCI with the
fail-closed behavior of the npm / PyPI / NuGet / MCPB validators, and
ensures the `io.modelcontextprotocol.server.name` label-match always
runs before a publish is accepted.

## Test plan

- [x] `go test ./internal/validators/registries/ -run TestValidateOCI`
passes locally
- [x] `gofmt` + `golangci-lint` clean on the changed file
- [ ] CI green

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 16:59:59 -04:00
dependabot[bot]
4e319e81ff
build(deps): bump github.com/go-git/go-git/v5 from 5.18.0 to 5.19.0 in /deploy (#1279)
Bumps [github.com/go-git/go-git/v5](https://github.com/go-git/go-git)
from 5.18.0 to 5.19.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/go-git/go-git/releases">github.com/go-git/go-git/v5's
releases</a>.</em></p>
<blockquote>
<h2>v5.19.0</h2>
<h2>What's Changed</h2>
<ul>
<li>build: Update module github.com/go-git/go-git/v5 to v5.18.0
[SECURITY] (releases/v5.x) by <a
href="https://github.com/go-git-renovate"><code>@​go-git-renovate</code></a>[bot]
in <a
href="https://redirect.github.com/go-git/go-git/pull/2010">go-git/go-git#2010</a></li>
<li>v5: Bump sha1cd and go-billy by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2060">go-git/go-git#2060</a></li>
<li>v5: Align object encoding with upstream by <a
href="https://github.com/pjbgf"><code>@​pjbgf</code></a> in <a
href="https://redirect.github.com/go-git/go-git/pull/2065">go-git/go-git#2065</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/go-git/go-git/compare/v5.18.0...v5.19.0">https://github.com/go-git/go-git/compare/v5.18.0...v5.19.0</a></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="bc930f4cbe"><code>bc930f4</code></a>
Merge pull request <a
href="https://redirect.github.com/go-git/go-git/issues/2065">#2065</a>
from go-git/commit-v5</li>
<li><a
href="d315264343"><code>d315264</code></a>
plumbing: object, Reset object before decode</li>
<li><a
href="6e1d34890a"><code>6e1d348</code></a>
plumbing: object, Align Tree handling with upstream</li>
<li><a
href="e134ba34cf"><code>e134ba3</code></a>
tests: Skip double checks in Git v2.11</li>
<li><a
href="1971422f6b"><code>1971422</code></a>
tests: Add git conformance tests for signing verification</li>
<li><a
href="a387aa8857"><code>a387aa8</code></a>
plumbing: object, Add ErrMalformedTag</li>
<li><a
href="f415670d90"><code>f415670</code></a>
plumbing: object, Decode Tag headers via a state machine</li>
<li><a
href="5b0cd38a62"><code>5b0cd38</code></a>
plumbing: object, Reject multi-signature commits at Verify</li>
<li><a
href="fe8ed6223a"><code>fe8ed62</code></a>
plumbing: object, Align Tag.EncodeWithoutSignature with Commit</li>
<li><a
href="98e337d5bd"><code>98e337d</code></a>
plumbing: object, Add support for Tag.SignatureSHA256</li>
<li>Additional commits viewable in <a
href="https://github.com/go-git/go-git/compare/v5.18.0...v5.19.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/go-git/go-git/v5&package-manager=go_modules&previous-version=5.18.0&new-version=5.19.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/modelcontextprotocol/registry/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-12 07:21:18 -04:00
d 🔹
276037b1ad
docs(complete): align publish CLI flags with implementation (closes #767) (#1278)
## Summary

`complete.md` documents three flags for `mcp-publisher publish` that the
CLI does not actually parse:

- `--file=PATH` — Path to server.json
- `--registry=URL` — Registry URL override
- `--dry-run` — Validate without publishing

Reading
[`cmd/publisher/commands/publish.go`](https://github.com/modelcontextprotocol/registry/blob/main/cmd/publisher/commands/publish.go)
and
[`cmd/publisher/main.go`](https://github.com/modelcontextprotocol/registry/blob/main/cmd/publisher/main.go)
confirms the actual interface is a single positional `PATH` argument
(default `./server.json`):

```go
serverFile := \"server.json\"
if len(args) > 0 && !strings.HasPrefix(args[0], \"-\") {
    serverFile = args[0]
}
```

Registry URL is bound at login time via the saved token, and \"validate
without publishing\" is a separate `mcp-publisher validate` subcommand.
The bug user in #767 hit \"server.json not found\" precisely because
`--file .registry/server.json` is filtered out by the
`HasPrefix(args[0], \"-\")` check, leaving the default lookup in place.

## Background

The canonical reference at
[`docs/reference/cli/commands.md`](https://github.com/modelcontextprotocol/registry/blob/main/docs/reference/cli/commands.md)
was already updated to the correct positional shape. `complete.md` (the
concatenated single-file mirror of `docs/` used for LLM/quickstart
consumption) had drifted out of sync — these were the only remaining
`--file` references in the repo outside of test fixtures.

Per the discussion on the prior flag-implementation attempt in #771,
maintainers preferred fixing the documentation over adding the
unimplemented flags:

> @domdomegg: I'd lean towards removing the options from the docs.

This PR closes that loop on the last stale doc surface.

## Changes

`complete.md`: the `mcp-publisher publish` block now matches
`docs/reference/cli/commands.md` line-for-line (positional `PATH`, no
spurious flags, no dry-run example).

```diff
-mcp-publisher publish [options]
+mcp-publisher publish [PATH]

-- \`--file=PATH\` - Path to server.json (default: \`./server.json\`)
-- \`--registry=URL\` - Registry URL override
-- \`--dry-run\` - Validate without publishing
+- \`PATH\` - Path to server.json (default: \`./server.json\`)

-# Dry run validation
-mcp-publisher publish --dry-run
-
 # Custom file location
-mcp-publisher publish --file=./config/server.json
+mcp-publisher publish ./config/server.json
```

Closes #767.

## Out of scope

- `cmd/publisher/README.md:17` still shows `./bin/mcp-publisher publish
--registry=http://localhost:8080` in the contributor quickstart. The
flag is silently ignored at runtime (caught by the same
`HasPrefix(\"-\")` filter). Happy to fold that fix into this PR or send
a follow-up — flagging here in case a maintainer prefers one option.
- `complete.md` is missing `mcp-publisher validate` and `mcp-publisher
status` sections that exist in `docs/reference/cli/commands.md`. Out of
scope for this single-concern PR; if there's interest, a broader sync
would be a separate PR.

## Test plan

- [x] `grep -r -- '--file' .` outside test fixtures returns 0 hits after
the change
- [x] `grep -r 'mcp-publisher publish --' docs/ complete.md` shows only
legitimate flags (`--registry` on `login`)
- [x] No code changes — `make check` not exercised since this is
doc-only

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: d 🔹 <258577966+voidborne-d@users.noreply.github.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-11 09:01:52 -04:00
dependabot[bot]
1d36806960
build(deps): bump golang.org/x/mod from 0.35.0 to 0.36.0 (#1271)
Bumps [golang.org/x/mod](https://github.com/golang/mod) from 0.35.0 to
0.36.0.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="643da9ba74"><code>643da9b</code></a>
go.mod: update golang.org/x dependencies</li>
<li><a
href="ccc3cdf529"><code>ccc3cdf</code></a>
zip: include 'but content has correct sum' note in TestVCS</li>
<li><a
href="ab30318032"><code>ab30318</code></a>
zip: update zip hashes for new flate compression</li>
<li>See full diff in <a
href="https://github.com/golang/mod/compare/v0.35.0...v0.36.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/mod&package-manager=go_modules&previous-version=0.35.0&new-version=0.36.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-11 05:10:51 -04:00
dependabot[bot]
7bc506f245
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.236.0 to 3.237.0 in /deploy (#1272)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.236.0 to 3.237.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.237.0</h2>
<h2>3.237.0 (2026-05-08)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[cli] Include the running command name and detected AI agent (when
present) in the User-Agent header on Pulumi Cloud API requests
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22908">#22908</a></p>
</li>
<li>
<p>[engine] Include <code>result</code> on the summary engine event
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22883">#22883</a></p>
</li>
<li>
<p>[sdkgen] Eagerly error on schemas with unconstructable types
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22890">#22890</a></p>
</li>
<li>
<p>[cli/cloud] Auto-fill <code>lang</code> and <code>os</code> query
parameters on <code>pulumi cloud api</code> GET/HEAD requests when the
matched OpenAPI operation declares them and the caller hasn't supplied
them
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22726">#22726</a></p>
</li>
<li>
<p>[cli/package] Add <code>pulumi package new</code> to bootstrap a
Pulumi package from a template
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22837">#22837</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>[cli] Add blank-line gaps between <code>pulumi neo</code> TUI
conversation blocks
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22846">#22846</a></p>
</li>
<li>
<p>[cli/import] Preserve <code>__</code>-prefixed keys when generating
PCL for imported resource state, so provider-defined payloads round-trip
correctly
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22856">#22856</a></p>
</li>
<li>
<p>[cli/neo] Render <code>ux__ask_user</code> clarifying questions as
questions instead of approval prompts
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22862">#22862</a></p>
</li>
<li>
<p>[cli/neo] Fix a panic when cancelling a <code>pulumi neo</code>
session
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22898">#22898</a></p>
</li>
<li>
<p>[cli/neo] Render every assistant message in the TUI scrollback so
multi-turn commentary no longer disappears between tool calls</p>
</li>
<li>
<p>[cli/neo] Return the bare stack name and canonical project name from
<code>pulumi_preview</code> and <code>pulumi_up</code> tool results
instead of echoing the raw input
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22891">#22891</a></p>
</li>
<li>
<p>[codegen/pcl] Stop reporting spurious circular references when an
<code>ignoreChanges</code>, <code>hideDiffs</code>,
<code>replaceOnChanges</code>, or <code>additionalSecretOutputs</code>
entry shares a name with a top-level node
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22916">#22916</a></p>
</li>
<li>
<p>[programgen/pcl] Fix PCL binder panic when a conditional mixes a
Promise-typed branch with a try() branch
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22907">#22907</a></p>
</li>
<li>
<p>[sdk/python] Support <code>NotRequired</code>, <code>Required</code>
and <code>total=False</code> in TypedDicts for component resource arg
types
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22858">#22858</a></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.237.0 (2026-05-08)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[cli] Include the running command name and detected AI agent (when
present) in the User-Agent header on Pulumi Cloud API requests
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22908">#22908</a></p>
</li>
<li>
<p>[engine] Include <code>result</code> on the summary engine event
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22883">#22883</a></p>
</li>
<li>
<p>[sdkgen] Eagerly error on schemas with unconstructable types
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22890">#22890</a></p>
</li>
<li>
<p>[cli/cloud] Auto-fill <code>lang</code> and <code>os</code> query
parameters on <code>pulumi cloud api</code> GET/HEAD requests when the
matched OpenAPI operation declares them and the caller hasn't supplied
them
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22726">#22726</a></p>
</li>
<li>
<p>[cli/package] Add <code>pulumi package new</code> to bootstrap a
Pulumi package from a template
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22837">#22837</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>[cli] Add blank-line gaps between <code>pulumi neo</code> TUI
conversation blocks
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22846">#22846</a></p>
</li>
<li>
<p>[cli/import] Preserve <code>__</code>-prefixed keys when generating
PCL for imported resource state, so provider-defined payloads round-trip
correctly
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22856">#22856</a></p>
</li>
<li>
<p>[cli/neo] Render <code>ux__ask_user</code> clarifying questions as
questions instead of approval prompts
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22862">#22862</a></p>
</li>
<li>
<p>[cli/neo] Fix a panic when cancelling a <code>pulumi neo</code>
session
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22898">#22898</a></p>
</li>
<li>
<p>[cli/neo] Render every assistant message in the TUI scrollback so
multi-turn commentary no longer disappears between tool calls</p>
</li>
<li>
<p>[cli/neo] Return the bare stack name and canonical project name from
<code>pulumi_preview</code> and <code>pulumi_up</code> tool results
instead of echoing the raw input
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22891">#22891</a></p>
</li>
<li>
<p>[codegen/pcl] Stop reporting spurious circular references when an
<code>ignoreChanges</code>, <code>hideDiffs</code>,
<code>replaceOnChanges</code>, or <code>additionalSecretOutputs</code>
entry shares a name with a top-level node
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22916">#22916</a></p>
</li>
<li>
<p>[programgen/pcl] Fix PCL binder panic when a conditional mixes a
Promise-typed branch with a try() branch
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22907">#22907</a></p>
</li>
<li>
<p>[sdk/python] Support <code>NotRequired</code>, <code>Required</code>
and <code>total=False</code> in TypedDicts for component resource arg
types
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22858">#22858</a></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="dc35aff826"><code>dc35aff</code></a>
only don't run CI if changelog/config.yaml changes (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22937">#22937</a>)</li>
<li><a
href="a38b7dce73"><code>a38b7dc</code></a>
cli/neo: keep prior streaming text when the agent emits a new turn (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22897">#22897</a>)</li>
<li><a
href="6d84bb5ed7"><code>6d84bb5</code></a>
add continue-on-error to upload code coverage and upload codecov test
results...</li>
<li><a
href="8377d1277e"><code>8377d12</code></a>
Eagerly error on schemas with unconstructable types (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22890">#22890</a>)</li>
<li><a
href="9d209a07ad"><code>9d209a0</code></a>
bump java and yaml dependencies (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22932">#22932</a>)</li>
<li><a
href="dd82f69c24"><code>dd82f69</code></a>
LocalWorkspace.nested_config: use a new stack per test (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22926">#22926</a>)</li>
<li><a
href="c5180568c9"><code>c518056</code></a>
Fix flaky TestFuzz: targeted update with refresh + deleted parent (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22925">#22925</a>)</li>
<li><a
href="46486da224"><code>46486da</code></a>
Thread workspace.Context to ProviderFromSource (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22880">#22880</a>)</li>
<li><a
href="ad42ef389e"><code>ad42ef3</code></a>
increase nodejs automation API timeout (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22920">#22920</a>)</li>
<li><a
href="0b8a78bd77"><code>0b8a78b</code></a>
Test on Node.js 26 and drop 20 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22872">#22872</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.236.0...v3.237.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.236.0&new-version=3.237.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-11 05:10:33 -04:00
dependabot[bot]
fe0cb3bfcb
build(deps): bump sigstore/cosign-installer from 4.1.1 to 4.1.2 in the actions group (#1265)
Bumps the actions group with 1 update:
[sigstore/cosign-installer](https://github.com/sigstore/cosign-installer).

Updates `sigstore/cosign-installer` from 4.1.1 to 4.1.2
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/sigstore/cosign-installer/releases">sigstore/cosign-installer's
releases</a>.</em></p>
<blockquote>
<h2>v4.1.2</h2>
<h2>What's Changed</h2>
<ul>
<li>Bump cosign to 3.0.6 in <a
href="https://redirect.github.com/sigstore/cosign-installer/pull/232">sigstore/cosign-installer#232</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="6f9f177880"><code>6f9f177</code></a>
Bump cosign to 3.0.6 (<a
href="https://redirect.github.com/sigstore/cosign-installer/issues/232">#232</a>)</li>
<li><a
href="b5e753ae2d"><code>b5e753a</code></a>
Bump actions/github-script from 8.0.0 to 9.0.0 (<a
href="https://redirect.github.com/sigstore/cosign-installer/issues/230">#230</a>)</li>
<li><a
href="115e4ce455"><code>115e4ce</code></a>
Bump actions/setup-go from 6.3.0 to 6.4.0 (<a
href="https://redirect.github.com/sigstore/cosign-installer/issues/226">#226</a>)</li>
<li>See full diff in <a
href="cad07c2e89...6f9f177880">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=sigstore/cosign-installer&package-manager=github_actions&previous-version=4.1.1&new-version=4.1.2)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-05-08 07:57:35 -04:00
dependabot[bot]
8af641cf1c
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.235.0 to 3.236.0 in /deploy (#1264)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.235.0 to 3.236.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.236.0</h2>
<h2>3.236.0 (2026-05-06)</h2>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.236.0 (2026-05-06)</h2>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="7db07780c1"><code>7db0778</code></a>
exclude another nodejs language test for bun (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22861">#22861</a>)</li>
<li><a
href="3a74cfbe73"><code>3a74cfb</code></a>
Bump the version of pulumi-hcl to v0.2.0 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22867">#22867</a>)</li>
<li><a
href="8437bfea3a"><code>8437bfe</code></a>
Expand <code>l1-output-map</code> to handle adversarial strings (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22854">#22854</a>)</li>
<li><a
href="a9b310f7c9"><code>a9b310f</code></a>
cli/neo: support typing quit/exit to leave the TUI (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22859">#22859</a>)</li>
<li><a
href="f499abf677"><code>f499abf</code></a>
cli/neo: show CLI version in the welcome banner (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22860">#22860</a>)</li>
<li><a
href="cec8b905e2"><code>cec8b90</code></a>
fix integration test (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22857">#22857</a>)</li>
<li><a
href="060f73f614"><code>060f73f</code></a>
Add changelog message guidance to AGENTS.md (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22848">#22848</a>)</li>
<li><a
href="a9f6c19a13"><code>a9f6c19</code></a>
skip more signal cancellation tests (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22844">#22844</a>)</li>
<li><a
href="b0b94fa329"><code>b0b94fa</code></a>
Change PluginInfo timestamps to be cached like size (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22839">#22839</a>)</li>
<li><a
href="1e4e2f0052"><code>1e4e2f0</code></a>
freeze 3.235.0 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22850">#22850</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.235.0...v3.236.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.235.0&new-version=3.236.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-05-08 07:57:18 -04:00
dependabot[bot]
d93f8f78a0
build(deps): bump cloud.google.com/go/kms from 1.30.0 to 1.31.0 (#1263)
Bumps
[cloud.google.com/go/kms](https://github.com/googleapis/google-cloud-go)
from 1.30.0 to 1.31.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/releases">cloud.google.com/go/kms's
releases</a>.</em></p>
<blockquote>
<h2>kms: v1.31.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.30.0...kms/v1.31.0">v1.31.0</a>
(2026-05-07)</h2>
<h2>retail: v1.31.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/retail/v1.30.0...retail/v1.31.0">v1.31.0</a>
(2026-05-07)</h2>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/blob/main/documentai/CHANGES.md">cloud.google.com/go/kms's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.5...documentai/v1.31.0">1.31.0</a>
(2024-08-01)</h2>
<h3>Features</h3>
<ul>
<li><strong>documentai:</strong> A new field <code>imageless_mode</code>
is added to message
<code>.google.cloud.documentai.v1.ProcessRequest</code> (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/10615">#10615</a>)
(<a
href="97fa56008a">97fa560</a>)</li>
</ul>
<h3>Documentation</h3>
<ul>
<li><strong>documentai:</strong> Keep the API doc up-to-date with recent
changes (<a
href="97fa56008a">97fa560</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.4...documentai/v1.30.5">1.30.5</a>
(2024-07-24)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>documentai:</strong> Update dependencies (<a
href="257c40bd6d">257c40b</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.3...documentai/v1.30.4">1.30.4</a>
(2024-07-10)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>documentai:</strong> Bump google.golang.org/grpc@v1.64.1 (<a
href="8ecc4e9622">8ecc4e9</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.2...documentai/v1.30.3">1.30.3</a>
(2024-07-01)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>documentai:</strong> Bump google.golang.org/api@v0.187.0 (<a
href="8fa9e398e5">8fa9e39</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.1...documentai/v1.30.2">1.30.2</a>
(2024-06-26)</h2>
<h3>Bug Fixes</h3>
<ul>
<li><strong>documentai:</strong> Enable new auth lib (<a
href="b95805f4c8">b95805f</a>)</li>
</ul>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.30.0...documentai/v1.30.1">1.30.1</a>
(2024-06-20)</h2>
<h3>Documentation</h3>
<ul>
<li><strong>documentai:</strong> Update the comment to add a note about
<code>documentai.processors.create</code> permission (<a
href="4fa4308251">4fa4308</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="9a44b31c75"><code>9a44b31</code></a>
chore: librarian release pull request: 20260409T070606Z (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14406">#14406</a>)</li>
<li><a
href="18a3318e01"><code>18a3318</code></a>
feat: Make AgentEngine APIs public</li>
<li><a
href="db45f2d9b6"><code>db45f2d</code></a>
feat(bigtable): enable bigtable conn pool by default (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14319">#14319</a>)</li>
<li><a
href="124ffd3b68"><code>124ffd3</code></a>
feat(vertexai): Add AgentEngine Memories Revisions module</li>
<li><a
href="e247d48b88"><code>e247d48</code></a>
chore: onboard new library appoptimize (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14393">#14393</a>)</li>
<li><a
href="ece84abc19"><code>ece84ab</code></a>
chore: update librarian to v0.10.1-0.20260408193841-095ea7e727aa (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14392">#14392</a>)</li>
<li><a
href="ecf9783b6e"><code>ecf9783</code></a>
chore: librarian release pull request: 20260408T191440Z (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14390">#14390</a>)</li>
<li><a
href="70b47d20b8"><code>70b47d2</code></a>
chore: librarian release pull request: 20260408T190447Z (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14389">#14389</a>)</li>
<li><a
href="95c53a6540"><code>95c53a6</code></a>
chore(bigquery): bump <code>api</code> to v0.275.0 and unskip bq tracing
tests (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14333">#14333</a>)</li>
<li><a
href="df22e9e38e"><code>df22e9e</code></a>
fix(storage): add retry logic for &quot;http2: client connection
lost&quot; (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14385">#14385</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.30.0...dlp/v1.31.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cloud.google.com/go/kms&package-manager=go_modules&previous-version=1.30.0&new-version=1.31.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-05-08 07:56:59 -04:00
Radoslav Dimitrov
f5fe2e97f6
build(deps): bump golang.org/x/net from v0.52.0 to v0.53.0 (#1269)
## Summary

Bumps `golang.org/x/net` from `v0.52.0` to `v0.53.0` to address
`GO-2026-4918` (HTTP/2 transport infinite loop on bad
`SETTINGS_MAX_FRAME_SIZE`). `go mod tidy` also pulls
`golang.org/x/crypto` to v0.50.0 and `golang.org/x/text` to v0.36.0.

## Why now

`govulncheck` is failing on `main` and every open Dependabot PR (#1263,
#1264, #1265) after the 2026-05 Go security release. The findings split
into:

- **One we control** — `golang.org/x/net@v0.52.0` → fixed in `v0.53.0`.
Addressed here.
- **Six stdlib findings** (`GO-2026-4986`, `4982`, `4980`, `4977`,
`4971`, and the stdlib half of `4918`) — all fixed in `go1.26.3`. We
deliberately do **not** pin a Go patch in the workflow: `go-version:
'stable'` will pick up `1.26.3` automatically once the
`actions/go-versions` manifest catches up, with no workflow maintenance.

## Test plan

- [x] `go build ./...`
- [x] `go vet ./...`
- [x] `GOTOOLCHAIN=go1.26.3 govulncheck ./...` → "No vulnerabilities
found."

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-08 07:33:10 -04:00
Andrew Cunliffe
718735cfbb
docs(authentication): note OpenSSL 3.x requirement for Ed25519 (#1253)
## Summary

The DNS and HTTP authentication guides currently run `openssl genpkey
-algorithm Ed25519 -out key.pem` without caveat. macOS ships LibreSSL as
the system `openssl` binary, and LibreSSL doesn't implement Ed25519 in
`genpkey` — so the very first command in the Ed25519 codepath errors out
with:

```
Algorithm Ed25519 not found
```

A first-time integrator on macOS hits this immediately, with no path to
a fix from the docs alone. Cost me ~5 minutes earlier today before I
figured out I needed `brew install openssl@3` and an explicit binary
path.

This PR adds a `<Note>` callout to the **DNS Authentication** section
right above the Ed25519 codepath, and a shorter cross-reference Note in
the **HTTP Authentication** section since the same `openssl genpkey
-algorithm Ed25519` commands appear there. The ECDSA P-384 codepath
works on LibreSSL, so it's untouched.

## Test plan

- [x] Verified locally that `/opt/homebrew/opt/openssl@3/bin/openssl
genpkey -algorithm Ed25519 -out key.pem` works on macOS Darwin 25.4.0
- [x] Verified the system `/usr/bin/openssl genpkey -algorithm Ed25519
-out key.pem` fails with `Algorithm Ed25519 not found` on the same
machine (LibreSSL 3.3.6)
- [x] Verified the published `ai.ravenmcp/raven-mcp` flow end-to-end
with the OpenSSL 3 binary
- [ ] Markdown rendering of the `<Note>` callouts — relying on the
existing `<Note>` pattern in this file (line 6) to validate the syntax

Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-05-07 10:42:37 -04:00
Radoslav Dimitrov
321337c810
docs: add ToolHive Registry Server to community projects (#1261)
## Summary

- Add a new **Registry Implementations** section to
`docs/community-projects.md` for self-hostable servers that implement
the MCP Registry API spec.
- Move existing **ToolSDK MCP Registry** entry from "Other" into the new
section.
- Add **ToolHive Registry Server**
(https://github.com/stacklok/toolhive-registry-server) to the new
section.

## Test plan

- [x] `docs/community-projects.md` renders correctly (markdown only, no
build step).

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 10:36:03 -04:00
dependabot[bot]
6ae2d54e73
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.234.0 to 3.235.0 in /deploy (#1259) 2026-05-06 17:34:08 -04:00
Radoslav Dimitrov
2b90d93712
deploy: update prod to v1.7.8 (#1256)
## Summary
- Bump `mcp-registry:imageTag` from `1.7.7` → `1.7.8` in
`deploy/Pulumi.gcpProd.yaml`
- v1.7.8 ships the metrics fix that stops counting client-cancelled
requests as server errors (#1255). Under scraper-driven load, clients
with short timeouts close the socket while PG is still iterating; the
handler converts `context.Canceled` to a 500 and the metric middleware
was bumping `mcp_registry_http_errors_total` even though NGINX recorded
499 and never delivered a response. This is what's been firing the daily
~17:00 UTC `Availability dropped below 95%` alert.
- Also includes a CI-only `pulumi/actions` 6.6.1 → 7.0.0 bump (#1254).
No registry runtime impact.
- Staging is on `4e14707` (the v1.7.8 commit) and
`staging.registry.modelcontextprotocol.io/v0.1/version` reports it.

## Test plan
- [ ] Confirm release workflow's `ko-push` job has published
`ghcr.io/modelcontextprotocol/registry:1.7.8` before merging
- [ ] Watch deploy-production roll the registry pods to `1.7.8`
- [ ] Hit `https://registry.modelcontextprotocol.io/v0.1/version` and
confirm `git_commit` matches `4e147072f0`
- [ ] Through the next ~17:00 UTC scraper burst, watch in Prometheus:
- `mcp_registry_http_errors_total{status_code="500",
path="/v0.1/servers"}` should stay flat
- `mcp_registry_http_requests_total{status_code="499",
path="/v0.1/servers"}` should grow during the burst
- The `Availability dropped below 95%` alert should not fire on
cancellation-only bursts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 06:14:49 -04:00
Radoslav Dimitrov
4e147072f0
metrics: stop counting client-cancelled requests as server errors (#1255)
## Summary

- Remap recorded status to `499` (NGINX-style "client closed") when
`ctx.Context().Err()` is `context.Canceled` after the handler returns
- Skip the `http_errors_total` increment for `499`s so the availability
metric reflects server-visible errors only

## Why

Under scraper-driven load, clients with short timeouts paginate
`/v0.1/servers`, give up while PG is busy, and close the TCP connection.
The handler's DB iteration returns `context canceled`, the handler
converts that to `huma.Error500InternalServerError`, and tries to write
a response to the now-closed socket. NGINX records `499` (client closed)
and never delivers anything to the client — but the registry's
middleware records `status_code=500` and bumps
`mcp_registry_http_errors_total`.

That's what's been firing the `Availability dropped below 95%` alert
during the daily 17:00 UTC bursts. Recent prod numbers from one pod
(~19h uptime):

```
mcp_registry_http_errors_total{path="/v0.1/servers", status_code="500"} 7396
mcp_registry_http_errors_total{path="/v0.1/servers/{serverName}/versions", status_code="500"} 283
mcp_registry_http_errors_total{path="/v0/servers", status_code="500"} 352
```

…against zero 5xx in NGINX ingress logs over the same window. The alert
was correct *given the data it had*; the data was misclassifying client
cancellations as server errors.

## What this does

In `internal/api/router/router.go` (the metric middleware): after
`next(ctx)`, check `ctx.Context().Err()`. If it's `context.Canceled`,
override `statusCode` to `499` and skip the error counter. Requests
counter and duration histogram still record so the cancellation rate
stays visible.

`context.DeadlineExceeded` is intentionally **not** remapped — that
would indicate a server-side timeout if we ever add per-request
deadlines, and should still count as a server error.

## What this does *not* do

- Doesn't reduce the underlying load (ServiceNow + notion catalog
scrapers driving the daily peak — separate work, see the `updated_since`
outreach we're doing).
- Doesn't change handler behaviour — handlers still call
`huma.Error500…` on `context.Canceled`. We could short-circuit earlier
(return without writing) to save the work, but that's a bigger refactor
and the metric fix unblocks the alert immediately.

## Companion change (no code, just a Grafana annotation tweak)

The `Availability dropped below 95%` alert (UID `bexrc60etvhmoa`)
currently has the annotation:

> No. of 5xx are increased from acceptable limit i.e. 5% of total
throughput

The query is on `mcp_registry_http_errors_total`, not 5xx specifically.
After this change the count is meaningful again, but the wording is
still misleading. Suggest updating to:

> Internal error rate exceeded 5% of total throughput

(no PromQL change required.)

## Test plan

- [x] `go test ./internal/api/router/...` — new test passes
- [x] `golangci-lint run ./internal/...` — clean
- [ ] After merge, watch a daily 17:00 UTC burst —
`mcp_registry_http_errors_total{status_code="500",
path="/v0.1/servers"}` should stay flat while
`mcp_registry_http_requests_total{status_code="499",
path="/v0.1/servers"}` grows. Availability alert should not fire on
cancellation-only bursts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-05 05:58:05 -04:00
dependabot[bot]
6d6a887174
build(deps): bump pulumi/actions from 6.6.1 to 7.0.0 in the actions group (#1254)
Bumps the actions group with 1 update:
[pulumi/actions](https://github.com/pulumi/actions).

Updates `pulumi/actions` from 6.6.1 to 7.0.0
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/actions/releases">pulumi/actions's
releases</a>.</em></p>
<blockquote>
<h2>v7.0.0</h2>
<h2>What's Changed</h2>
<ul>
<li>minor style fixups for CONTRIBUTING.md by <a
href="https://github.com/tgummerer"><code>@​tgummerer</code></a> in <a
href="https://redirect.github.com/pulumi/actions/pull/1396">pulumi/actions#1396</a></li>
<li>Allow downloading PR artifacts by <a
href="https://github.com/iwahbe"><code>@​iwahbe</code></a> in <a
href="https://redirect.github.com/pulumi/actions/pull/1397">pulumi/actions#1397</a></li>
<li>Bump Node runtime from 20 to 24 by <a
href="https://github.com/nelsonfigueroa"><code>@​nelsonfigueroa</code></a>
in <a
href="https://redirect.github.com/pulumi/actions/pull/1404">pulumi/actions#1404</a></li>
<li>Bump TypeScript and jest toolchain by <a
href="https://github.com/nelsonfigueroa"><code>@​nelsonfigueroa</code></a>
in <a
href="https://redirect.github.com/pulumi/actions/pull/1405">pulumi/actions#1405</a></li>
<li>chore: update ESLint stack and migrate to flat config by <a
href="https://github.com/nelsonfigueroa"><code>@​nelsonfigueroa</code></a>
in <a
href="https://redirect.github.com/pulumi/actions/pull/1406">pulumi/actions#1406</a></li>
</ul>
<h2>New Contributors</h2>
<ul>
<li><a href="https://github.com/iwahbe"><code>@​iwahbe</code></a> made
their first contribution in <a
href="https://redirect.github.com/pulumi/actions/pull/1397">pulumi/actions#1397</a></li>
<li><a
href="https://github.com/nelsonfigueroa"><code>@​nelsonfigueroa</code></a>
made their first contribution in <a
href="https://redirect.github.com/pulumi/actions/pull/1404">pulumi/actions#1404</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/pulumi/actions/compare/v6...v7.0.0">https://github.com/pulumi/actions/compare/v6...v7.0.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/actions/blob/main/CHANGELOG.md">pulumi/actions's
changelog</a>.</em></p>
<blockquote>
<h1>CHANGELOG</h1>
<h2>HEAD (Unreleased)</h2>
<p><strong>(none)</strong></p>
<hr />
<h2>7.0.0 (2026-05-01)</h2>
<ul>
<li>chore: update Action runtime to node 24
(<a
href="https://redirect.github.com/pulumi/actions/pull/1404">#1404</a>)</li>
<li>chore: bump <code>typescript</code>, <code>jest</code>,
<code>ts-jest</code>, <code>@types/jest</code>, <code>@types/node</code>
(<a
href="https://redirect.github.com/pulumi/actions/pull/1405">#1405</a>)</li>
<li>chore: update ESLint stack and migrate to flat config
(<a
href="https://redirect.github.com/pulumi/actions/pull/1406">#1406</a>)</li>
</ul>
<h2>6.6.1 (2025-11-12)</h2>
<ul>
<li>chore: Update pulumi/pulumi dependency
(<a
href="https://redirect.github.com/pulumi/actions/pull/1394">#1394</a>)</li>
</ul>
<h2>6.6.0 (2025-09-29)</h2>
<ul>
<li>feat: Strip ansi control characters from GitHub step Summary and PR
comment
(<a
href="https://redirect.github.com/pulumi/actions/pull/1312">#1312</a>)</li>
</ul>
<h2>6.4.0 (2025-07-16)</h2>
<ul>
<li>feat: Add <code>run-program</code> flag support for refresh,
destroy, preview, and
up/update commands (<a
href="https://redirect.github.com/pulumi/actions/pull/1376">#1376</a>)</li>
</ul>
<h2>6.3.0 (2025-05-08)</h2>
<ul>
<li>
<p>feat: support <code>--exclude</code> and
<code>--exclude-dependents</code> flags
(<a
href="https://redirect.github.com/pulumi/actions/pull/1363">#1363</a>)</p>
</li>
<li>
<p>feat: verbosity and debug inputs to enable debug options
(<a
href="https://redirect.github.com/pulumi/actions/pull/1046">#1046</a>)</p>
</li>
<li>
<p>fix: update &quot;user agent&quot; string to pulumi/actions@v6
(<a
href="https://redirect.github.com/pulumi/actions/pull/1367">#1357</a>)</p>
</li>
</ul>
<h2>6.2.0 (2025-03-05)</h2>
<ul>
<li>feat: support continue on error flag (--continue-on-error)
(<a
href="https://redirect.github.com/pulumi/actions/pull/1357">#1357</a>)</li>
</ul>
<h2>6.1.0 (2025-02-27)</h2>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="8e5e406f40"><code>8e5e406</code></a>
prepare v7.0.0 release (<a
href="https://redirect.github.com/pulumi/actions/issues/1407">#1407</a>)</li>
<li><a
href="22d32ee565"><code>22d32ee</code></a>
chore: update ESLint stack and migrate to flat config (<a
href="https://redirect.github.com/pulumi/actions/issues/1406">#1406</a>)</li>
<li><a
href="bee3070c66"><code>bee3070</code></a>
Bump TypeScript and jest toolchain (<a
href="https://redirect.github.com/pulumi/actions/issues/1405">#1405</a>)</li>
<li><a
href="eec25fe0b5"><code>eec25fe</code></a>
Bump Node runtime from 20 to 24 (<a
href="https://redirect.github.com/pulumi/actions/issues/1404">#1404</a>)</li>
<li><a
href="85a185baea"><code>85a185b</code></a>
chore(dist): Update dist [automated commit]</li>
<li><a
href="7bf44bfc85"><code>7bf44bf</code></a>
Allow downloading PR builds</li>
<li><a
href="ba4238626c"><code>ba42386</code></a>
minor style fixups for CONTRIBUTING.md (<a
href="https://redirect.github.com/pulumi/actions/issues/1396">#1396</a>)</li>
<li>See full diff in <a
href="8582a9e8cc...8e5e406f40">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=pulumi/actions&package-manager=github_actions&previous-version=6.6.1&new-version=7.0.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 03:50:20 -04:00
Radoslav Dimitrov
1b9f69e81b
deploy: update prod to v1.7.7 (#1251)
## Summary
- Bump `mcp-registry:imageTag` from `1.7.6` → `1.7.7` in
`deploy/Pulumi.gcpProd.yaml`
- v1.7.7 is a security patch covering three findings (validator
hardening, attribute-context UI escaping, IPv6 SSRF blocklist
extension); see the v1.7.7 release notes
- Staging is on `f5f40bd` (the v1.7.7 commit) and verified end-to-end:
  - `/v0.1/version` reports the new commit
- `/v0.1/validate` rejects a poisoned `websiteUrl` with
`website-url-invalid-characters`
  - `/` HTML serves the `escapeAttr` helper

## Test plan
- [ ] Confirm release workflow's `ko-push` job has finished publishing
`ghcr.io/modelcontextprotocol/registry:1.7.7` before merging
- [ ] Watch deploy-production workflow rolls the registry pods to
`1.7.7`
- [ ] Hit `https://registry.modelcontextprotocol.io/v0.1/version` and
confirm `git_commit` matches `f5f40bd...`
- [ ] Spot-check the catalogue UI loads cleanly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 10:07:32 -04:00
Radoslav Dimitrov
f5f40bd980
fix(auth/http): extend SSRF blocklist to IPv6 6to4/NAT64/site-local prefixes (#1250)
The HTTP namespace-verification fetcher's `isBlockedIP` composed its
blocklist from Go stdlib's `Is*` helpers plus a manual CGNAT range. That
covers IPv4 cloud metadata, RFC1918, ULA, and link-local — but Go's
classification helpers don't recognise IPv6 prefix families that embed
or tunnel to arbitrary IPv4:

  - 2002::/16       RFC 3056 6to4 — bits 16-47 are an arbitrary IPv4
  - 64:ff9b::/96    RFC 6052 NAT64 well-known — low 32 bits are IPv4
  - 64:ff9b:1::/48  RFC 8215 NAT64 local-use — same IPv4-embedding shape
  - fec0::/10       RFC 3879 site-local (deprecated, still routed by
                    some stacks)

On hosts with 6to4 routing or a NAT64 next-hop (the default on
IPv6-only GKE node pools, AWS IPv6-only EC2, Azure IPv6 VMs with
NAT64, and many corporate DNS64/NAT64 networks), an attacker who
controls DNS for a publisher domain can cause the registry to dial
`169.254.169.254`, `10.0.0.0/8`, etc. via the IPv6 wrapper. Same
SSRF class as GHSA-56c3-vfp2-5qqj on n8n-mcp.

Define the four prefixes via a new `mustCIDR` helper (panic on
malformed CIDR at init so a typo can't fail-open silently) and iterate
them in `isBlockedIP` after the stdlib gates. Refactor the existing
CGNAT IIFE to use the same helper for consistency. IPv4-mapped IPv6
(::ffff:0:0/96) needs no special-casing: Go's `Is*` helpers honour the
`To4()` fast-path, so e.g. `::ffff:10.0.0.1` is already classified as
`IsPrivate`.

Adds 17 test cases to `TestIsBlockedIP` covering each new prefix
family, IPv4-mapped IPv6 sanity checks, and just-outside-the-range
positive controls (`2001::1`, `2003::1`, `64:ff9c::1`).

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

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 09:41:23 -04:00
Radoslav Dimitrov
78b7bbde07
fix(validators): reject HTML metacharacters and whitespace in websiteUrl (#1249)
`validateWebsiteURL` only checked that the URL parses, is absolute, and
uses the `https` scheme. It accepted literal `"`, `'`, `<`, `>`, and
ASCII space — none of which are valid in a URI per RFC 3986, and all of
which broke rendering when the value flowed into the catalogue UI's
`<a href="...">` template.

Add a `strings.IndexAny` check after the scheme check that rejects any
of these characters with a clear `website-url-invalid-characters` issue
that points at the offending byte position. Control characters (`\t`,
`\n`, `\r`) are also covered: they're caught one step earlier by Go's
`url.Parse`, but the bytes are listed in the rejection set so the
behaviour is explicit and survives any future relaxation of `url.Parse`.
Already-percent-encoded URLs (e.g. `?q=hello%20world`) continue to
validate cleanly.

Adds table-driven cases for `"`, `'`, `<>`, space, newline, and a
positive case for percent-encoded special characters.

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

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 09:26:50 -04:00
Radoslav Dimitrov
fbfd63ced8
fix(ui): encode publisher-controlled URLs for href attribute context (#1248)
The catalogue page interpolates publisher-supplied URL fields
(`server.repository.url`, `server.websiteUrl`) inside `href="..."`
attributes via `innerHTML`, escaping them with a
`textContent`→`innerHTML`
helper. Per the HTML5 fragment-serialisation algorithm, that round-trip
encodes only `&`, `<`, `>`, and U+00A0 inside text nodes — it does not
encode `"` or `'`. The helper is therefore safe in element-text
contexts (where it is used for `name`, `version`, `description`, etc.)
but unsafe inside an attribute value.

Add an attribute-safe `escapeAttr` helper that follows the OWASP
attribute-encoding rule (also encodes `"` and `'`) and use it for the
two `href` interpolations. Element-text usages keep the existing
`escapeHtml` and remain unchanged. A short comment on each helper
documents the contexts they cover so future fields are wired up
correctly.

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

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 09:25:41 -04:00
Radoslav Dimitrov
7a4216c528
refactor: rename readBody to readErrorBody and cap body size (#1246)
## Summary

Follow-up to #1241. Two small tweaks to the `readBody` helper:

- **Rename `readBody` → `readErrorBody`.** The helper is only ever
called on the error path (after a non-2xx status check), where we want a
small string for diagnostics. The generic name made it look reusable on
the success path, where streaming JSON decoding is the right approach.
The new name pins the intended use down.
- **Cap the read with `io.LimitReader` (8 KiB).** Defense in depth —
error diagnostics never need more than a few KB, and we shouldn't buffer
an arbitrarily large body from an upstream just to format an error
message. 8 KiB is well above any realistic GitHub API or JWKS error
response.

No behavior change on the happy path. On the unhappy path, error
messages are now bounded.

## Test plan

- [x] `go build ./...`
- [x] `go test ./internal/api/handlers/v0/auth/...`

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-05-04 07:09:57 -04:00
Mesut Oezdil
6f9bd6661c
refactor: extract readBody helper to remove duplicate io.ReadAll calls (#1241)
The same pattern for reading an error response body appeared in three
places across the auth handlers:

- `internal/api/handlers/v0/auth/github_at.go` (twice)
- `internal/api/handlers/v0/auth/github_oidc.go` (once)

A shared `readBody` helper function added to `common.go` now handles
this in one place.
The `io` import is removed from both files since it is no longer used
directly there.

---------

Co-authored-by: Radoslav Dimitrov <radoslav@stacklok.com>
2026-05-04 06:57:02 -04:00
Radoslav Dimitrov
dfaa8f3b82
auth/oidc: test slice-typed extra claims comparison (#1245)
## Summary
Follow-up to #1238 (closes #988). Adds direct unit-test coverage for the
`claimMatches` helper, which was the actual change in #1238.

`claimMatches` and `toAnySlice` are unexported, so the tests live in
`oidc_internal_test.go` (`package auth`) — same pattern as
`http_internal_test.go`. Cases covered:

- scalar/scalar match and mismatch
- scalar actual against array expected (both directions of overlap)
- array actual against scalar expected
- **array/array** — pre-#1238 this combination panicked with `comparing
uncomparable type []interface {}`
- `[]string` typed slice (exercises the typed-slice branch of
`toAnySlice`, which `[]any` skips)
- non-string scalars (int, bool)
- empty actual array

Test values use single letters (`x`, `y`, `p`, `q`) rather than role
labels — only the relationships matter, and short tokens keep `goconst`
quiet.

## Test plan
- [x] `go test ./internal/api/handlers/v0/auth/...` — all 13 subtests
pass
- [x] `golangci-lint run ./internal/api/handlers/v0/auth/...` — no new
issues vs main
2026-05-04 06:52:12 -04:00
Sai Asish Y
811046c4ce
auth/oidc: support slice-typed extra claims via overlap match (#1238)
Closes #988. Direct `actualValue != expectedValue` fails when the token
claim is an array (groups, roles, scp, aud). Switch to a slice-aware
any-of overlap so OIDC list claims are validated correctly.
2026-05-04 06:24:34 -04:00
dependabot[bot]
f3308d16f5
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.233.0 to 3.234.0 in /deploy (#1237)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.233.0 to 3.234.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.234.0</h2>
<h2>3.234.0 (2026-05-01)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[cli/cloud] Add <code>pulumi cloud api describe</code> for inspecting
the parameters, request
body, and response schema of any Pulumi Cloud API operation, with
text, markdown, and JSON output</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22770">#22770</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi cloud api list</code> for browsing every
endpoint exposed by the Pulumi
Cloud OpenAPI spec, with table and JSON output</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22769">#22769</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[engine] Revert changes to property path parsing that resulted in
errors for currently valid paths</li>
</ul>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.234.0 (2026-05-01)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[cli/cloud] Add <code>pulumi cloud api describe</code> for inspecting
the parameters, request
body, and response schema of any Pulumi Cloud API operation, with
text, markdown, and JSON output</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22770">#22770</a></p>
</li>
<li>
<p>[cli/cloud] Add <code>pulumi cloud api list</code> for browsing every
endpoint exposed by the Pulumi
Cloud OpenAPI spec, with table and JSON output</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22769">#22769</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>[engine] Revert changes to property path parsing that resulted in
errors for currently valid paths</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="e802ef2c5b"><code>e802ef2</code></a>
Revert &quot;Tighten parsing on new property paths (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22695">#22695</a>)&quot;
(<a
href="https://redirect.github.com/pulumi/pulumi/issues/22801">#22801</a>)</li>
<li><a
href="f5deaa1b20"><code>f5deaa1</code></a>
cli/cloud: add <code>pulumi cloud api describe</code> (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22770">#22770</a>)</li>
<li><a
href="bccf53d1fb"><code>bccf53d</code></a>
cli/cloud: add <code>pulumi cloud api list</code> (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22769">#22769</a>)</li>
<li><a
href="5575172e07"><code>5575172</code></a>
Changelog and go.mod updates for v3.233.0 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22795">#22795</a>)</li>
<li><a
href="caf13d6d14"><code>caf13d6</code></a>
Cancel in-flight fuzz iterations when the 20s cap fires (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22725">#22725</a>)</li>
<li><a
href="324811c0a7"><code>324811c</code></a>
Freeze v2.233.0 (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22793">#22793</a>)</li>
<li>See full diff in <a
href="https://github.com/pulumi/pulumi/compare/v3.233.0...v3.234.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.233.0&new-version=3.234.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 06:12:32 -04:00
dependabot[bot]
648da259b0
build(deps): bump github.com/caarlos0/env/v11 from 11.4.0 to 11.4.1 (#1236)
Bumps [github.com/caarlos0/env/v11](https://github.com/caarlos0/env)
from 11.4.0 to 11.4.1.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/caarlos0/env/releases">github.com/caarlos0/env/v11's
releases</a>.</em></p>
<blockquote>
<h2>v11.4.1</h2>
<h2>Changelog</h2>
<h3>Bug fixes</h3>
<ul>
<li>6daeb06ac7e3c9532a7eaa5768d45917393b7480: fix: use Key instead of
OwnKey in rawEnvVars to properly reference existing defaults in complex
structs (<a
href="https://redirect.github.com/caarlos0/env/issues/412">#412</a>) (<a
href="https://github.com/AndrewChubatiuk"><code>@​AndrewChubatiuk</code></a>)</li>
</ul>
<h3>Documentation updates</h3>
<ul>
<li>1ff55e6c9733833ce75d62b345916a407dbe4158: docs: adaptive starchart
(<a href="https://redirect.github.com/caarlos0/env/issues/416">#416</a>)
(<a
href="https://github.com/alexandear"><code>@​alexandear</code></a>)</li>
</ul>
<h3>Other work</h3>
<ul>
<li>cf4a9682420b025e44b4773fd7ee0be48bb68b2f: ci(deps): bump the actions
group with 3 updates (<a
href="https://redirect.github.com/caarlos0/env/issues/411">#411</a>) (<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot])</li>
<li>33faf6f333c2c3dacef2991825f8e03960a2c0cb: ci(deps): bump the actions
group with 3 updates (<a
href="https://redirect.github.com/caarlos0/env/issues/417">#417</a>) (<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot])</li>
<li>0cb635b62488f4d310809a82a8832cedc9aa94eb: ci(deps): bump the actions
group with 6 updates (<a
href="https://redirect.github.com/caarlos0/env/issues/415">#415</a>) (<a
href="https://github.com/dependabot"><code>@​dependabot</code></a>[bot])</li>
<li>a72d89a8930fc800372a6a338a1acf33e5cc3a56: ci: update release config
(<a href="https://github.com/caarlos0"><code>@​caarlos0</code></a>)</li>
</ul>
<hr />
<p><em>Released with <a href="https://goreleaser.com/pro">GoReleaser
Pro</a>!</em></p>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="a72d89a893"><code>a72d89a</code></a>
ci: update release config</li>
<li><a
href="6daeb06ac7"><code>6daeb06</code></a>
fix: use Key instead of OwnKey in rawEnvVars to properly reference
existing d...</li>
<li><a
href="33faf6f333"><code>33faf6f</code></a>
ci(deps): bump the actions group with 3 updates (<a
href="https://redirect.github.com/caarlos0/env/issues/417">#417</a>)</li>
<li><a
href="1ff55e6c97"><code>1ff55e6</code></a>
docs: adaptive starchart (<a
href="https://redirect.github.com/caarlos0/env/issues/416">#416</a>)</li>
<li><a
href="0cb635b624"><code>0cb635b</code></a>
ci(deps): bump the actions group with 6 updates (<a
href="https://redirect.github.com/caarlos0/env/issues/415">#415</a>)</li>
<li><a
href="cf4a968242"><code>cf4a968</code></a>
ci(deps): bump the actions group with 3 updates (<a
href="https://redirect.github.com/caarlos0/env/issues/411">#411</a>)</li>
<li>See full diff in <a
href="https://github.com/caarlos0/env/compare/v11.4.0...v11.4.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/caarlos0/env/v11&package-manager=go_modules&previous-version=11.4.0&new-version=11.4.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-04 06:12:19 -04:00
dependabot[bot]
23f4fda297
build(deps): bump github.com/pulumi/pulumi/sdk/v3 from 3.232.0 to 3.233.0 in /deploy (#1234)
Bumps
[github.com/pulumi/pulumi/sdk/v3](https://github.com/pulumi/pulumi) from
3.232.0 to 3.233.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/releases">github.com/pulumi/pulumi/sdk/v3's
releases</a>.</em></p>
<blockquote>
<h2>v3.233.0</h2>
<h2>3.233.0 (2026-04-30)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[auto/python] Expose the auto-generated Pulumi CLI interface as
<code>workspace.cli_api</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22638">#22638</a></p>
</li>
<li>
<p>[cli] Add encrypted logging to ~/.pulumi/logs; use the
PULUMI_ENABLE_AUTOMATIC_LOGGING feature flag to turn it on
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22494">#22494</a></p>
</li>
<li>
<p>[cli] Implement the <code>filesystem__grep</code> and
<code>filesystem__content_replace</code> local tools
for <code>pulumi neo</code>. <code>grep</code> runs a regex search
across files in the project root
with an optional <code>include</code> glob filter and returns results in
<code>path:lineno: line</code>
form. <code>content_replace</code> performs a literal multi-file
search-and-replace with a
<code>file_pattern</code> glob and <code>dry_run</code> preview mode.
Both tools skip binary files,
hidden directories, and <code>node_modules</code>, and reject paths
outside the project
root. Their input schemas match the cloud-side tool definitions.</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22655">#22655</a></p>
</li>
<li>
<p>[cli] Add <code>pulumi_preview</code> and <code>pulumi_up</code> as
local tools for the experimental <code>pulumi neo</code>
agent. The Neo TUI renders a persistent bordered block for each
operation that
streams changed resources and diagnostics as the engine runs and
finalizes with a
summary of the op counts. Hidden behind PULUMI_EXPERIMENTAL.</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22697">#22697</a></p>
</li>
<li>
<p>[engine] Add <code>List</code> to the provider protocol and schema
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22693">#22693</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>[engine] Return a clear error when two installed plugins claim the
same default provider package name (for example, a native
<code>scaleway</code> provider alongside a
<code>terraform-provider</code> bridge parameterized as
<code>scaleway</code>) instead of panicking with &quot;Should not have
seen an older plugin if sorting is correct!&quot;
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22679">#22679</a></p>
</li>
<li>
<p>[programgen] Do not wrap a <code>call(...)</code> on a method whose
return type is marked plain in an Output. Previously
PCL bound every method call's return type as
<code>Output&lt;T&gt;</code>, which caused downstream program-gen
to emit broken <code>.apply(...)</code>/<code>.ApplyT(...)</code>
traversals against plain struct returns (e.g.
methods with <code>liftSingleValueMethodReturns=true</code> or
<code>ReturnTypePlain=true</code>).</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22696">#22696</a></p>
</li>
<li>
<p>[backend/diy] When using a backend url containing creds (e.g.
PostgreSQL conn string), mask user:pass as in lock-related error
messages
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22701">#22701</a></p>
</li>
<li>
<p>[codegen/go] Generate unqualified <code>Provider</code> references
for the package's own provider resource. Previously
the Go codegen always emitted <code>&lt;pkg&gt;.Provider</code> even
when the reference appeared inside <code>&lt;pkg&gt;</code></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/pulumi/pulumi/blob/master/CHANGELOG.md">github.com/pulumi/pulumi/sdk/v3's
changelog</a>.</em></p>
<blockquote>
<h2>3.233.0 (2026-04-30)</h2>
<h3>Features</h3>
<ul>
<li>
<p>[auto/python] Expose the auto-generated Pulumi CLI interface as
<code>workspace.cli_api</code>
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22638">#22638</a></p>
</li>
<li>
<p>[cli] Add encrypted logging to ~/.pulumi/logs; use the
PULUMI_ENABLE_AUTOMATIC_LOGGING feature flag to turn it on
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22494">#22494</a></p>
</li>
<li>
<p>[cli] Implement the <code>filesystem__grep</code> and
<code>filesystem__content_replace</code> local tools
for <code>pulumi neo</code>. <code>grep</code> runs a regex search
across files in the project root
with an optional <code>include</code> glob filter and returns results in
<code>path:lineno: line</code>
form. <code>content_replace</code> performs a literal multi-file
search-and-replace with a
<code>file_pattern</code> glob and <code>dry_run</code> preview mode.
Both tools skip binary files,
hidden directories, and <code>node_modules</code>, and reject paths
outside the project
root. Their input schemas match the cloud-side tool definitions.</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22655">#22655</a></p>
</li>
<li>
<p>[cli] Add <code>pulumi_preview</code> and <code>pulumi_up</code> as
local tools for the experimental <code>pulumi neo</code>
agent. The Neo TUI renders a persistent bordered block for each
operation that
streams changed resources and diagnostics as the engine runs and
finalizes with a
summary of the op counts. Hidden behind PULUMI_EXPERIMENTAL.</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22697">#22697</a></p>
</li>
<li>
<p>[engine] Add <code>List</code> to the provider protocol and schema
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22693">#22693</a></p>
</li>
</ul>
<h3>Bug Fixes</h3>
<ul>
<li>
<p>[engine] Return a clear error when two installed plugins claim the
same default provider package name (for example, a native
<code>scaleway</code> provider alongside a
<code>terraform-provider</code> bridge parameterized as
<code>scaleway</code>) instead of panicking with &quot;Should not have
seen an older plugin if sorting is correct!&quot;
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22679">#22679</a></p>
</li>
<li>
<p>[programgen] Do not wrap a <code>call(...)</code> on a method whose
return type is marked plain in an Output. Previously
PCL bound every method call's return type as
<code>Output&lt;T&gt;</code>, which caused downstream program-gen
to emit broken <code>.apply(...)</code>/<code>.ApplyT(...)</code>
traversals against plain struct returns (e.g.
methods with <code>liftSingleValueMethodReturns=true</code> or
<code>ReturnTypePlain=true</code>).</p>
<p><a
href="https://redirect.github.com/pulumi/pulumi/pull/22696">#22696</a></p>
</li>
<li>
<p>[backend/diy] When using a backend url containing creds (e.g.
PostgreSQL conn string), mask user:pass as in lock-related error
messages
<a
href="https://redirect.github.com/pulumi/pulumi/pull/22701">#22701</a></p>
</li>
<li>
<p>[codegen/go] Generate unqualified <code>Provider</code> references
for the package's own provider resource. Previously
the Go codegen always emitted <code>&lt;pkg&gt;.Provider</code> even
when the reference appeared inside <code>&lt;pkg&gt;</code>
itself, producing identifiers that would not compile. Affects generated
code for method return</p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="fa313013d0"><code>fa31301</code></a>
don't stamp vcs information into binaries (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22788">#22788</a>)</li>
<li><a
href="17fd40453d"><code>17fd404</code></a>
double timeout in &quot;does not hang&quot; test (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22789">#22789</a>)</li>
<li><a
href="eb6e31d841"><code>eb6e31d</code></a>
split tests module on macos further (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22790">#22790</a>)</li>
<li><a
href="94dbe6401b"><code>94dbe64</code></a>
Remove runInStack from run-policy-pack (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22783">#22783</a>)</li>
<li><a
href="a35ec7e9d5"><code>a35ec7e</code></a>
retry pip install a few times (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22785">#22785</a>)</li>
<li><a
href="7a4beeaa44"><code>7a4beea</code></a>
Reject schemas with duplicate tokens after applying
<code>moduleFormat</code> (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22765">#22765</a>)</li>
<li><a
href="0b914cee46"><code>0b914ce</code></a>
unflake TestNodejsComponentProviderRun (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22782">#22782</a>)</li>
<li><a
href="5cd1646706"><code>5cd1646</code></a>
start logging encrypted logs for all pulumi commands (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22494">#22494</a>)</li>
<li><a
href="a81ef07c09"><code>a81ef07</code></a>
pin more plugin versions in integration tests (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22758">#22758</a>)</li>
<li><a
href="0d2b8bf114"><code>0d2b8bf</code></a>
Update list doc comment (<a
href="https://redirect.github.com/pulumi/pulumi/issues/22777">#22777</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/pulumi/pulumi/compare/v3.232.0...v3.233.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=github.com/pulumi/pulumi/sdk/v3&package-manager=go_modules&previous-version=3.232.0&new-version=3.233.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 03:19:42 -04:00
dependabot[bot]
46bbe0dba3
build(deps): bump cloud.google.com/go/kms from 1.29.0 to 1.30.0 (#1233)
Bumps
[cloud.google.com/go/kms](https://github.com/googleapis/google-cloud-go)
from 1.29.0 to 1.30.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/releases">cloud.google.com/go/kms's
releases</a>.</em></p>
<blockquote>
<h2>kms: v1.30.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.29.0...kms/v1.30.0">v1.30.0</a>
(2026-04-30)</h2>
<h2>retail: v1.30.0</h2>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/retail/v1.29.0...retail/v1.30.0">v1.30.0</a>
(2026-04-30)</h2>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/googleapis/google-cloud-go/blob/main/documentai/CHANGES.md">cloud.google.com/go/kms's
changelog</a>.</em></p>
<blockquote>
<h2><a
href="https://github.com/googleapis/google-cloud-go/compare/documentai/v1.29.0...documentai/v1.30.0">1.30.0</a>
(2024-06-05)</h2>
<h3>Features</h3>
<ul>
<li><strong>documentai:</strong> Make Layout Parser generally available
in V1 (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/10286">#10286</a>)
(<a
href="92dc381da2">92dc381</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="54d941a9a3"><code>54d941a</code></a>
chore: librarian release pull request: 20260402T153541Z (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14330">#14330</a>)</li>
<li><a
href="22d0749f8f"><code>22d0749</code></a>
docs(storage): Update <code>EnableParallelUpload</code> documentation
(<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14328">#14328</a>)</li>
<li><a
href="751febd843"><code>751febd</code></a>
feat(spanner): Switch to using builtin open telemetry for EEF (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14193">#14193</a>)</li>
<li><a
href="a70f04f178"><code>a70f04f</code></a>
chore: add a config check (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14327">#14327</a>)</li>
<li><a
href="9e2b3f5700"><code>9e2b3f5</code></a>
chore: update sources and regenerate (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14325">#14325</a>)</li>
<li><a
href="e0760b51f4"><code>e0760b5</code></a>
fix(spanner): set gauge metric start time to match end time (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14289">#14289</a>)</li>
<li><a
href="71df27f882"><code>71df27f</code></a>
docs(pubsub/v2): revamp package docs (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14317">#14317</a>)</li>
<li><a
href="a6efdbfd6c"><code>a6efdbf</code></a>
chore: update librarian version (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14323">#14323</a>)</li>
<li><a
href="22cda56edd"><code>22cda56</code></a>
chore: update librariangen image SHA (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14315">#14315</a>)</li>
<li><a
href="1720392ade"><code>1720392</code></a>
chore(all): update deps (main) (<a
href="https://redirect.github.com/googleapis/google-cloud-go/issues/14231">#14231</a>)</li>
<li>Additional commits viewable in <a
href="https://github.com/googleapis/google-cloud-go/compare/kms/v1.29.0...dlp/v1.30.0">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=cloud.google.com/go/kms&package-manager=go_modules&previous-version=1.29.0&new-version=1.30.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-01 03:19:24 -04:00
Radoslav Dimitrov
42092742ce
deploy: update prod to v1.7.6 (#1232)
## Summary

- Bumps prod imageTag from \`1.7.5\` to \`1.7.6\`.

## Test plan

- [ ] Smoke staging at https://staging.registry.modelcontextprotocol.io
- [ ] Roll out via Pulumi
- [ ] Confirm prod health post-rollout: \`curl
https://registry.modelcontextprotocol.io/v0/version\` shows \`1.7.6\`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 21:08:54 -04:00
Radoslav Dimitrov
db43896209
docs: document GitHub OIDC audience binding for self-hosters and CI users (#1230)
## Summary

Follow-up to #1229. Three small doc additions so the new audience
requirement is discoverable without reading the source:

- `.env.example` lists `MCP_REGISTRY_GITHUB_OIDC_AUDIENCE` alongside the
other registry env vars, with a note that the value must match the
scheme+host that publishers pass via `--registry`.
- The publisher CLI reference (`docs/reference/cli/commands.md`)
explains that the CLI derives the audience from `--registry` and that
self-hosters must set the matching env var on the registry side.
- The GitHub Actions troubleshooting table
(`docs/modelcontextprotocol-io/github-actions.mdx`) maps the new
`invalid audience` error to the user-facing fix (upgrade
`mcp-publisher`).

No code changes — docs only.

## Test plan

- [ ] CI green (markdown lint / link checks if any)
- [ ] Eyeball-render the troubleshooting table on the
modelcontextprotocol.io preview to confirm the new row formats correctly

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 20:56:53 -04:00
Radoslav Dimitrov
3f89fc2b1f
auth: bind GitHub OIDC token exchange to a per-deployment audience (#1229)
## What this does

The publisher CLI now derives the OIDC audience to request from the
`--registry` URL instead of using a fixed constant, and the server
validates the token's `aud` claim against a new per-deployment env var
(`MCP_REGISTRY_GITHUB_OIDC_AUDIENCE`).

Production sets this env var to
`https://registry.modelcontextprotocol.io` (and per-environment URL
elsewhere), so the deployment only accepts tokens that were requested
for it.

## Compatibility

This is a breaking change for older `mcp-publisher` binaries that still
request the legacy hardcoded audience. After this rolls to a deployment,
users on old `mcp-publisher` will see a clear `invalid audience:
expected …, got […]` error and need to upgrade. Users following the
documented `releases/latest` install pattern get the new binary
automatically.

## Test plan

- [ ] CI green
- [ ] Run a synthetic publish from a real GitHub Actions workflow
against staging after deploy
- [ ] Confirm an older `mcp-publisher` against the same staging deploy
returns the expected `invalid audience` error

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 20:27:26 -04:00
Radoslav Dimitrov
88bbb851ad
deploy: update prod to v1.7.5 (#1228)
## Summary

- Bumps prod imageTag from `1.7.4` to `1.7.5`.
- Promotes the security release tagged at v1.7.5 (#1227 merged at
1201cbd).

## Test plan

- [ ] Smoke staging at https://staging.registry.modelcontextprotocol.io
— already done, all checks green
- [ ] Roll out via Pulumi
- [ ] Confirm prod health post-rollout: `curl
https://registry.modelcontextprotocol.io/v0/health`

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 19:32:54 -04:00
Radoslav Dimitrov
1201cbd82b
security: fix open redirect and add small hardening (#1227)
## What this does

Fixes an open redirect plus a handful of small, mostly-invisible
hardening changes around it.

## What's in it

- **The fix**: trailing-slash redirects no longer let `//evil.com/`
redirect off-host.
- **SSRF block** on the DNS/HTTP namespace verification — refuses to
dial loopback, RFC1918, link-local, multicast, CGNAT, or
IP-literal/single-label \"domains\".
- **Slow-client guard**: `ReadTimeout` and `IdleTimeout` on the HTTP
server (no `WriteTimeout` — would risk cutting off legitimate
multi-package publishes).
- **Defence-in-depth headers** on the UI (`/`) and 404 responses.
- **5xx responses** stop leaking raw DB error text to clients (logged
server-side instead).
- **Search filter** stops treating `%` and `_` as wildcards.
- **Validators**: PyPI/NuGet identifiers URL-escaped before fetching;
MCPB no longer follows redirects.
- **Misc**: `Version` field bounded to 255 chars; logs quote user input;
`BlockedNamespaces` denylist now catches subdomain claimants.

Each change is its own commit so they can be reviewed (or reverted)
independently.

## Test plan

- [ ] CI green
- [ ] Synthetic publish in staging for each package type (npm, pypi,
nuget, oci, mcpb) — confirms validator changes don't regress
- [ ] Quick browser check of `/` after deploy to confirm UI still loads
with the new CSP
- [ ] `curl https://<host>//evil.com/` — confirm the open redirect is
closed

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 19:14:00 -04:00
Radoslav Dimitrov
f7663fe91a
deploy: update prod to v1.7.4 (#1226)
## Summary

Promotes
[v1.7.4](https://github.com/modelcontextprotocol/registry/releases/tag/v1.7.4)
(#1225) to production: registry pod memory request `256Mi → 512Mi`,
limit `512Mi → 1Gi`.

## Why

#1221 doubled pgxpool `MaxConns` 30→60 per pod without bumping the
registry pod memory limit. pgxpool keeps per-connection state in the Go
process (prepared statement cache, scratch buffers, row iteration state)
so peak per-pod memory shifted from ~330 MB to ~450 MB against the 512
MiB limit. Pod `tx49f` was OOMKilled at 17:01 UTC on 2026-04-29.

## Validation so far

- Staging deployed cleanly via `deploy-staging.yml` after #1225 merged
- Both staging pods running with `req=512Mi limit=1Gi` ✓
- Rolling update was clean — no failed health checks during the
transition
- Both pods spread across nodes (q716 + 7exo)

## Deployment

**Zero downtime** — Deployment template change only, rolling update with
`maxSurge: 1, maxUnavailable: 0`. No PG involvement (no
`max_connections` change, no shared_preload_libraries change).

## Test plan

- [x] v1.7.4 release built and pushed
(`ghcr.io/modelcontextprotocol/registry:1.7.4`)
- [x] Staging deployed cleanly with new limits
- [ ] Prod Pulumi run applies cleanly; rolling update completes
- [ ] Prod pods come up with `req=512Mi limit=1Gi`
- [ ] After 24h: no OOMKills on either pod, peak memory stays under ~600
MB

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:43:18 -04:00
Radoslav Dimitrov
5dcae5b3ce
fix(deploy): bump registry pod memory to match doubled pgxpool size (#1225)
## Summary

Follow-up to #1221. That PR doubled pgxpool `MaxConns` from 30 to 60 per
pod without bumping the registry pod memory limit. pgxpool keeps
per-connection state in the Go process (prepared statement cache,
scratch buffers, row iteration state), so memory grew roughly
proportionally — peak per-pod usage shifted from ~330 MB to ~450 MB
against a 512 MiB limit.

## What surfaced it

Pod `tx49f` was OOMKilled at 17:01 UTC on 2026-04-29 (`exitCode 137`,
`reason: OOMKilled`). Memory history from Cloud Monitoring confirms the
regression:

| Pods | Peak 30-min memory |
|------|-------------------:|
| Pre-#1221 (`MaxConns=30`) | 178–333 MB |
| **Post-#1221** (`MaxConns=60`) | **437–449 MB** |
| Old limit | **512 MiB** ← right at the edge |

Other pod was at 394 MB at the time of inspection — could OOM again.

## Fix

`deploy/pkg/k8s/registry.go:217-225`:

| | Before | After |
|---|-------:|------:|
| `requests.memory` | 256 MiB | **512 MiB** |
| `limits.memory` | 512 MiB | **1 GiB** |

1 GiB is ~2× the current peak under load — gives room for traffic spikes
without immediate OOM risk. Either node has 4–5 GiB free allocatable
memory, so the new request fits comfortably.

## Test plan

- [x] `go build ./...` clean
- [x] `golangci-lint run` clean
- [ ] After release + prod promotion: pod memory stabilises around 450
MB peak with no OOMKills
- [ ] After release + prod promotion: tx49f restartCount stops climbing
(currently at 5)

## Deployment

Zero downtime — Deployment template change only, rolling update with
`maxSurge: 1, maxUnavailable: 0`. **No PG involvement** (no
`max_connections` change, no shared_preload_libraries change). Same
shape as a normal v1.7.x image promotion.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 14:05:09 -04:00
Radoslav Dimitrov
0a97e59ecb
deploy: update prod to v1.7.3 (#1223)
## Summary

Promotes
[v1.7.3](https://github.com/modelcontextprotocol/registry/releases/tag/v1.7.3)
to production. Contents:

- **#1220** — `RemoteURL` filter SQL rewritten to use JSONB containment
(`@>`) instead of `EXISTS jsonb_array_elements`. The new form is
GIN-indexable; the old form forced a full table scan. Local benchmark:
40,398 → 294 buffer reads, 17 ms → 1.6 ms. Maps to prod's 10,005 ms
cold-cache observation.
- **#1221** — pgxpool `MaxConns 30→60`, `MinConns 5→10`. PG
`max_connections 100→200`. Explicit PG `resources:` block (was unset).

## What this addresses

- **#1220**: yesterday's 17:08 UTC `Publish Endpoint Latency` alert
(`dev.storage/mcp` publish took 14.8s with `remotes_ms=10980` —
pinpointed by the per-phase slog from #1215).
- **#1221**: yesterday's 17:35–17:40 UTC `Availability dropped below
95%` alert and 18:17 UTC `Publish Endpoint Latency` re-fire. Both were
scraper-driven concurrency on `/v0/servers` (~15 req/s sustained from
ServiceNow + others). With the bumped pool, the queue at the Go HTTP
layer should clear faster instead of blowing up to 20–35s nginx-level
latencies.

## Deployment caveat

The PG `max_connections` change is a postmaster-level setting → CNPG
triggers a PG restart on the next prod Pulumi run. With `instances: 1`
this is brief downtime — staging took **~30s** during the equivalent
restart, with **one registry pod bouncing once** on its 8-attempt
DB-retry budget before recovering on the next kubelet restart.

**Time the merge for a low-traffic UTC window.** Alert history suggests
very early UTC (02:00–04:00) is quietest.

## Resource impact

PG node memory is currently 39% (~2.4 GiB / 6 GiB allocatable).
Worst-case PG memory growth with `max_connections=200` lands around 3–4
GiB, putting the node at ~65% — fits with headroom. Empirically, prod PG
has peaked at **413 MiB** in the last 30h of incident data, so the
proposed 4 GiB limit is ~10× the historical max — guardrail not
constraint.

## Post-merge

CNPG handles `pg_stat_statements` extension creation automatically (no
manual `CREATE EXTENSION` step needed — it was already done in v1.7.2's
deploy).

Verify after deploy:

```bash
PATH=/opt/homebrew/share/google-cloud-sdk/bin:$PATH

# max_connections actually changed
kubectl exec -i registry-pg-1 -c postgres \
  --context gke_mcp-registry-prod_us-central1-b_mcp-registry-prod \
  -- psql -U postgres -tAc "SHOW max_connections"  # expect: 200

# resources block applied
kubectl get pod registry-pg-1 \
  --context gke_mcp-registry-prod_us-central1-b_mcp-registry-prod \
  -o jsonpath='{.spec.containers[?(@.name=="postgres")].resources}{"\n"}'

# pgxpool MaxConns reflected (registry app uses 60 per pod after restart)
kubectl exec -i registry-pg-1 -c postgres \
  --context gke_mcp-registry-prod_us-central1-b_mcp-registry-prod \
  -- psql -U postgres -tAc "SELECT count(*) FROM pg_stat_activity WHERE datname='app'"
```

## Test plan

- [x] v1.7.3 release built and pushed
(`ghcr.io/modelcontextprotocol/registry:1.7.3`)
- [x] Staging deployed cleanly; PG restarted and came back with
`max_connections=200`; one staging pod bounced as expected
- [ ] Prod Pulumi run applies cleanly; brief PG restart
- [ ] Confirm `SHOW max_connections` returns 200 on prod
- [ ] Confirm `publish complete` events show `remotes_ms` < 10ms
- [ ] Watch for any "too many connections" errors during the rollout
window (none expected — Pulumi orders CNPG cluster before Deployment, so
PG accepts the new conn limit before pgxpool tries to use it)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-28 17:50:38 -04:00
127 changed files with 5753 additions and 3875 deletions

View file

@ -11,6 +11,11 @@ MCP_REGISTRY_DATABASE_URL=postgres://username:password@localhost:5432/mcp-regist
# For offline development, use: data/seed.json
MCP_REGISTRY_SEED_FROM=https://registry.modelcontextprotocol.io/v0/servers
# Validate seed data against the registry rules on import (default: true)
# Set to false for offline development when seeding from a local file, since
# data/seed.json is not guaranteed to pass validation
MCP_REGISTRY_ENABLE_REGISTRY_VALIDATION=true
# GitHub OAuth configuration
# These creds are for local development with the 'MCP Registry Login (Local)' GitHub App
# They don't provide any real privileged access, hence why it's okay that they're here
@ -27,6 +32,14 @@ MCP_REGISTRY_JWT_PRIVATE_KEY=bb2c6b424005acd5df47a9e2c87f446def86dd740c888ea3efb
# This should be disabled in prod
MCP_REGISTRY_ENABLE_ANONYMOUS_AUTH=false
# GitHub OIDC token exchange (for `mcp-publisher login github-oidc`)
# Expected `aud` claim on incoming GitHub Actions OIDC tokens. Must equal the
# scheme + host that publishers pass via `--registry` (e.g. `https://registry.example.com`).
# The publisher CLI derives the audience from `--registry` automatically; the server
# rejects all OIDC exchanges if this is unset, so set it on every deployment that
# accepts GitHub Actions publishes.
MCP_REGISTRY_GITHUB_OIDC_AUDIENCE=
# Google Cloud Identity OIDC configuration for admin access
# Enable OIDC authentication for @modelcontextprotocol.io admin accounts
MCP_REGISTRY_OIDC_ENABLED=false

View file

@ -9,5 +9,5 @@ To publish an MCP server to the registry, use the `mcp-publisher` CLI tool. See
## Development
- Use `make` targets where possible (run `make help` to see available targets)
- Run `make check` to run lint, unit tests, and integration tests
- Run `make check` to run lint, schema validation, and all tests (this also stops any running dev-compose environment)
- Run `make dev-compose` to start the local development environment

View file

@ -3,28 +3,28 @@ updates:
- package-ecosystem: gomod
directory: /
groups:
opentelemetry:
patterns:
- "go.opentelemetry.io/*"
schedule:
interval: daily
- package-ecosystem: gomod
directory: /deploy
groups:
opentelemetry:
patterns:
- "go.opentelemetry.io/*"
schedule:
interval: daily
- package-ecosystem: github-actions
directory: /
groups:
actions:
go-dependencies:
patterns:
- "*"
schedule:
interval: daily
- package-ecosystem: "docker"
directory: "/"
interval: weekly
- package-ecosystem: gomod
directory: /deploy
groups:
deploy-go-dependencies:
patterns:
- "*"
schedule:
interval: "daily"
interval: weekly
- package-ecosystem: github-actions
directory: /
groups:
github-actions:
patterns:
- "*"
schedule:
interval: weekly
- package-ecosystem: docker
directory: /
schedule:
interval: weekly

View file

@ -24,10 +24,10 @@ jobs:
environment: ${{ inputs.environment }}
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Setup Pulumi
uses: pulumi/actions@8582a9e8cc630786854029b4e09281acd6794b58
uses: pulumi/actions@8e5e406f4007fca908480587cb9893c07090f58d
with:
pulumi-version: ${{ env.PULUMI_VERSION }}

View file

@ -16,18 +16,18 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e
with:
go-version: 'stable'
cache: true
- name: Run lint
uses: golangci/golangci-lint-action@1e7e51e771db61008b38414a730f564565cf7c20
uses: golangci/golangci-lint-action@ba0d7d2ec06a0ea1cb5fa41b2e4a3ab91d21278a
with:
version: v2.11.4
version: v2.13.1
- name: Validate schemas and examples
run: make validate
@ -48,16 +48,16 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e
with:
go-version: 'stable'
cache: true
- name: Set up ko
uses: ko-build/setup-ko@v0.9
uses: ko-build/setup-ko@v0.10
- name: Run all tests
run: make test-all

View file

@ -26,7 +26,7 @@ jobs:
actions: read
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
fetch-depth: 1

View file

@ -0,0 +1,151 @@
name: Close invalid publish PRs
# Stage 2 of 2 (see detect-invalid-publish-prs.yml for stage 1).
#
# Runs in the trusted base-repo context (triggered by workflow_run, not by the
# PR itself), so it has a write token. It picks up the PR number flagged by
# stage 1 and, after independently re-validating the PR from the API, posts a
# comment pointing at the publishing docs, labels it `invalid`, and closes it.
#
# Trust boundary: the ONLY thing crossing from the untrusted stage is the PR
# number (sanitized to digits below). We re-derive every decision (state,
# author, changed files) here, so a wrong/stale artifact can never cause us to
# close a PR that doesn't actually match.
on:
workflow_run:
workflows: ["Detect invalid publish PRs"]
types: [completed]
permissions:
contents: read
pull-requests: write
issues: write # labels on PRs go through the issues API
actions: read # needed to list/download the stage-1 artifact
jobs:
close:
if: github.event.workflow_run.conclusion == 'success'
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
RUN_ID: ${{ github.event.workflow_run.id }}
COMMENT_BODY: |
Hi @__AUTHOR__ 👋 — thanks for your interest in the MCP Registry!
It looks like this PR is trying to publish an MCP server by adding or editing server files in this repository (under `servers/`, `data/servers/`, or in `data/seed.json`). That isn't how servers get published, so I'm closing this PR automatically.
**Servers are published with the [`mcp-publisher`](https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/quickstart.mdx) CLI**, not by opening a pull request against this repo. The CLI verifies that you own your namespace and submits your `server.json` directly to the live registry API.
To publish your server, follow the **[Publishing Quickstart](https://github.com/modelcontextprotocol/registry/blob/main/docs/modelcontextprotocol-io/quickstart.mdx)**. In short:
```bash
# Build the publisher CLI
make publisher
# Authenticate (e.g. via GitHub) and publish your server.json
./bin/mcp-publisher login github
./bin/mcp-publisher publish
```
Note: `data/seed.json` is seed data for **local development only** — adding entries there does not publish anything to the registry.
If you believe this was closed in error, please leave a comment and a maintainer will take a look. 🙇
_This is an automated message._
steps:
- name: Check for flagged-pr artifact
id: check
run: |
set -euo pipefail
names="$(gh api "repos/$GH_REPO/actions/runs/$RUN_ID/artifacts" --jq '.artifacts[].name' || true)"
if printf '%s\n' "$names" | grep -qx "flagged-pr"; then
echo "found=true" >> "$GITHUB_OUTPUT"
else
echo "No flagged-pr artifact on run $RUN_ID; nothing to do."
echo "found=false" >> "$GITHUB_OUTPUT"
fi
- name: Download flagged PR number
if: steps.check.outputs.found == 'true'
uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1
with:
name: flagged-pr
run-id: ${{ github.event.workflow_run.id }}
github-token: ${{ github.token }}
- name: Re-validate and close
if: steps.check.outputs.found == 'true'
run: |
set -euo pipefail
# Sanitize: the only cross-boundary input. Keep digits only.
PR_NUMBER="$(tr -dc '0-9' < pr-number.txt)"
if [ -z "$PR_NUMBER" ]; then
echo "No valid PR number in artifact; skipping."
exit 0
fi
echo "Re-validating PR #$PR_NUMBER"
state="$(gh pr view "$PR_NUMBER" --json state --jq '.state')"
if [ "$state" != "OPEN" ]; then
echo "PR #$PR_NUMBER is $state, not OPEN; skipping."
exit 0
fi
# Use the REST endpoint: `gh pr view --json` does not expose an
# authorAssociation field, so calling it there exits non-zero and,
# under `set -euo pipefail`, aborts the job before we ever close.
assoc="$(gh api "repos/$GH_REPO/pulls/$PR_NUMBER" --jq '.author_association')"
case "$assoc" in
MEMBER|OWNER|COLLABORATOR)
echo "Author association '$assoc' is trusted; skipping."
exit 0
;;
esac
# Idempotency: if a maintainer reopens after we labeled it, leave it be.
# Capture into a var first so a transient gh failure can't fail open
# (an errored fetch piped to grep would otherwise look "not labeled").
labels="$(gh pr view "$PR_NUMBER" --json labels --jq '.labels[].name' || true)"
if printf '%s\n' "$labels" | grep -qx "invalid"; then
echo "PR #$PR_NUMBER already labeled 'invalid'; skipping."
exit 0
fi
# Paginated REST endpoint (gh pr view --json files caps at 100, no pagination).
mapfile -t FILES < <(gh api --paginate "repos/$GH_REPO/pulls/$PR_NUMBER/files" --jq '.[].filename')
if [ "${#FILES[@]}" -eq 0 ]; then
echo "No files for PR #$PR_NUMBER; skipping."
exit 0
fi
# Keep this list in sync with the copy in stage 1.
publish_attempt=0
other=0
for f in "${FILES[@]}"; do
if [[ "$f" == servers/* \
|| "$f" == data/servers/* \
|| "$f" == data/data/servers/* \
|| "$f" =~ ^data/[^/]*server\.json$ \
|| "$f" == "data/seed.json" \
|| "$f" == "server.json" \
|| "$f" == "servers.json" ]]; then
publish_attempt=1
else
other=1
fi
done
if [ "$publish_attempt" -ne 1 ] || [ "$other" -ne 0 ]; then
echo "PR #$PR_NUMBER no longer matches the publish-attempt pattern; skipping."
exit 0
fi
author="$(gh pr view "$PR_NUMBER" --json author --jq '.author.login')"
body="${COMMENT_BODY//__AUTHOR__/$author}"
echo "Commenting on, labeling, and closing PR #$PR_NUMBER"
gh pr comment "$PR_NUMBER" --body "$body"
gh pr edit "$PR_NUMBER" --add-label "invalid" || echo "Could not add label; continuing."
gh pr close "$PR_NUMBER"

View file

@ -23,16 +23,16 @@ jobs:
cancel-in-progress: false
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Setup Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e
with:
go-version: 'stable'
cache: true
- name: Setup Pulumi
uses: pulumi/actions@8582a9e8cc630786854029b4e09281acd6794b58
uses: pulumi/actions@8e5e406f4007fca908480587cb9893c07090f58d
with:
pulumi-version: ${{ env.PULUMI_VERSION }}

View file

@ -22,19 +22,19 @@ jobs:
packages: write
steps:
- name: Checkout repository
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e
with:
go-version: 'stable'
cache: true
- name: Set up ko
uses: ko-build/setup-ko@v0.9
uses: ko-build/setup-ko@v0.10
- name: Log in to Container Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f
with:
registry: ghcr.io
username: ${{ github.actor }}
@ -70,16 +70,16 @@ jobs:
cancel-in-progress: false
steps:
- name: Checkout code
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Setup Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e
with:
go-version: 'stable'
cache: true
- name: Setup Pulumi
uses: pulumi/actions@8582a9e8cc630786854029b4e09281acd6794b58
uses: pulumi/actions@8e5e406f4007fca908480587cb9893c07090f58d
with:
pulumi-version: ${{ env.PULUMI_VERSION }}

View file

@ -0,0 +1,96 @@
name: Detect invalid publish PRs
# Stage 1 of 2 (see close-invalid-publish-prs.yml for stage 2).
#
# Some contributors try to "publish" a server by opening a PR that adds files
# under servers/ or edits data/seed.json. That is not how publishing works -
# servers are published with the mcp-publisher CLI against the live registry
# API. This job only DETECTS such PRs. It runs from the (untrusted) PR context
# with a read-only token, so it cannot comment on or close anything. When it
# finds a match it records just the PR number as an artifact; the privileged
# stage-2 workflow picks that up via workflow_run and acts on it.
#
# We never check out or run the PR's code - we only read changed file paths.
on:
pull_request:
types: [opened, reopened]
permissions:
contents: read
pull-requests: read
jobs:
detect:
runs-on: ubuntu-latest
env:
GH_TOKEN: ${{ github.token }}
GH_REPO: ${{ github.repository }}
PR_NUMBER: ${{ github.event.pull_request.number }}
AUTHOR_ASSOCIATION: ${{ github.event.pull_request.author_association }}
steps:
- name: Classify PR
id: classify
run: |
set -euo pipefail
match=false
# Maintainers may legitimately touch these files (e.g. dev seed data),
# so never flag their PRs.
case "$AUTHOR_ASSOCIATION" in
MEMBER|OWNER|COLLABORATOR)
echo "Author association '$AUTHOR_ASSOCIATION' is trusted; not flagging."
;;
*)
# Use the paginated REST endpoint: `gh pr view --json files` caps
# at 100 files with no pagination, which could truncate a large PR
# and cause a false match.
mapfile -t FILES < <(gh api --paginate "repos/$GH_REPO/pulls/$PR_NUMBER/files" --jq '.[].filename')
if [ "${#FILES[@]}" -gt 0 ]; then
# Flag only if the PR touches *exclusively* publish-attempt files
# and nothing else, so that legit PRs touching seed data
# alongside real code are left alone.
#
# Keep this list in sync with the copy in stage 2. It stays an
# explicit list rather than a broad `**/server.json` glob:
# because we require *every* file to match, an over-broad
# pattern would auto-close a legitimate single-file PR.
# data/servers/** is here because #1524 put its server.json
# there - a natural guess next to data/seed.json - and slipped
# through the original servers/**-only list.
publish_attempt=0
other=0
for f in "${FILES[@]}"; do
if [[ "$f" == servers/* \
|| "$f" == data/servers/* \
|| "$f" == data/data/servers/* \
|| "$f" =~ ^data/[^/]*server\.json$ \
|| "$f" == "data/seed.json" \
|| "$f" == "server.json" \
|| "$f" == "servers.json" ]]; then
publish_attempt=1
else
echo "Non-publish file changed: $f"
other=1
fi
done
if [ "$publish_attempt" -eq 1 ] && [ "$other" -eq 0 ]; then
match=true
fi
fi
;;
esac
echo "PR #$PR_NUMBER match=$match"
echo "match=$match" >> "$GITHUB_OUTPUT"
if [ "$match" = "true" ]; then
echo "$PR_NUMBER" > pr-number.txt
fi
- name: Record flagged PR number
if: steps.classify.outputs.match == 'true'
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v4
with:
name: flagged-pr
path: pr-number.txt
retention-days: 1

View file

@ -14,24 +14,24 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
with:
fetch-depth: 0
- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e
with:
go-version: 'stable'
cache: true
- name: Install cosign
uses: sigstore/cosign-installer@cad07c2e89fa2edd6e2d7bab4c1aa38e53f76003 # v4.1.1
uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
- name: Install Syft
uses: anchore/sbom-action/download-syft@v0.24.0
uses: anchore/sbom-action/download-syft@v0.24.2
- name: Run GoReleaser
uses: goreleaser/goreleaser-action@1a80836c5c9d9e5755a25cb59ec6f45a3b5f41a8
uses: goreleaser/goreleaser-action@f06c13b6b1a9625abc9e6e439d9c05a8f2190e94
with:
distribution: goreleaser
version: v2.12.0
@ -45,19 +45,19 @@ jobs:
needs: goreleaser
steps:
- name: Checkout
uses: actions/checkout@8e8c483db84b4bee98b60c0593521ed34d9990e8
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0
- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c
uses: actions/setup-go@b7ad1dad31e06c5925ef5d2fc7ad053ef454303e
with:
go-version: 'stable'
cache: true
- name: Set up ko
uses: ko-build/setup-ko@v0.9
uses: ko-build/setup-ko@v0.10
- name: Log in to Container Registry
uses: docker/login-action@4907a6ddec9925e35a0a9e82d7399ccc52663121
uses: docker/login-action@dbcb813823bdd20940b903addbd779551569679f
with:
registry: ghcr.io
username: ${{ github.actor }}

View file

@ -15,10 +15,10 @@ jobs:
steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@v7
- name: Checkout static repo
uses: actions/checkout@v6
uses: actions/checkout@v7
with:
repository: modelcontextprotocol/static
path: static-repo

View file

@ -22,7 +22,7 @@ linters:
- gocyclo
- godox
- gomoddirectives
- gomodguard
- gomodguard_v2
- goprintffuncname
- gosec
- grouper
@ -55,6 +55,10 @@ linters:
max-complexity: 20
dupl:
threshold: 300
goconst:
# Repeated literals in tests are fixture data ("1.0.0", "Test server", ...);
# hoisting them into constants hurts readability more than it helps.
ignore-tests: true
gocognit:
min-complexity: 51
nestif:

View file

View file

@ -32,7 +32,8 @@ See the [README](README.md#quick-start) for prerequisites and instructions on ru
### Running checks
```bash
# Run lint, unit tests and integration tests
# Run lint, schema validation, and all tests
# Note: this also runs `make dev-down`, stopping any running dev-compose environment
make check
```

View file

@ -10,11 +10,11 @@ The MCP registry provides MCP clients with a list of MCP servers, like an app st
**2025-09-08 update**: The registry has launched in preview 🎉 ([announcement blog post](https://blog.modelcontextprotocol.io/posts/2025-09-08-mcp-registry-preview/)). While the system is now more stable, this is still a preview release and breaking changes or data resets may occur. A general availability (GA) release will follow later. We'd love your feedback in [GitHub discussions](https://github.com/modelcontextprotocol/registry/discussions/new?category=ideas) or in the [#registry-dev Discord](https://discord.com/channels/1358869848138059966/1369487942862504016) ([joining details here](https://modelcontextprotocol.io/community/communication)).
Current key maintainers:
- **Adam Jones** (Anthropic) [@domdomegg](https://github.com/domdomegg)
Registry Working Group:
- **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov) - WG Lead
- **Tadas Antanavicius** (PulseMCP) [@tadasant](https://github.com/tadasant)
- **Toby Padilla** (GitHub) [@toby](https://github.com/toby)
- **Radoslav (Rado) Dimitrov** (Stacklok) [@rdimitrov](https://github.com/rdimitrov)
- **Bob Dickinson** (TeamSpark) [@BobDickinson](https://github.com/BobDickinson)
- **Preeti (Pree) Dewani** (Ravenmail) [@pree-dew](https://github.com/pree-dew)
## Contributing
@ -32,9 +32,9 @@ Often (but not always) ideas flow through this pipeline:
#### Pre-requisites
- **Docker**
- **Go 1.24.x**
- **Go** - version per the `go` directive in [go.mod](./go.mod); the Go toolchain fetches it for you
- **ko** - Container image builder for Go ([installation instructions](https://ko.build/install/))
- **golangci-lint v2.4.0**
- **golangci-lint** - version per the `golangci-lint-action` pin in [ci.yml](./.github/workflows/ci.yml), so local lint matches CI
#### Running the server
@ -94,7 +94,8 @@ See [the publisher guide](./docs/modelcontextprotocol-io/quickstart.mdx) for mor
#### Other commands
```bash
# Run lint, unit tests and integration tests
# Run lint, schema validation, and all tests
# Note: this also runs `make dev-down`, stopping any running dev-compose environment
make check
```
@ -110,7 +111,8 @@ For Claude and other AI tools: Always prefer make targets over custom commands w
```
├── cmd/ # Application entry points
│ └── publisher/ # Server publishing tool
│ ├── publisher/ # Server publishing tool
│ └── registry/ # Registry API server
├── data/ # Seed data
├── deploy/ # Deployment configuration (Pulumi)
├── docs/ # Documentation
@ -119,6 +121,7 @@ For Claude and other AI tools: Always prefer make targets over custom commands w
│ ├── auth/ # Authentication (GitHub OAuth, JWT, namespace blocking)
│ ├── config/ # Configuration management
│ ├── database/ # Data persistence (PostgreSQL)
│ ├── importer/ # Seed data import
│ ├── service/ # Business logic
│ ├── telemetry/ # Metrics and monitoring
│ └── validators/ # Input validation

View file

@ -14,9 +14,12 @@ make publisher
make dev-compose # Start local registry
./bin/mcp-publisher init
./bin/mcp-publisher login none --registry=http://localhost:8080
./bin/mcp-publisher publish --registry=http://localhost:8080
./bin/mcp-publisher publish
```
`publish` takes the registry URL from the token saved by `login`, so it accepts no `--registry`
flag — passing one would be read as the `server.json` path.
## Architecture
### Commands
@ -24,6 +27,7 @@ make dev-compose # Start local registry
- **`login`** - Handle authentication (github, dns, http, none)
- **`publish`** - Validate and upload servers to registry
- **`status`** - Update server lifecycle status (active, deprecated, deleted)
- **`validate`** - Validate server.json without publishing
- **`logout`** - Clear stored credentials
### Authentication Providers
@ -44,4 +48,3 @@ Optional: enables `dns` and `http` methods to sign out-of-process without direct
- **`main.go`** - CLI setup and command routing
- **`commands/`** - Command implementations with auto-detection logic
- **`auth/`** - Authentication provider implementations
- **`build.sh`** - Cross-platform build script

View file

@ -64,8 +64,8 @@ func (d Signer) GetSignedTimestamp(ctx context.Context) (*string, []byte, error)
fmt.Fprintln(os.Stdout, "Successfully read the public key from Key Vault.")
auth.PrintEcdsaP384KeyInfo(ecdsa.PublicKey{
Curve: elliptic.P384(),
X: new(big.Int).SetBytes(keyResp.Key.X),
Y: new(big.Int).SetBytes(keyResp.Key.Y),
X: new(big.Int).SetBytes(keyResp.Key.X), //nolint:staticcheck // SA1019: needs crypto/ecdh refactor
Y: new(big.Int).SetBytes(keyResp.Key.Y), //nolint:staticcheck // SA1019: needs crypto/ecdh refactor
})
timestamp := auth.GetTimestamp()

View file

@ -164,10 +164,10 @@ func parseRawPrivateKey(curve elliptic.Curve, privateKeyBytes []byte) (*ecdsa.Pr
return &ecdsa.PrivateKey{
PublicKey: ecdsa.PublicKey{
Curve: curve,
X: x,
Y: y,
X: x, //nolint:staticcheck // SA1019: needs crypto/ecdh refactor
Y: y, //nolint:staticcheck // SA1019: needs crypto/ecdh refactor
},
D: d,
D: d, //nolint:staticcheck // SA1019: needs crypto/ecdh refactor
}, nil
}

View file

@ -17,6 +17,31 @@ const (
GitHubAccessTokenURL = "https://github.com/login/oauth/access_token" // #nosec:G101
)
const (
// defaultPollInterval is the initial device-flow polling interval in
// seconds, per RFC 8628 §3.5.
defaultPollInterval = 5
// maxPollInterval caps how large the polling interval may grow. RFC 8628
// §3.5 mandates a 5-second increase on each slow_down but leaves the
// maximum to the implementation; this prevents a misbehaving auth server
// from growing the interval unboundedly.
maxPollInterval = 60
// defaultExpiresIn is the device-code lifetime in seconds used when the
// device-code response omits expires_in.
defaultExpiresIn = 900
// maxExpiresIn caps the device-code lifetime a response may claim. It sits
// well past GitHub's documented 15 minutes; the cap stops a misbehaving or
// hostile response from pushing the deadline (and the polling loop) far
// into the future.
maxExpiresIn = 3600
// incorrectDeviceCodeGraceRetries is the total number of extra polls a
// single login may spend on incorrect_device_code before giving up — a
// budget for the whole login, not per occurrence. cli/cli#9302 reports the
// same error for a code that had just been issued; a genuinely invalid code
// still fails, only a few seconds later.
incorrectDeviceCodeGraceRetries = 2
)
// DeviceCodeResponse represents the response from GitHub's device code endpoint
type DeviceCodeResponse struct {
DeviceCode string `json:"device_code"`
@ -32,6 +57,38 @@ type AccessTokenResponse struct {
TokenType string `json:"token_type"`
Scope string `json:"scope"`
Error string `json:"error,omitempty"`
// ErrorDescription and ErrorURI accompany Error in GitHub's responses;
// surfacing them turns opaque failures like "incorrect_device_code" into
// diagnosable reports.
ErrorDescription string `json:"error_description,omitempty"`
ErrorURI string `json:"error_uri,omitempty"`
}
// errorDetail renders Error together with any error_description and error_uri
// GitHub returned, so failures reach the user diagnosable rather than opaque.
func (r AccessTokenResponse) errorDetail() string {
detail := r.Error
if r.ErrorDescription != "" {
detail += ": " + r.ErrorDescription
}
if r.ErrorURI != "" {
detail += " (" + r.ErrorURI + ")"
}
return detail
}
func decodeAccessTokenResponse(statusCode int, body []byte) (AccessTokenResponse, error) {
var tokenResp AccessTokenResponse
// OAuth errors may use HTTP 400 (RFC 6749 §5.2), not just HTTP 200.
if statusCode != http.StatusOK && statusCode != http.StatusBadRequest {
return tokenResp, fmt.Errorf("token endpoint returned %d: %s", statusCode, body)
}
err := json.Unmarshal(body, &tokenResp)
if statusCode == http.StatusBadRequest && (err != nil || tokenResp.Error == "") {
return tokenResp, fmt.Errorf("token endpoint returned %d: %s", statusCode, body)
}
return tokenResp, err
}
// RegistryTokenResponse represents the response from registry's token exchange endpoint
@ -46,6 +103,24 @@ type GitHubATProvider struct {
registryURL string
providedToken string // Token provided via --token flag or MCP_GITHUB_TOKEN env var
githubToken string // In-memory GitHub token set by Login()
// accessTokenURL is the GitHub access-token polling endpoint. It is a field
// (rather than the package constant) so tests can point it at a mock server.
accessTokenURL string
// deviceCodeURL is the GitHub device-code endpoint, a field for the same
// reason as accessTokenURL.
deviceCodeURL string
// pollInterval is the initial polling interval in seconds. Defaults to
// defaultPollInterval; overridable in tests to avoid real delays. Updated
// from the device-code response's interval when GitHub returns one.
pollInterval int
// expiresIn is the device-code lifetime in seconds. Defaults to
// defaultExpiresIn; updated from the device-code response's expires_in
// when GitHub returns one.
expiresIn int
// sleep abstracts time.Sleep so tests can run without real delays and
// assert the back-off sequence. Defaults to time.Sleep.
sleep func(time.Duration)
}
// ServerHealthResponse represents the response from the health endpoint
@ -62,8 +137,13 @@ func NewGitHubATProvider(registryURL, token string) Provider {
}
return &GitHubATProvider{
registryURL: registryURL,
providedToken: token,
registryURL: registryURL,
providedToken: token,
accessTokenURL: GitHubAccessTokenURL,
deviceCodeURL: GitHubDeviceCodeURL,
pollInterval: defaultPollInterval,
expiresIn: defaultExpiresIn,
sleep: time.Sleep,
}
}
@ -149,7 +229,7 @@ func (g *GitHubATProvider) requestDeviceCode(ctx context.Context) (string, strin
return "", "", "", err
}
req, err := http.NewRequestWithContext(ctx, http.MethodPost, GitHubDeviceCodeURL, bytes.NewBuffer(jsonData))
req, err := http.NewRequestWithContext(ctx, http.MethodPost, g.deviceCodeURL, bytes.NewBuffer(jsonData))
if err != nil {
return "", "", "", err
}
@ -178,6 +258,21 @@ func (g *GitHubATProvider) requestDeviceCode(ctx context.Context) (string, strin
return "", "", "", err
}
// Per RFC 8628 §3.2 interval and expires_in are bound to this device code,
// so reset any pacing left over from a previous code before adopting them.
// Clamp both: a hostile or buggy response must not grow the interval past
// maxPollInterval (the invariant maxPollInterval exists for) nor push the
// deadline unboundedly into the future, and clamping also keeps the
// derived time.Duration well clear of int64 overflow.
g.pollInterval = defaultPollInterval
g.expiresIn = defaultExpiresIn
if deviceCodeResp.Interval > 0 {
g.pollInterval = min(deviceCodeResp.Interval, maxPollInterval)
}
if deviceCodeResp.ExpiresIn > 0 {
g.expiresIn = min(deviceCodeResp.ExpiresIn, maxExpiresIn)
}
return deviceCodeResp.DeviceCode, deviceCodeResp.UserCode, deviceCodeResp.VerificationURI, nil
}
@ -198,13 +293,28 @@ func (g *GitHubATProvider) pollForToken(ctx context.Context, deviceCode string)
return "", err
}
// Default polling interval and expiration time
interval := 5 // seconds
expiresIn := 900 // 15 minutes
// Pacing comes from the device-code response (via requestDeviceCode),
// falling back to GitHub's documented defaults.
interval := g.pollInterval
expiresIn := g.expiresIn
// Zero-value fallback: providers built directly rather than through
// requestDeviceCode (the test seam) carry no lifetime. Keep this guard.
if expiresIn <= 0 {
expiresIn = defaultExpiresIn
}
deadline := time.Now().Add(time.Duration(expiresIn) * time.Second)
graceRetries := 0
// serverErrorInterval grows the wait between consecutive 5xx retries and is
// reset by any other response.
serverErrorInterval := interval
// lastErr holds the most recent retryable failure so a deadline reached
// mid-retry reports that diagnostic instead of a bare "timed out". It is
// cleared whenever polling recovers, so a genuine user timeout after a
// recovered blip still reports plainly.
var lastErr error
for time.Now().Before(deadline) {
req, err := http.NewRequestWithContext(ctx, http.MethodPost, GitHubAccessTokenURL, bytes.NewBuffer(jsonData))
req, err := http.NewRequestWithContext(ctx, http.MethodPost, g.accessTokenURL, bytes.NewBuffer(jsonData))
if err != nil {
return "", err
}
@ -223,20 +333,54 @@ func (g *GitHubATProvider) pollForToken(ctx context.Context, deviceCode string)
return "", err
}
var tokenResp AccessTokenResponse
err = json.Unmarshal(body, &tokenResp)
// A transient 5xx must not abandon a login the user may already have
// approved in the browser. Each consecutive 5xx grows the wait by 5s up
// to maxPollInterval, so a sustained outage costs a couple of dozen
// requests rather than hundreds; the deadline bounds the number of
// these retries.
if resp.StatusCode >= http.StatusInternalServerError {
lastErr = fmt.Errorf("token endpoint returned %d", resp.StatusCode)
serverErrorInterval = min(serverErrorInterval+5, maxPollInterval)
g.sleep(time.Duration(serverErrorInterval) * time.Second)
continue
}
serverErrorInterval = interval
tokenResp, err := decodeAccessTokenResponse(resp.StatusCode, body)
if err != nil {
return "", err
}
if tokenResp.Error == "authorization_pending" {
// User hasn't authorized yet, wait and retry
time.Sleep(time.Duration(interval) * time.Second)
// Per RFC 8628 §3.5, both authorization_pending and slow_down indicate
// the client should keep polling. slow_down additionally requires that
// the polling interval be increased by 5 seconds.
if tokenResp.Error == "authorization_pending" || tokenResp.Error == "slow_down" {
if tokenResp.Error == "slow_down" {
interval += 5
if interval > maxPollInterval {
interval = maxPollInterval
}
}
lastErr = nil
g.sleep(time.Duration(interval) * time.Second)
continue
}
if tokenResp.Error != "" {
return "", fmt.Errorf("token request failed: %s", tokenResp.Error)
failure := fmt.Errorf("token request failed: %s", tokenResp.errorDetail())
// incorrect_device_code has been reported for codes that were in
// fact valid (cli/cli#9302; cause never confirmed), so spend a
// couple of grace polls before abandoning a login the user may
// have approved.
if tokenResp.Error == "incorrect_device_code" && graceRetries < incorrectDeviceCodeGraceRetries {
graceRetries++
lastErr = failure
g.sleep(time.Duration(interval) * time.Second)
continue
}
return "", failure
}
if tokenResp.AccessToken != "" {
@ -247,6 +391,9 @@ func (g *GitHubATProvider) pollForToken(ctx context.Context, deviceCode string)
return "", fmt.Errorf("failed to obtain access token")
}
if lastErr != nil {
return "", fmt.Errorf("device code authorization timed out; last response: %w", lastErr)
}
return "", fmt.Errorf("device code authorization timed out")
}

Some files were not shown because too many files have changed in this diff Show more