Skip to content

chore(deps): bump github.com/ConfigButler/krm-stream/gateway from 0.2.1 to 0.4.0 in /gateway/kube in the gomod group - #36

Closed
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/go_modules/gateway/kube/gomod-7fede64825
Closed

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/go_modules/gateway/kube/gomod-7fede64825

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Sep 14, 2026 •

Copy link
Copy Markdown
Contributor

Bumps the gomod group in /gateway/kube with 1 update: github.com/ConfigButler/krm-stream/gateway.

Updates github.com/ConfigButler/krm-stream/gateway from 0.2.1 to 0.4.0

Release notes

Sourced from github.com/ConfigButler/krm-stream/gateway's releases.

@​configbutler/krm-stream: v0.4.0

0.4.0 (2026-09-11)

⚠ BREAKING CHANGES

  • kube: SSARAuthorizer has been removed; use SubjectAccessReviewAuthorizer. The local unscoped krm-stream forwarding package has been removed; use @​configbutler/krm-stream.

Features

  • kube: remove compatibility shims and sharpen stream/save plans (#31) (7477c2d)

Bug Fixes

  • define content and redaction convergence while suppressed writes retain older RVs (#33) (8b37a92)

gateway/kube: v0.4.0

0.4.0 (2026-09-11)

⚠ BREAKING CHANGES

  • WriteSSEHeaders is removed; use Gateway.ServeStream or ServeStreamProjection, which own headers, delivery and cleanup. SSESink.Heartbeat now returns an error and its caller must stop the stream on failure. NewSSESink(io.Writer) stays generic and installs no HTTP deadline. The v1 wire protocol is unchanged.
  • kube: SSARAuthorizer has been removed; use SubjectAccessReviewAuthorizer. The local unscoped krm-stream forwarding package has been removed; use @​configbutler/krm-stream.

Features

  • bound HTTP delivery and balance stream lifecycle observations (#35) (6be6cbb)
  • kube: remove compatibility shims and sharpen stream/save plans (#31) (7477c2d)

Documentation

  • trim obsolete history and align current integration guidance (#34) (e450334)

gateway: v0.4.0

0.4.0 (2026-09-11)

⚠ BREAKING CHANGES

  • WriteSSEHeaders is removed; use Gateway.ServeStream or ServeStreamProjection, which own headers, delivery and cleanup. SSESink.Heartbeat now returns an error and its caller must stop the stream on failure. NewSSESink(io.Writer) stays generic and installs no HTTP deadline. The v1 wire protocol is unchanged.
  • kube: SSARAuthorizer has been removed; use SubjectAccessReviewAuthorizer. The local unscoped krm-stream forwarding package has been removed; use @​configbutler/krm-stream.

Features

  • bound HTTP delivery and balance stream lifecycle observations (#35) (6be6cbb)
  • kube: remove compatibility shims and sharpen stream/save plans (#31) (7477c2d)

... (truncated)

Commits
  • 9aa0013 chore: release main (#32)
  • 6be6cbb feat!: bound HTTP delivery and balance stream lifecycle observations (#35)
  • e450334 docs: trim obsolete history and align current integration guidance (#34)
  • 8b37a92 fix: define content and redaction convergence while suppressed writes retain ...
  • 7477c2d feat(kube)!: remove compatibility shims and sharpen stream/save plans (#31)
  • f38e4ca refactor(ci): validate releases once and reuse artifacts on retry (#30)
  • 2154f9d fix(ci): publish validated release commits and recover interrupted uploads (#29)
  • 209537c chore: release main (#26)
  • a8ad27a chore(deps): separate major updates and narrow Kubernetes ignores (#28)
  • f5b9f44 chore(deps): bump @​playwright/test (#22)
  • Additional commits viewable in compare view

Dependabot compatibility score

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 commands and options

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

Bumps the gomod group in /gateway/kube with 1 update: [github.com/ConfigButler/krm-stream/gateway](https://github.com/ConfigButler/krm-stream).


Updates `github.com/ConfigButler/krm-stream/gateway` from 0.2.1 to 0.4.0
- [Release notes](https://github.com/ConfigButler/krm-stream/releases)
- [Commits](gateway/v0.2.1...gateway/v0.4.0)

---
updated-dependencies:
- dependency-name: github.com/ConfigButler/krm-stream/gateway
  dependency-version: 0.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: gomod
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file go Pull requests that update go code labels Sep 14, 2026
@coderabbitai

coderabbitai Bot commented Sep 14, 2026

Copy link
Copy Markdown

Important

Review skipped

Bot user detected.

To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 6b49930a-b64b-49a5-bf9b-ee46978c9588

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

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

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@sunib

sunib commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Superseded by #40. gateway/kube now uses core API that v0.4.0 does not have (gateway.Unauthenticated, gateway.UpstreamUnavailable, StreamError.Cause), so it requires the core at the commit that introduced it. Bumping to v0.4.0 would break the adapter for anyone who go gets it. The requirement moves to the released core tag after the next release.

@sunib sunib closed this Oct 2, 2026
@dependabot @github

dependabot Bot commented on behalf of github Oct 2, 2026

Copy link
Copy Markdown
Contributor Author

This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests.

To ignore these dependencies, configure ignore rules in dependabot.yml

@dependabot
dependabot Bot deleted the dependabot/go_modules/gateway/kube/gomod-7fede64825 branch October 2, 2026 13:28
sunib added a commit that referenced this pull request Oct 2, 2026
…ng watches, and let releases own versions (#42)

* ci: let releases own the adapter's core requirement and the changelogs

Two release steps needed hand-fixing around 0.5.0, and both now run by
themselves.

The adapter's requirement on the core module was never moved by a release.
Adapter changes needing unreleased core API had to pin a pseudo-version by
hand, Dependabot proposed stale bumps (#36), and v0.5.0 shipped requiring a
commit that lives only on a merged PR branch. Now:

- gateway/kube/go.mod requires the core at its release tag, marked
  x-release-please-version, and Release Please rewrites it in every release PR
  to the version being released.
- CI's go-get check builds an unreleased adapter together with the core from
  the same commit, and builds a release by its tag alone. It refuses a
  pseudo-version (the release updater would mangle it) and a missing marker.
- Dependabot ignores the internal core module.

Release Please also inserts each version below hand-written "Unreleased"
changelog sections and never removes them, so released notes stayed labelled
unreleased. File the existing notes under the versions that shipped them, and
make CI refuse any section Release Please did not write.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: refuse redirects that would carry the caller's credential, and stop reopening watches that end early

Addresses asks 6 to 8 of krm-foyer's renewed field report.

Ask 6: client-go follows redirects and puts the configured credential on the
redirected request, so a backend holding the caller's token sent it wherever a
redirect pointed. kube.NewBackendForConfig now builds its client with the new
kube.HTTPClientFor, which refuses redirects; a refused redirect is a terminal
INTERNAL (it will not go away on retry) whose cause is kube.ErrRedirectRefused.
The shared-host example and the docs use the refusing client.

Ask 7: the stream loop reopened at once after ErrWatchClosed or
RESYNC_REQUIRED, so an upstream ending every watch before its snapshot
completed, or straight after, was reopened in a tight loop on one connection.
A cycle now counts as useful only once it has completed its snapshot and stayed
live for a second. The first early end is still recovered in band (spec §5);
a second in a row ends the connection with a non-terminal UPSTREAM_UNAVAILABLE.
A StreamError now decides before ErrWatchClosed, so an UPSTREAM_UNAVAILABLE
caused by a closed watch is no longer read as a routine close through Unwrap.

Ask 8: the operations guide says client-go retries a 429 or 5xx carrying
Retry-After up to ten times before the gateway sees it. Those retries stay on:
the API server sets the pace, the browser holds a heartbeating connection in
"syncing" meanwhile, and turning them off would trade one paced wait for a
reconnect and fresh snapshot from every browser.

Also record krm-foyer's renewed report, with its links made absolute.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: refuse redirects for participant clients, keep http.DefaultClient intact, and back off shared watches that end early

Review follow-ups for asks 6 to 8.

- The shared-host example's participant SelfSubjectReview client carried the
  participant's token through a client that followed redirects. It is now
  built on kube.HTTPClientFor too.
- rest.HTTPClientFor returns http.DefaultClient for a configuration needing no
  special transport, so installing the redirect policy on it changed every
  HTTP caller in the process. HTTPClientFor now copies the client first.
- The stream loop bounded each connection to two early cycles, but a
  SharedBackend dropped an early-ending upstream watch without any backoff, so
  a cohort of reconnecting subscribers still reopened it once each. The shared
  scope now applies the same rule to its upstream: a watch is of use once it
  has completed its snapshot and stayed live for a second; one early end is
  tolerated, a second in a row backs off. Only a useful watch's end resets the
  backoff, which also removes the delayed-recovery race structurally.
- The operations guide no longer claims that turning client-go's retries off
  requires stripping Retry-After; it states why the default is kept.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix(gateway): pass typed errors to shared subscribers even when caused by a closed watch

SharedBackend's die() classified its cause StreamError-first for the backoff,
but then still converted anything matching errors.Is(cause, ErrWatchClosed)
into RESYNC_REQUIRED for subscribers. StreamError.Unwrap exposes its Cause, so a
terminal FORBIDDEN, or an UPSTREAM_UNAVAILABLE with a retry hint, caused by a
closed watch reached the browser as a resync it retried. Decide once whether
the cause is typed, and convert only an untyped close.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* ci: require a released adapter's core requirement to equal the release version

The release check only verified that the core tag the adapter requires exists.
Had a release PR left the marked requirement at an older, tagged version, the
adapter-tag-only build would pass while resolving an older core. Compare the
two when RELEASE_VERSION is set. (CodeRabbit review on #42.)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file go Pull requests that update go code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant