Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package kargo-cli for openSUSE:Factory 
checked in at 2026-06-02 16:05:08
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/kargo-cli (Old)
 and      /work/SRC/openSUSE:Factory/.kargo-cli.new.1937 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "kargo-cli"

Tue Jun  2 16:05:08 2026 rev:53 rq:1356540 version:1.10.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/kargo-cli/kargo-cli.changes      2026-05-15 
23:55:36.890307154 +0200
+++ /work/SRC/openSUSE:Factory/.kargo-cli.new.1937/kargo-cli.changes    
2026-06-02 16:08:18.396815189 +0200
@@ -1,0 +2,8 @@
+Tue Jun 02 04:42:34 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 1.10.5:
+  * CVE Remediation
+    - Go module dependency upgrades (#6328): A sweep of go.mod
+      dependency bumps to clear additional advisories.
+
+-------------------------------------------------------------------

Old:
----
  kargo-cli-1.10.4.obscpio

New:
----
  kargo-cli-1.10.5.obscpio

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ kargo-cli.spec ++++++
--- /var/tmp/diff_new_pack.A12uZX/_old  2026-06-02 16:08:19.708869607 +0200
+++ /var/tmp/diff_new_pack.A12uZX/_new  2026-06-02 16:08:19.708869607 +0200
@@ -19,7 +19,7 @@
 %define executable_name kargo
 
 Name:           kargo-cli
-Version:        1.10.4
+Version:        1.10.5
 Release:        0
 Summary:        CLI for the Kubernetes Application lifecycle orchestration
 License:        Apache-2.0

++++++ _service ++++++
--- /var/tmp/diff_new_pack.A12uZX/_old  2026-06-02 16:08:19.764871930 +0200
+++ /var/tmp/diff_new_pack.A12uZX/_new  2026-06-02 16:08:19.772872262 +0200
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/akuity/kargo</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">v1.10.4</param>
+    <param name="revision">v1.10.5</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="versionrewrite-pattern">v(.*)</param>
     <param name="changesgenerate">enable</param>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.A12uZX/_old  2026-06-02 16:08:19.804873590 +0200
+++ /var/tmp/diff_new_pack.A12uZX/_new  2026-06-02 16:08:19.816874087 +0200
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param name="url">https://github.com/akuity/kargo</param>
-              <param 
name="changesrevision">73760176458c832e6a1533ed0d8a31aa462b659c</param></service></servicedata>
+              <param 
name="changesrevision">b2a335a22f3c8235393877817a9d756f6f695e50</param></service></servicedata>
 (No newline at EOF)
 

++++++ kargo-cli-1.10.4.obscpio -> kargo-cli-1.10.5.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/Dockerfile 
new/kargo-cli-1.10.5/Dockerfile
--- old/kargo-cli-1.10.4/Dockerfile     2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/Dockerfile     2026-05-29 21:18:01.000000000 +0200
@@ -20,7 +20,7 @@
 
####################################################################################################
 # back-end-builder
 
####################################################################################################
-FROM --platform=$BUILDPLATFORM golang:1.26.1-trixie AS back-end-builder
+FROM --platform=$BUILDPLATFORM golang:1.26.3-trixie AS back-end-builder
 
 ARG TARGETOS
 ARG TARGETARCH
@@ -72,10 +72,23 @@
 
 WORKDIR /tools
 
-RUN GRPC_HEALTH_PROBE_VERSION=v0.4.46 && \
+RUN GRPC_HEALTH_PROBE_VERSION=v0.4.50 && \
     curl -fL -o /tools/grpc_health_probe 
https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-${TARGETOS}-${TARGETARCH}
 && \
     chmod +x /tools/grpc_health_probe
 
+# Helm is required by the kustomize-build promotion step's Helm plugin. We 
source
+# the binary directly from Helm's official releases (rather than a distro 
package)
+# so we always ship a current, CVE-patched build. This is intentionally ahead 
of
+# the helm.sh/helm/v3 library in go.mod: the standalone binary carries no k8s
+# dependency cascade, so we track the latest Helm 3 minor for CVE coverage.
+ARG HELM_VERSION=v3.21.0
+RUN curl -fL -o /tmp/helm.tar.gz 
https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz && \
+    curl -fL -o /tmp/helm.tar.gz.sha256sum 
https://get.helm.sh/helm-${HELM_VERSION}-${TARGETOS}-${TARGETARCH}.tar.gz.sha256sum
 && \
+    echo "$(awk '{print $1}' /tmp/helm.tar.gz.sha256sum)  /tmp/helm.tar.gz" | 
sha256sum -c - && \
+    tar -xzf /tmp/helm.tar.gz -C /tmp && \
+    mv /tmp/${TARGETOS}-${TARGETARCH}/helm /tools/helm && \
+    chmod +x /tools/helm
+
 
####################################################################################################
 # back-end-dev
 # - no UI
@@ -87,6 +100,10 @@
 
 RUN apk update && apk add ca-certificates git gpg gpg-agent openssh-client tini
 
+# Match the published image: source Helm (needed by the kustomize-build step's
+# Helm plugin) from the official-binary "tools" stage rather than a distro
+# package.
+COPY --from=tools /tools/helm /usr/local/bin/helm
 COPY bin/credential-helper /usr/local/bin/credential-helper
 COPY bin/controlplane/kargo /usr/local/bin/kargo
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/api/go.mod 
new/kargo-cli-1.10.5/api/go.mod
--- old/kargo-cli-1.10.4/api/go.mod     2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/api/go.mod     2026-05-29 21:18:01.000000000 +0200
@@ -3,7 +3,7 @@
 go 1.26.0
 
 require (
-       connectrpc.com/connect v1.19.1
+       connectrpc.com/connect v1.20.0
        github.com/gogo/protobuf v1.3.2
        github.com/stretchr/testify v1.11.1
        google.golang.org/protobuf v1.36.11
@@ -15,22 +15,24 @@
 
 require (
        github.com/davecgh/go-spew v1.1.1 // indirect
-       github.com/fxamacker/cbor/v2 v2.9.0 // indirect
-       github.com/go-logr/logr v1.4.2 // indirect
+       github.com/fxamacker/cbor/v2 v2.9.2 // indirect
+       github.com/go-logr/logr v1.4.3 // indirect
        github.com/json-iterator/go v1.1.12 // indirect
        github.com/kr/text v0.2.0 // indirect
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // 
indirect
        github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // 
indirect
        github.com/pmezard/go-difflib v1.0.0 // indirect
+       github.com/rogpeppe/go-internal v1.14.1 // indirect
+       github.com/spf13/pflag v1.0.10 // indirect
        github.com/x448/float16 v0.8.4 // indirect
-       go.yaml.in/yaml/v2 v2.4.2 // indirect
-       golang.org/x/net v0.38.0 // indirect
-       golang.org/x/text v0.23.0 // indirect
+       go.yaml.in/yaml/v2 v2.4.4 // indirect
+       golang.org/x/net v0.54.0 // indirect
+       golang.org/x/text v0.37.0 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
        gopkg.in/yaml.v3 v3.0.1 // indirect
        k8s.io/klog/v2 v2.130.1 // indirect
        k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
-       sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+       sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
        sigs.k8s.io/randfill v1.0.0 // indirect
        sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/api/go.sum 
new/kargo-cli-1.10.5/api/go.sum
--- old/kargo-cli-1.10.4/api/go.sum     2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/api/go.sum     2026-05-29 21:18:01.000000000 +0200
@@ -1,13 +1,13 @@
-connectrpc.com/connect v1.19.1 h1:R5M57z05+90EfEvCY1b7hBxDVOUl45PrtXtAV2fOC14=
-connectrpc.com/connect v1.19.1/go.mod 
h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w=
+connectrpc.com/connect v1.20.0 h1:6TNDAB+WeNd2uolWNlYczB5E0KNNaVMNUEx8JEUsPmQ=
+connectrpc.com/connect v1.20.0/go.mod 
h1:A2ygJrukXwWy32vkCAAHNVguZrqZ+jeZ9rGRnGR4dN4=
 github.com/creack/pty v1.1.9/go.mod 
h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
 github.com/davecgh/go-spew v1.1.0/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
 github.com/davecgh/go-spew v1.1.1 
h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
 github.com/davecgh/go-spew v1.1.1/go.mod 
h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
-github.com/fxamacker/cbor/v2 v2.9.0 
h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
-github.com/fxamacker/cbor/v2 v2.9.0/go.mod 
h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
-github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
-github.com/go-logr/logr v1.4.2/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/fxamacker/cbor/v2 v2.9.2 
h1:X4Ksno9+x3cz0TZv69ec1hxP/+tymuR8PXQJyDwfh78=
+github.com/fxamacker/cbor/v2 v2.9.2/go.mod 
h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
+github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=
+github.com/go-logr/logr v1.4.3/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
 github.com/gogo/protobuf v1.3.2/go.mod 
h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
 github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
@@ -29,10 +29,10 @@
 github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod 
h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
 github.com/pmezard/go-difflib v1.0.0 
h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod 
h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
-github.com/rogpeppe/go-internal v1.13.1 
h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
-github.com/rogpeppe/go-internal v1.13.1/go.mod 
h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
-github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
-github.com/spf13/pflag v1.0.6/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/rogpeppe/go-internal v1.14.1 
h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0tI/otEQ=
+github.com/rogpeppe/go-internal v1.14.1/go.mod 
h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc=
+github.com/spf13/pflag v1.0.10 h1:4EBh2KAYBwaONj6b2Ye1GiHfwjqyROoF4RwYO+vPwFk=
+github.com/spf13/pflag v1.0.10/go.mod 
h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
 github.com/stretchr/objx v0.1.0/go.mod 
h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
 github.com/stretchr/testify v1.3.0/go.mod 
h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
 github.com/stretchr/testify v1.11.1 
h1:7s2iGBzp5EwR7/aIZr8ao5+dra3wiQyKjjFuvgVKu7U=
@@ -41,8 +41,8 @@
 github.com/x448/float16 v0.8.4/go.mod 
h1:14CWIYCyZA/cWjXOioeEpHeN/83MdbZDRQHoFcYsOfg=
 github.com/yuin/goldmark v1.1.27/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.2.1/go.mod 
h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
-go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
-go.yaml.in/yaml/v2 v2.4.2/go.mod 
h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ=
+go.yaml.in/yaml/v2 v2.4.4/go.mod 
h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ=
 go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
 go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod 
h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
@@ -54,8 +54,8 @@
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod 
h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
-golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
-golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
+golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
+golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -64,8 +64,8 @@
 golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod 
h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
-golang.org/x/text v0.23.0 h1:D71I7dUrlY+VX0gQShAThNGHFxZ13dGLBHQLVl1mJlY=
-golang.org/x/text v0.23.0/go.mod 
h1:/BLNzu4aZCJ1+kcD0DNRotWKage4q2rGVAg4o22unh4=
+golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
+golang.org/x/text v0.37.0/go.mod 
h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
 golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod 
h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
 golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod 
h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
@@ -93,8 +93,8 @@
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 
h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
 k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
-sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 
h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
-sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 
h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
 sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
 sigs.k8s.io/randfill v1.0.0/go.mod 
h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
 sigs.k8s.io/structured-merge-diff/v6 v6.3.0 
h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/go.mod new/kargo-cli-1.10.5/go.mod
--- old/kargo-cli-1.10.4/go.mod 2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/go.mod 2026-05-29 21:18:01.000000000 +0200
@@ -14,7 +14,7 @@
 require (
        cloud.google.com/go/compute/metadata v0.9.0
        code.gitea.io/sdk/gitea v0.22.1
-       connectrpc.com/connect v1.19.1
+       connectrpc.com/connect v1.20.0
        connectrpc.com/grpchealth v1.4.0
        github.com/AlecAivazis/survey/v2 v2.3.7
        github.com/Azure/azure-sdk-for-go/sdk/azcore v1.20.0
@@ -39,10 +39,10 @@
        github.com/fatih/structtag v1.2.0
        github.com/fluxcd/pkg/kustomize v1.24.0
        github.com/gin-gonic/gin v1.11.0
-       github.com/go-git/go-git/v5 v5.17.2
+       github.com/go-git/go-git/v5 v5.19.1
        github.com/go-logr/logr v1.4.3
        github.com/go-logr/zapr v1.3.0
-       github.com/go-openapi/runtime v0.29.4
+       github.com/go-openapi/runtime v0.31.0
        github.com/go-openapi/strfmt v0.26.2
        github.com/goccy/go-yaml v1.18.0
        github.com/gogo/protobuf v1.3.2
@@ -54,7 +54,7 @@
        github.com/hashicorp/golang-lru/v2 v2.0.7
        github.com/jferrl/go-githubauth v1.5.1
        github.com/kelseyhightower/envconfig v1.4.0
-       github.com/klauspost/compress v1.18.5
+       github.com/klauspost/compress v1.18.6
        github.com/ktrysmt/go-bitbucket v0.9.87
        github.com/microsoft/azure-devops-go-api/azuredevops/v7 v7.1.0
        github.com/oklog/ulid/v2 v2.1.1
@@ -74,11 +74,10 @@
        go.uber.org/ratelimit v0.3.1
        go.uber.org/zap v1.27.1
        go.yaml.in/yaml/v3 v3.0.4
-       golang.org/x/crypto v0.50.0
-       golang.org/x/net v0.53.0
+       golang.org/x/crypto v0.51.0
        golang.org/x/oauth2 v0.34.0
        golang.org/x/sync v0.20.0
-       golang.org/x/text v0.36.0
+       golang.org/x/text v0.37.0
        google.golang.org/api v0.259.0
        google.golang.org/grpc v1.79.3
        google.golang.org/protobuf v1.36.11
@@ -148,34 +147,35 @@
        github.com/fatih/color v1.16.0 // indirect
        github.com/felixge/httpsnoop v1.0.4 // indirect
        github.com/fsnotify/fsnotify v1.9.0 // indirect
-       github.com/fxamacker/cbor/v2 v2.9.0 // indirect
+       github.com/fxamacker/cbor/v2 v2.9.2 // indirect
        github.com/gabriel-vasile/mimetype v1.4.8 // indirect
        github.com/gin-contrib/sse v1.1.0 // indirect
        github.com/go-errors/errors v1.5.1 // indirect
        github.com/go-fed/httpsig v1.1.0 // indirect
        github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 // indirect
-       github.com/go-git/go-billy/v5 v5.8.0 // indirect
+       github.com/go-git/go-billy/v5 v5.9.0 // indirect
        github.com/go-gorp/gorp/v3 v3.1.0 // indirect
        github.com/go-jose/go-jose/v4 v4.1.4 // indirect
        github.com/go-logr/stdr v1.2.2 // indirect
        github.com/go-openapi/analysis v0.25.0 // indirect
        github.com/go-openapi/errors v0.22.7 // indirect
-       github.com/go-openapi/jsonpointer v0.22.5 // indirect
+       github.com/go-openapi/jsonpointer v0.23.1 // indirect
        github.com/go-openapi/jsonreference v0.21.5 // indirect
        github.com/go-openapi/loads v0.23.3 // indirect
+       github.com/go-openapi/runtime/server-middleware v0.30.0 // indirect
        github.com/go-openapi/spec v0.22.4 // indirect
-       github.com/go-openapi/swag v0.25.5 // indirect
-       github.com/go-openapi/swag/cmdutils v0.25.5 // indirect
+       github.com/go-openapi/swag v0.26.0 // indirect
+       github.com/go-openapi/swag/cmdutils v0.26.0 // indirect
        github.com/go-openapi/swag/conv v0.26.0 // indirect
        github.com/go-openapi/swag/fileutils v0.26.0 // indirect
-       github.com/go-openapi/swag/jsonname v0.25.5 // indirect
+       github.com/go-openapi/swag/jsonname v0.26.0 // indirect
        github.com/go-openapi/swag/jsonutils v0.26.0 // indirect
-       github.com/go-openapi/swag/loading v0.25.5 // indirect
-       github.com/go-openapi/swag/mangling v0.25.5 // indirect
-       github.com/go-openapi/swag/netutils v0.25.5 // indirect
+       github.com/go-openapi/swag/loading v0.26.0 // indirect
+       github.com/go-openapi/swag/mangling v0.26.0 // indirect
+       github.com/go-openapi/swag/netutils v0.26.0 // indirect
        github.com/go-openapi/swag/stringutils v0.26.0 // indirect
        github.com/go-openapi/swag/typeutils v0.26.0 // indirect
-       github.com/go-openapi/swag/yamlutils v0.25.5 // indirect
+       github.com/go-openapi/swag/yamlutils v0.26.0 // indirect
        github.com/go-openapi/validate v0.25.2 // indirect
        github.com/go-playground/locales v0.14.1 // indirect
        github.com/go-playground/universal-translator v0.18.1 // indirect
@@ -220,7 +220,7 @@
        github.com/mitchellh/go-wordwrap v1.0.1 // indirect
        github.com/mitchellh/mapstructure v1.5.0 // indirect
        github.com/mitchellh/reflectwalk v1.0.2 // indirect
-       github.com/moby/spdystream v0.5.0 // indirect
+       github.com/moby/spdystream v0.5.1 // indirect
        github.com/moby/term v0.5.2 // indirect
        github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // 
indirect
        github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // 
indirect
@@ -264,10 +264,11 @@
        go.opentelemetry.io/otel/metric v1.43.0 // indirect
        go.opentelemetry.io/otel/trace v1.43.0 // indirect
        go.uber.org/multierr v1.11.0 // indirect
-       go.yaml.in/yaml/v2 v2.4.2 // indirect
+       go.yaml.in/yaml/v2 v2.4.4 // indirect
        golang.org/x/arch v0.20.0 // indirect
-       golang.org/x/sys v0.43.0 // indirect
-       golang.org/x/term v0.42.0 // indirect
+       golang.org/x/net v0.54.0 // indirect
+       golang.org/x/sys v0.44.0 // indirect
+       golang.org/x/term v0.43.0 // indirect
        golang.org/x/time v0.14.0 // indirect
        gomodules.xyz/jsonpatch/v2 v2.4.0 // indirect
        google.golang.org/genproto/googleapis/rpc 
v0.0.0-20251222181119-0a764e51fe1b // indirect
@@ -278,7 +279,7 @@
        k8s.io/component-base v0.34.3 // indirect
        k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
        k8s.io/kubectl v0.34.2 // indirect
-       sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
+       sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 // indirect
        sigs.k8s.io/randfill v1.0.0 // indirect
        sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/go.sum new/kargo-cli-1.10.5/go.sum
--- old/kargo-cli-1.10.4/go.sum 2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/go.sum 2026-05-29 21:18:01.000000000 +0200
@@ -6,8 +6,8 @@
 cloud.google.com/go/compute/metadata v0.9.0/go.mod 
h1:E0bWwX5wTnLPedCKqk3pJmVgCBSM6qQI1yTBdEb3C10=
 code.gitea.io/sdk/gitea v0.22.1 h1:7K05KjRORyTcTYULQ/AwvlVS6pawLcWyXZcTr7gHFyA=
 code.gitea.io/sdk/gitea v0.22.1/go.mod 
h1:yyF5+GhljqvA30sRDreoyHILruNiy4ASufugzYg0VHM=
-connectrpc.com/connect v1.19.1 h1:R5M57z05+90EfEvCY1b7hBxDVOUl45PrtXtAV2fOC14=
-connectrpc.com/connect v1.19.1/go.mod 
h1:tN20fjdGlewnSFeZxLKb0xwIZ6ozc3OQs2hTXy4du9w=
+connectrpc.com/connect v1.20.0 h1:6TNDAB+WeNd2uolWNlYczB5E0KNNaVMNUEx8JEUsPmQ=
+connectrpc.com/connect v1.20.0/go.mod 
h1:A2ygJrukXwWy32vkCAAHNVguZrqZ+jeZ9rGRnGR4dN4=
 connectrpc.com/grpchealth v1.4.0 
h1:MJC96JLelARPgZTiRF9KRfY/2N9OcoQvF2EWX07v2IE=
 connectrpc.com/grpchealth v1.4.0/go.mod 
h1:WhW6m1EzTmq3Ky1FE8EfkIpSDc6TfUx2M2KqZO3ts/Q=
 dario.cat/mergo v1.0.1 h1:Ra4+bf83h2ztPIQYNP99R6m+Y7KfnARDfID+a+vLl4s=
@@ -182,8 +182,8 @@
 github.com/frankban/quicktest v1.14.6/go.mod 
h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0=
 github.com/fsnotify/fsnotify v1.9.0 
h1:2Ml+OJNzbYCTzsxtv8vKSFD9PbJjmhYF14k/jKC7S9k=
 github.com/fsnotify/fsnotify v1.9.0/go.mod 
h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0=
-github.com/fxamacker/cbor/v2 v2.9.0 
h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
-github.com/fxamacker/cbor/v2 v2.9.0/go.mod 
h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
+github.com/fxamacker/cbor/v2 v2.9.2 
h1:X4Ksno9+x3cz0TZv69ec1hxP/+tymuR8PXQJyDwfh78=
+github.com/fxamacker/cbor/v2 v2.9.2/go.mod 
h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
 github.com/gabriel-vasile/mimetype v1.4.8 
h1:FfZ3gj38NjllZIeJAmMhr+qKL8Wu+nOoI3GqacKw1NM=
 github.com/gabriel-vasile/mimetype v1.4.8/go.mod 
h1:ByKUIKGjh1ODkGM1asKUbQZOLGrPjydw3hYPU2YU9t8=
 github.com/gin-contrib/sse v1.1.0 
h1:n0w2GMuUpWDVp7qSpvze6fAu9iRxJY4Hmj6AmBOU05w=
@@ -196,10 +196,10 @@
 github.com/go-fed/httpsig v1.1.0/go.mod 
h1:RCMrTZvN1bJYtofsG4rd5NaO5obxQ5xBkdiS7xsT7bM=
 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 
h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
 github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod 
h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
-github.com/go-git/go-billy/v5 v5.8.0 
h1:I8hjc3LbBlXTtVuFNJuwYuMiHvQJDq1AT6u4DwDzZG0=
-github.com/go-git/go-billy/v5 v5.8.0/go.mod 
h1:RpvI/rw4Vr5QA+Z60c6d6LXH0rYJo0uD5SqfmrrheCY=
-github.com/go-git/go-git/v5 v5.17.2 
h1:B+nkdlxdYrvyFK4GPXVU8w1U+YkbsgciIR7f2sZJ104=
-github.com/go-git/go-git/v5 v5.17.2/go.mod 
h1:pW/VmeqkanRFqR6AljLcs7EA7FbZaN5MQqO7oZADXpo=
+github.com/go-git/go-billy/v5 v5.9.0 
h1:jItGXszUDRtR/AlferWPTMN4j38BQ88XnXKbilmmBPA=
+github.com/go-git/go-billy/v5 v5.9.0/go.mod 
h1:jCnQMLj9eUgGU7+ludSTYoZL/GGmii14RxKFj7ROgHw=
+github.com/go-git/go-git/v5 v5.19.1 
h1:nX27AnaU43/K5bKktKwgBmR9lawoYVe1Ckg0rgzzN00=
+github.com/go-git/go-git/v5 v5.19.1/go.mod 
h1:Pb1v0c7/g8aGQJwx9Us09W85yGoyvSwuhEGMH7zjDKQ=
 github.com/go-gorp/gorp/v3 v3.1.0 
h1:ItKF/Vbuj31dmV4jxA1qblpSwkl9g1typ24xoe70IGs=
 github.com/go-gorp/gorp/v3 v3.1.0/go.mod 
h1:dLEjIyyRNiXvNZ8PSmzpt1GsWAUK8kjVhEpjH8TixEw=
 github.com/go-jose/go-jose/v4 v4.1.4 
h1:moDMcTHmvE6Groj34emNPLs/qtYXRVcd6S7NHbHz3kA=
@@ -215,48 +215,50 @@
 github.com/go-openapi/analysis v0.25.0/go.mod 
h1:5WFTRE43WLkPG9r9OtlMfqkkvUTYLVVCIxLlEpyF8kE=
 github.com/go-openapi/errors v0.22.7 
h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA=
 github.com/go-openapi/errors v0.22.7/go.mod 
h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w=
-github.com/go-openapi/jsonpointer v0.22.5 
h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA=
-github.com/go-openapi/jsonpointer v0.22.5/go.mod 
h1:gyUR3sCvGSWchA2sUBJGluYMbe1zazrYWIkWPjjMUY0=
+github.com/go-openapi/jsonpointer v0.23.1 
h1:1HBACs7XIwR2RcmItfdSFlALhGbe6S92p0ry4d1GWg4=
+github.com/go-openapi/jsonpointer v0.23.1/go.mod 
h1:iWRmZTrGn7XwYhtPt/fvdSFj1OfNBngqRT2UG3BxSqY=
 github.com/go-openapi/jsonreference v0.21.5 
h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE=
 github.com/go-openapi/jsonreference v0.21.5/go.mod 
h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw=
 github.com/go-openapi/loads v0.23.3 
h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ=
 github.com/go-openapi/loads v0.23.3/go.mod 
h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA=
-github.com/go-openapi/runtime v0.29.4 
h1:k2lDxrGoSAJRdhFG2tONKMpkizY/4X1cciSdtzk4Jjo=
-github.com/go-openapi/runtime v0.29.4/go.mod 
h1:K0k/2raY6oqXJnZAgWJB2i/12QKrhUKpZcH4PfV9P18=
+github.com/go-openapi/runtime v0.31.0 
h1:vhmlo1LMjGXYTlYB0eFm0tTVuAidDHtmrL1nAABzUCg=
+github.com/go-openapi/runtime v0.31.0/go.mod 
h1:fZnoje1YWt7IrH/fHBOS1h9+VzeS1d0cHj8TTkZOaRc=
+github.com/go-openapi/runtime/server-middleware v0.30.0 
h1:8rPoJ/xv7JL8BsovaqboKETlpWBArVh8n+0L/GyePog=
+github.com/go-openapi/runtime/server-middleware v0.30.0/go.mod 
h1:OYNT/TxNvB/VK5oe4htM2jDTwlEXuejVJmu0DVZfAMs=
 github.com/go-openapi/spec v0.22.4 
h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ=
 github.com/go-openapi/spec v0.22.4/go.mod 
h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ=
 github.com/go-openapi/strfmt v0.26.2 
h1:ysjheCh4i1rmFEo2LanhELDNucNzfWTZhUDKgWWPaFM=
 github.com/go-openapi/strfmt v0.26.2/go.mod 
h1:fXh1e449cyUn2NYuz+wb3wARBUdMl7qPEZwX00nqivY=
-github.com/go-openapi/swag v0.25.5 
h1:pNkwbUEeGwMtcgxDr+2GBPAk4kT+kJ+AaB+TMKAg+TU=
-github.com/go-openapi/swag v0.25.5/go.mod 
h1:B3RT6l8q7X803JRxa2e59tHOiZlX1t8viplOcs9CwTA=
-github.com/go-openapi/swag/cmdutils v0.25.5 
h1:yh5hHrpgsw4NwM9KAEtaDTXILYzdXh/I8Whhx9hKj7c=
-github.com/go-openapi/swag/cmdutils v0.25.5/go.mod 
h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0=
+github.com/go-openapi/swag v0.26.0 
h1:GVDXCmfvhfu1BxiHo8/FA+BbKmhecHnG3varjON5/RI=
+github.com/go-openapi/swag v0.26.0/go.mod 
h1:82g3193sZJRbocs7bNCqGfIgq8pkuwVwCfhKIRlEQF0=
+github.com/go-openapi/swag/cmdutils v0.26.0 
h1:iowihOcvq7y4egO8cOq0dmfohz6wfeQ63U1EnuhO2TU=
+github.com/go-openapi/swag/cmdutils v0.26.0/go.mod 
h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
 github.com/go-openapi/swag/conv v0.26.0 
h1:5yGGsPYI1ZCva93U0AoKi/iZrNhaJEjr324YVsiD89I=
 github.com/go-openapi/swag/conv v0.26.0/go.mod 
h1:tpAmIL7X58VPnHHiSO4uE3jBeRamGsFsfdDeDtb5ECE=
 github.com/go-openapi/swag/fileutils v0.26.0 
h1:WJoPRvsA7QRiiWluowkLJa9jaYR7FCuxmDvnCgaRRxU=
 github.com/go-openapi/swag/fileutils v0.26.0/go.mod 
h1:0WDJ7lp67eNjPMO50wAWYlKvhOb6CQ37rzR7wrgI8Tc=
-github.com/go-openapi/swag/jsonname v0.25.5 
h1:8p150i44rv/Drip4vWI3kGi9+4W9TdI3US3uUYSFhSo=
-github.com/go-openapi/swag/jsonname v0.25.5/go.mod 
h1:jNqqikyiAK56uS7n8sLkdaNY/uq6+D2m2LANat09pKU=
+github.com/go-openapi/swag/jsonname v0.26.0 
h1:gV1NFX9M8avo0YSpmWogqfQISigCmpaiNci8cGECU5w=
+github.com/go-openapi/swag/jsonname v0.26.0/go.mod 
h1:urBBR8bZNoDYGr653ynhIx+gTeIz0ARZxHkAPktJK2M=
 github.com/go-openapi/swag/jsonutils v0.26.0 
h1:FawFML2iAXsPqmERscuMPIHmFsoP1tOqWkxBaKNMsnA=
 github.com/go-openapi/swag/jsonutils v0.26.0/go.mod 
h1:2VmA0CJlyFqgawOaPI9psnjFDqzyivIqLYN34t9p91E=
 github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0 
h1:apqeINu/ICHouqiRZbyFvuDge5jCmmLTqGQ9V95EaOM=
 github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0/go.mod 
h1:AyM6QT8uz5IdKxk5akv0y6u4QvcL9GWERt0Jx/F/R8Y=
-github.com/go-openapi/swag/loading v0.25.5 
h1:odQ/umlIZ1ZVRteI6ckSrvP6e2w9UTF5qgNdemJHjuU=
-github.com/go-openapi/swag/loading v0.25.5/go.mod 
h1:I8A8RaaQ4DApxhPSWLNYWh9NvmX2YKMoB9nwvv6oW6g=
-github.com/go-openapi/swag/mangling v0.25.5 
h1:hyrnvbQRS7vKePQPHHDso+k6CGn5ZBs5232UqWZmJZw=
-github.com/go-openapi/swag/mangling v0.25.5/go.mod 
h1:6hadXM/o312N/h98RwByLg088U61TPGiltQn71Iw0NY=
-github.com/go-openapi/swag/netutils v0.25.5 
h1:LZq2Xc2QI8+7838elRAaPCeqJnHODfSyOa7ZGfxDKlU=
-github.com/go-openapi/swag/netutils v0.25.5/go.mod 
h1:lHbtmj4m57APG/8H7ZcMMSWzNqIQcu0RFiXrPUara14=
+github.com/go-openapi/swag/loading v0.26.0 
h1:Apg6zaKhCJurpJer0DCxq99qwmhFddBhaMX7kilDcko=
+github.com/go-openapi/swag/loading v0.26.0/go.mod 
h1:dBxQ/6V2uBaAQdevN18VELE6xSpJWZxLX4txe12JwDg=
+github.com/go-openapi/swag/mangling v0.26.0 
h1:Du2YC4YLA/Y5m/YKQd7AnY5qq0wRKSFZTTt8ktFaXcQ=
+github.com/go-openapi/swag/mangling v0.26.0/go.mod 
h1:jifS7W9vbg+pw63bT+GI53otluMQL3CeemuyCHKwVx0=
+github.com/go-openapi/swag/netutils v0.26.0 
h1:CmZp+ZT7HrmFwrC3GdGsXBq2+42T1bjKBapcqVpIs3c=
+github.com/go-openapi/swag/netutils v0.26.0/go.mod 
h1:5iK+Ok3ZohWWex1C50BFTPexi03UaPwjW4Oj8kgrpwo=
 github.com/go-openapi/swag/stringutils v0.26.0 
h1:qZQngLxs5s7SLijc3N2ZO+fUq2o8LjuWAASSrJuh+xg=
 github.com/go-openapi/swag/stringutils v0.26.0/go.mod 
h1:sWn5uY+QIIspwPhvgnqJsH8xqFT2ZbYcvbcFanRyhFE=
 github.com/go-openapi/swag/typeutils v0.26.0 
h1:2kdEwdiNWy+JJdOvu5MA2IIg2SylWAFuuyQIKYybfq4=
 github.com/go-openapi/swag/typeutils v0.26.0/go.mod 
h1:oovDuIUvTrEHVMqWilQzKzV4YlSKgyZmFh7AlfABNVE=
-github.com/go-openapi/swag/yamlutils v0.25.5 
h1:kASCIS+oIeoc55j28T4o8KwlV2S4ZLPT6G0iq2SSbVQ=
-github.com/go-openapi/swag/yamlutils v0.25.5/go.mod 
h1:Gek1/SjjfbYvM+Iq4QGwa/2lEXde9n2j4a3wI3pNuOQ=
-github.com/go-openapi/testify/enable/yaml/v2 v2.4.2 
h1:5zRca5jw7lzVREKCZVNBpysDNBjj74rBh0N2BGQbSR0=
-github.com/go-openapi/testify/enable/yaml/v2 v2.4.2/go.mod 
h1:XVevPw5hUXuV+5AkI1u1PeAm27EQVrhXTTCPAF85LmE=
-github.com/go-openapi/testify/v2 v2.4.2 
h1:tiByHpvE9uHrrKjOszax7ZvKB7QOgizBWGBLuq0ePx4=
-github.com/go-openapi/testify/v2 v2.4.2/go.mod 
h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
+github.com/go-openapi/swag/yamlutils v0.26.0 
h1:H7O8l/8NJJQ/oiReEN+oMpnGMyt8G0hl460nRZxhLMQ=
+github.com/go-openapi/swag/yamlutils v0.26.0/go.mod 
h1:1evKEGAtP37Pkwcc7EWMF0hedX0/x3Rkvei2wtG/TbU=
+github.com/go-openapi/testify/enable/yaml/v2 v2.5.1 
h1:q9NtHwK4qHF7yZziBPvZyv7zWAIk8ok88Gh2mR6Jpc8=
+github.com/go-openapi/testify/enable/yaml/v2 v2.5.1/go.mod 
h1:JW0MXIotCYps/XsgJnG3a8Q7rE5xAiBwoOD5OfaIQBk=
+github.com/go-openapi/testify/v2 v2.5.1 
h1:TMdhCaw8fUNraVSf3Omoob1dO/AzBfhtFAPW0an6sBo=
+github.com/go-openapi/testify/v2 v2.5.1/go.mod 
h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
 github.com/go-openapi/validate v0.25.2 
h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0=
 github.com/go-openapi/validate v0.25.2/go.mod 
h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY=
 github.com/go-playground/assert/v2 v2.2.0 
h1:JvknZsQTYeFEAhQwI4qEt9cyV5ONwRHC+lYKSsYSR8s=
@@ -366,8 +368,8 @@
 github.com/keybase/go-keychain v0.0.1/go.mod 
h1:PdEILRW3i9D8JcdM+FmY6RwkHGnhHxXwkPPMeUgOK1k=
 github.com/kisielk/errcheck v1.5.0/go.mod 
h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
 github.com/kisielk/gotool v1.0.0/go.mod 
h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
-github.com/klauspost/compress v1.18.5 
h1:/h1gH5Ce+VWNLSWqPzOVn6XBO+vJbCNGvjoaGBFW2IE=
-github.com/klauspost/compress v1.18.5/go.mod 
h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
+github.com/klauspost/compress v1.18.6 
h1:2jupLlAwFm95+YDR+NwD2MEfFO9d4z4Prjl1XXDjuao=
+github.com/klauspost/compress v1.18.6/go.mod 
h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
 github.com/klauspost/cpuid/v2 v2.3.0 
h1:S4CRMLnYUhGeDFDqkGriYKdfoFlDnMtqTiI/sFzhA9Y=
 github.com/klauspost/cpuid/v2 v2.3.0/go.mod 
h1:hqwkgyIinND0mEev00jJYCxPNVRVXFQeu1XKlok6oO0=
 github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -415,8 +417,8 @@
 github.com/mitchellh/mapstructure v1.5.0/go.mod 
h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
 github.com/mitchellh/reflectwalk v1.0.2 
h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ=
 github.com/mitchellh/reflectwalk v1.0.2/go.mod 
h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw=
-github.com/moby/spdystream v0.5.0 
h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU=
-github.com/moby/spdystream v0.5.0/go.mod 
h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
+github.com/moby/spdystream v0.5.1 
h1:9sNYeYZUcci9R6/w7KDaFWEWeV4LStVG78Mpyq/Zm/Y=
+github.com/moby/spdystream v0.5.1/go.mod 
h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI=
 github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
 github.com/moby/term v0.5.2/go.mod 
h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=
 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod 
h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
@@ -616,8 +618,8 @@
 go.uber.org/ratelimit v0.3.1/go.mod 
h1:6euWsTB6U/Nb3X++xEUXA8ciPJvr19Q/0h1+oDcJhRk=
 go.uber.org/zap v1.27.1 h1:08RqriUEv8+ArZRYSTXy1LeBScaMpVSTBhCeaZYfMYc=
 go.uber.org/zap v1.27.1/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
-go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
-go.yaml.in/yaml/v2 v2.4.2/go.mod 
h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
+go.yaml.in/yaml/v2 v2.4.4 h1:tuyd0P+2Ont/d6e2rl3be67goVK4R6deVxCUX5vyPaQ=
+go.yaml.in/yaml/v2 v2.4.4/go.mod 
h1:gMZqIpDtDqOfM0uNfy0SkpRhvUryYH0Z6wdMYcacYXQ=
 go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
 go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
 golang.org/x/arch v0.20.0 h1:dx1zTU0MAE98U+TQ8BLl7XsJbgze2WnNKF/8tGp/Q6c=
@@ -627,21 +629,21 @@
 golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod 
h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod 
h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
 golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod 
h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
-golang.org/x/crypto v0.50.0 h1:zO47/JPrL6vsNkINmLoo/PH1gcxpls50DNogFvB5ZGI=
-golang.org/x/crypto v0.50.0/go.mod 
h1:3muZ7vA7PBCE6xgPX7nkzzjiUq87kRItoJQM1Yo8S+Q=
+golang.org/x/crypto v0.51.0 h1:IBPXwPfKxY7cWQZ38ZCIRPI50YLeevDLlLnyC5wRGTI=
+golang.org/x/crypto v0.51.0/go.mod 
h1:8AdwkbraGNABw2kOX6YFPs3WM22XqI4EXEd8g+x7Oc8=
 golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod 
h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
-golang.org/x/mod v0.34.0 h1:xIHgNUUnW6sYkcM5Jleh05DvLOtwc6RitGHbDk4akRI=
-golang.org/x/mod v0.34.0/go.mod h1:ykgH52iCZe79kzLLMhyCUzhMci+nQj+0XkbXpNYtVjY=
+golang.org/x/mod v0.35.0 h1:Ww1D637e6Pg+Zb2KrWfHQUnH2dQRLBQyAtpr/haaJeM=
+golang.org/x/mod v0.35.0/go.mod h1:+GwiRhIInF8wPm+4AoT6L0FA1QWAad3OMdTRx4tFYlU=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod 
h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
 golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod 
h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod 
h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
 golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod 
h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
 golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod 
h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
-golang.org/x/net v0.53.0 h1:d+qAbo5L0orcWAr0a9JweQpjXF19LMXJE8Ey7hwOdUA=
-golang.org/x/net v0.53.0/go.mod h1:JvMuJH7rrdiCfbeHoo3fCQU24Lf5JJwT9W3sJFulfgs=
+golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
+golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
 golang.org/x/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
 golang.org/x/oauth2 v0.34.0/go.mod 
h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
 golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod 
h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -664,18 +666,18 @@
 golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod 
h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.43.0 h1:Rlag2XtaFTxp19wS8MXlJwTvoh8ArU6ezoyFsMyCTNI=
-golang.org/x/sys v0.43.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
+golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod 
h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod 
h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
-golang.org/x/term v0.42.0 h1:UiKe+zDFmJobeJ5ggPwOshJIVt6/Ft0rcfrXZDLWAWY=
-golang.org/x/term v0.42.0/go.mod 
h1:Dq/D+snpsbazcBG5+F9Q1n2rXV8Ma+71xEjTRufARgY=
+golang.org/x/term v0.43.0 h1:S4RLU2sB31O/NCl+zFN9Aru9A/Cq2aqKpTZJ6B+DwT4=
+golang.org/x/term v0.43.0/go.mod 
h1:lrhlHNdQJHO+1qVYiHfFKVuVioJIheAc3fBSMFYEIsk=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
 golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
-golang.org/x/text v0.36.0 h1:JfKh3XmcRPqZPKevfXVpI1wXPTqbkE5f7JA92a55Yxg=
-golang.org/x/text v0.36.0/go.mod 
h1:NIdBknypM8iqVmPiuco0Dh6P5Jcdk8lJL0CUebqK164=
+golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
+golang.org/x/text v0.37.0/go.mod 
h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
 golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI=
 golang.org/x/time v0.14.0/go.mod 
h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod 
h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
@@ -684,8 +686,8 @@
 golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod 
h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
 golang.org/x/tools v0.1.0/go.mod 
h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
 golang.org/x/tools v0.1.12/go.mod 
h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
-golang.org/x/tools v0.43.0 h1:12BdW9CeB3Z+J/I/wj34VMl8X+fEXBxVR90JeMX5E7s=
-golang.org/x/tools v0.43.0/go.mod 
h1:uHkMso649BX2cZK6+RpuIPXS3ho2hZo4FVwfoy1vIk0=
+golang.org/x/tools v0.44.0 h1:UP4ajHPIcuMjT1GqzDWRlalUEoY+uzoZKnhOjbIPD2c=
+golang.org/x/tools v0.44.0/go.mod 
h1:KA0AfVErSdxRZIsOVipbv3rQhVXTnlU6UhKxHd1seDI=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod 
h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
@@ -754,8 +756,8 @@
 sigs.k8s.io/cli-utils v0.37.2/go.mod 
h1:V+IZZr4UoGj7gMJXklWBg6t5xbdThFBcpj4MrZuCYco=
 sigs.k8s.io/controller-runtime v0.22.4 
h1:GEjV7KV3TY8e+tJ2LCTxUTanW4z/FmNB7l327UfMq9A=
 sigs.k8s.io/controller-runtime v0.22.4/go.mod 
h1:+QX1XUpTXN4mLoblf4tqr5CQcyHPAki2HLXqQMY6vh8=
-sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 
h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
-sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730 
h1:IpInykpT6ceI+QxKBbEflcR5EXP7sU1kvOlxwZh5txg=
+sigs.k8s.io/json v0.0.0-20250730193827-2d320260d730/go.mod 
h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
 sigs.k8s.io/kustomize/api v0.20.1 
h1:iWP1Ydh3/lmldBnH/S5RXgT98vWYMaTUL1ADcr+Sv7I=
 sigs.k8s.io/kustomize/api v0.20.1/go.mod 
h1:t6hUFxO+Ph0VxIk1sKp1WS0dOjbPCtLJ4p8aADLwqjM=
 sigs.k8s.io/kustomize/kyaml v0.20.1 
h1:PCMnA2mrVbRP3NIB6v9kYCAc38uvFLVs8j/CD567A78=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/hack/tools/go.mod 
new/kargo-cli-1.10.5/hack/tools/go.mod
--- old/kargo-cli-1.10.4/hack/tools/go.mod      2026-05-14 16:28:03.000000000 
+0200
+++ new/kargo-cli-1.10.5/hack/tools/go.mod      2026-05-29 21:18:01.000000000 
+0200
@@ -8,7 +8,7 @@
        github.com/golangci/golangci-lint/v2 v2.10.1
        github.com/swaggo/swag v1.16.6
        golang.org/x/tools v0.42.0
-       helm.sh/helm/v3 v3.19.4
+       helm.sh/helm/v3 v3.19.5
        k8s.io/code-generator v0.34.3
        sigs.k8s.io/controller-tools v0.19.0
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/hack/tools/go.sum 
new/kargo-cli-1.10.5/hack/tools/go.sum
--- old/kargo-cli-1.10.4/hack/tools/go.sum      2026-05-14 16:28:03.000000000 
+0200
+++ new/kargo-cli-1.10.5/hack/tools/go.sum      2026-05-29 21:18:01.000000000 
+0200
@@ -1039,8 +1039,8 @@
 gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
 gotest.tools/v3 v3.5.2 h1:7koQfIKdy+I8UTetycgUqXWSDwpgv193Ka+qRsmBY8Q=
 gotest.tools/v3 v3.5.2/go.mod h1:LtdLGcnqToBH83WByAAi/wiwSFCArdFIUV/xxN4pcjA=
-helm.sh/helm/v3 v3.19.4 h1:E2yFBejmZBczWr5LblhjZbvAOAwVumfBO1AtN3nqI30=
-helm.sh/helm/v3 v3.19.4/go.mod h1:PC1rk7PqacpkV4acUFMLStOOis7QM9Jq3DveHBInu4s=
+helm.sh/helm/v3 v3.19.5 h1:l8zDGBhPaF2z5pTR5ASku/yZwi0qZrWthWMzvf1ZruE=
+helm.sh/helm/v3 v3.19.5/go.mod h1:PC1rk7PqacpkV4acUFMLStOOis7QM9Jq3DveHBInu4s=
 honnef.co/go/tools v0.7.0 h1:w6WUp1VbkqPEgLz4rkBzH/CSU6HkoqNLp6GstyTx3lU=
 honnef.co/go/tools v0.7.0/go.mod 
h1:pm29oPxeP3P82ISxZDgIYeOaf9ta6Pi0EWvCFoLG2vc=
 k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/kargo-base.apko.yaml 
new/kargo-cli-1.10.5/kargo-base.apko.yaml
--- old/kargo-cli-1.10.4/kargo-base.apko.yaml   2026-05-14 16:28:03.000000000 
+0200
+++ new/kargo-cli-1.10.5/kargo-base.apko.yaml   2026-05-29 21:18:01.000000000 
+0200
@@ -9,7 +9,10 @@
   - git~2
   - gpg~2
   - gpg-agent~2
-  - helm~3 # Required for Kustomize Helm plugin
+  # NOTE: Helm (required by the kustomize-build step's Helm plugin) is
+  # intentionally NOT sourced here. The Wolfi repo stopped patching Helm 3, so
+  # the binary is installed from Helm's official releases in the Dockerfile's
+  # "tools" stage instead.
   - openssh-client~10
   - tini
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/pkg/client/generated/go.mod 
new/kargo-cli-1.10.5/pkg/client/generated/go.mod
--- old/kargo-cli-1.10.4/pkg/client/generated/go.mod    2026-05-14 
16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/pkg/client/generated/go.mod    2026-05-29 
21:18:01.000000000 +0200
@@ -4,10 +4,9 @@
 
 require (
        github.com/go-openapi/errors v0.22.7
-       github.com/go-openapi/runtime v0.29.3
-       github.com/go-openapi/strfmt v0.26.1
-       github.com/go-openapi/swag v0.25.5
-       github.com/go-openapi/swag/stringutils v0.25.5
+       github.com/go-openapi/runtime v0.31.0
+       github.com/go-openapi/strfmt v0.26.2
+       github.com/go-openapi/swag v0.26.0
        github.com/go-openapi/validate v0.25.2
 )
 
@@ -15,30 +14,34 @@
        github.com/cespare/xxhash/v2 v2.3.0 // indirect
        github.com/go-logr/logr v1.4.3 // indirect
        github.com/go-logr/stdr v1.2.2 // indirect
-       github.com/go-openapi/analysis v0.24.3 // indirect
-       github.com/go-openapi/jsonpointer v0.22.5 // indirect
+       github.com/go-openapi/analysis v0.25.0 // indirect
+       github.com/go-openapi/jsonpointer v0.23.1 // indirect
        github.com/go-openapi/jsonreference v0.21.5 // indirect
        github.com/go-openapi/loads v0.23.3 // indirect
+       github.com/go-openapi/runtime/server-middleware v0.30.0 // indirect
        github.com/go-openapi/spec v0.22.4 // indirect
-       github.com/go-openapi/swag/cmdutils v0.25.5 // indirect
-       github.com/go-openapi/swag/conv v0.25.5 // indirect
-       github.com/go-openapi/swag/fileutils v0.25.5 // indirect
-       github.com/go-openapi/swag/jsonname v0.25.5 // indirect
-       github.com/go-openapi/swag/jsonutils v0.25.5 // indirect
-       github.com/go-openapi/swag/loading v0.25.5 // indirect
-       github.com/go-openapi/swag/mangling v0.25.5 // indirect
-       github.com/go-openapi/swag/netutils v0.25.5 // indirect
-       github.com/go-openapi/swag/typeutils v0.25.5 // indirect
-       github.com/go-openapi/swag/yamlutils v0.25.5 // indirect
+       github.com/go-openapi/swag/cmdutils v0.26.0 // indirect
+       github.com/go-openapi/swag/conv v0.26.0 // indirect
+       github.com/go-openapi/swag/fileutils v0.26.0 // indirect
+       github.com/go-openapi/swag/jsonname v0.26.0 // indirect
+       github.com/go-openapi/swag/jsonutils v0.26.0 // indirect
+       github.com/go-openapi/swag/loading v0.26.0 // indirect
+       github.com/go-openapi/swag/mangling v0.26.0 // indirect
+       github.com/go-openapi/swag/netutils v0.26.0 // indirect
+       github.com/go-openapi/swag/stringutils v0.26.0 // indirect
+       github.com/go-openapi/swag/typeutils v0.26.0 // indirect
+       github.com/go-openapi/swag/yamlutils v0.26.0 // indirect
+       github.com/go-openapi/testify/enable/yaml/v2 v2.5.1 // indirect
+       github.com/go-openapi/testify/v2 v2.5.1 // indirect
        github.com/go-viper/mapstructure/v2 v2.5.0 // indirect
        github.com/google/uuid v1.6.0 // indirect
        github.com/oklog/ulid/v2 v2.1.1 // indirect
        go.opentelemetry.io/auto/sdk v1.2.1 // indirect
-       go.opentelemetry.io/otel v1.41.0 // indirect
-       go.opentelemetry.io/otel/metric v1.41.0 // indirect
-       go.opentelemetry.io/otel/trace v1.41.0 // indirect
+       go.opentelemetry.io/otel v1.43.0 // indirect
+       go.opentelemetry.io/otel/metric v1.43.0 // indirect
+       go.opentelemetry.io/otel/trace v1.43.0 // indirect
        go.yaml.in/yaml/v3 v3.0.4 // indirect
-       golang.org/x/net v0.50.0 // indirect
-       golang.org/x/sync v0.19.0 // indirect
-       golang.org/x/text v0.34.0 // indirect
+       golang.org/x/net v0.54.0 // indirect
+       golang.org/x/sync v0.20.0 // indirect
+       golang.org/x/text v0.37.0 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/pkg/client/generated/go.sum 
new/kargo-cli-1.10.5/pkg/client/generated/go.sum
--- old/kargo-cli-1.10.4/pkg/client/generated/go.sum    2026-05-14 
16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/pkg/client/generated/go.sum    2026-05-29 
21:18:01.000000000 +0200
@@ -7,52 +7,54 @@
 github.com/go-logr/logr v1.4.3/go.mod 
h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
 github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
 github.com/go-logr/stdr v1.2.2/go.mod 
h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
-github.com/go-openapi/analysis v0.24.3 
h1:a1hrvMr8X0Xt69KP5uVTu5jH62DscmDifrLzNglAayk=
-github.com/go-openapi/analysis v0.24.3/go.mod 
h1:Nc+dWJ/FxZbhSow5Yh3ozg5CLJioB+XXT6MdLvJUsUw=
+github.com/go-openapi/analysis v0.25.0 
h1:EnjAq1yO8wEO9HbPmY8vLPEIkdZuuFhCAKBPvCB7bCs=
+github.com/go-openapi/analysis v0.25.0/go.mod 
h1:5WFTRE43WLkPG9r9OtlMfqkkvUTYLVVCIxLlEpyF8kE=
 github.com/go-openapi/errors v0.22.7 
h1:JLFBGC0Apwdzw3484MmBqspjPbwa2SHvpDm0u5aGhUA=
 github.com/go-openapi/errors v0.22.7/go.mod 
h1://QW6SD9OsWtH6gHllUCddOXDL0tk0ZGNYHwsw4sW3w=
-github.com/go-openapi/jsonpointer v0.22.5 
h1:8on/0Yp4uTb9f4XvTrM2+1CPrV05QPZXu+rvu2o9jcA=
-github.com/go-openapi/jsonpointer v0.22.5/go.mod 
h1:gyUR3sCvGSWchA2sUBJGluYMbe1zazrYWIkWPjjMUY0=
+github.com/go-openapi/jsonpointer v0.23.1 
h1:1HBACs7XIwR2RcmItfdSFlALhGbe6S92p0ry4d1GWg4=
+github.com/go-openapi/jsonpointer v0.23.1/go.mod 
h1:iWRmZTrGn7XwYhtPt/fvdSFj1OfNBngqRT2UG3BxSqY=
 github.com/go-openapi/jsonreference v0.21.5 
h1:6uCGVXU/aNF13AQNggxfysJ+5ZcU4nEAe+pJyVWRdiE=
 github.com/go-openapi/jsonreference v0.21.5/go.mod 
h1:u25Bw85sX4E2jzFodh1FOKMTZLcfifd1Q+iKKOUxExw=
 github.com/go-openapi/loads v0.23.3 
h1:g5Xap1JfwKkUnZdn+S0L3SzBDpcTIYzZ5Qaag0YDkKQ=
 github.com/go-openapi/loads v0.23.3/go.mod 
h1:NOH07zLajXo8y55hom0omlHWDVVvCwBM/S+csCK8LqA=
-github.com/go-openapi/runtime v0.29.3 
h1:h5twGaEqxtQg40ePiYm9vFFH1q06Czd7Ot6ufdK0w/Y=
-github.com/go-openapi/runtime v0.29.3/go.mod 
h1:8A1W0/L5eyNJvKciqZtvIVQvYO66NlB7INMSZ9bw/oI=
+github.com/go-openapi/runtime v0.31.0 
h1:vhmlo1LMjGXYTlYB0eFm0tTVuAidDHtmrL1nAABzUCg=
+github.com/go-openapi/runtime v0.31.0/go.mod 
h1:fZnoje1YWt7IrH/fHBOS1h9+VzeS1d0cHj8TTkZOaRc=
+github.com/go-openapi/runtime/server-middleware v0.30.0 
h1:8rPoJ/xv7JL8BsovaqboKETlpWBArVh8n+0L/GyePog=
+github.com/go-openapi/runtime/server-middleware v0.30.0/go.mod 
h1:OYNT/TxNvB/VK5oe4htM2jDTwlEXuejVJmu0DVZfAMs=
 github.com/go-openapi/spec v0.22.4 
h1:4pxGjipMKu0FzFiu/DPwN3CTBRlVM2yLf/YTWorYfDQ=
 github.com/go-openapi/spec v0.22.4/go.mod 
h1:WQ6Ai0VPWMZgMT4XySjlRIE6GP1bGQOtEThn3gcWLtQ=
-github.com/go-openapi/strfmt v0.26.1 
h1:7zGCHji7zSYDC2tCXIusoxYQz/48jAf2q+sF6wXTG+c=
-github.com/go-openapi/strfmt v0.26.1/go.mod 
h1:Zslk5VZPOISLwmWTMBIS7oiVFem1o1EI6zULY8Uer7Y=
-github.com/go-openapi/swag v0.25.5 
h1:pNkwbUEeGwMtcgxDr+2GBPAk4kT+kJ+AaB+TMKAg+TU=
-github.com/go-openapi/swag v0.25.5/go.mod 
h1:B3RT6l8q7X803JRxa2e59tHOiZlX1t8viplOcs9CwTA=
-github.com/go-openapi/swag/cmdutils v0.25.5 
h1:yh5hHrpgsw4NwM9KAEtaDTXILYzdXh/I8Whhx9hKj7c=
-github.com/go-openapi/swag/cmdutils v0.25.5/go.mod 
h1:pdae/AFo6WxLl5L0rq87eRzVPm/XRHM3MoYgRMvG4A0=
-github.com/go-openapi/swag/conv v0.25.5 
h1:wAXBYEXJjoKwE5+vc9YHhpQOFj2JYBMF2DUi+tGu97g=
-github.com/go-openapi/swag/conv v0.25.5/go.mod 
h1:CuJ1eWvh1c4ORKx7unQnFGyvBbNlRKbnRyAvDvzWA4k=
-github.com/go-openapi/swag/fileutils v0.25.5 
h1:B6JTdOcs2c0dBIs9HnkyTW+5gC+8NIhVBUwERkFhMWk=
-github.com/go-openapi/swag/fileutils v0.25.5/go.mod 
h1:V3cT9UdMQIaH4WiTrUc9EPtVA4txS0TOmRURmhGF4kc=
-github.com/go-openapi/swag/jsonname v0.25.5 
h1:8p150i44rv/Drip4vWI3kGi9+4W9TdI3US3uUYSFhSo=
-github.com/go-openapi/swag/jsonname v0.25.5/go.mod 
h1:jNqqikyiAK56uS7n8sLkdaNY/uq6+D2m2LANat09pKU=
-github.com/go-openapi/swag/jsonutils v0.25.5 
h1:XUZF8awQr75MXeC+/iaw5usY/iM7nXPDwdG3Jbl9vYo=
-github.com/go-openapi/swag/jsonutils v0.25.5/go.mod 
h1:48FXUaz8YsDAA9s5AnaUvAmry1UcLcNVWUjY42XkrN4=
-github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5 
h1:SX6sE4FrGb4sEnnxbFL/25yZBb5Hcg1inLeErd86Y1U=
-github.com/go-openapi/swag/jsonutils/fixtures_test v0.25.5/go.mod 
h1:/2KvOTrKWjVA5Xli3DZWdMCZDzz3uV/T7bXwrKWPquo=
-github.com/go-openapi/swag/loading v0.25.5 
h1:odQ/umlIZ1ZVRteI6ckSrvP6e2w9UTF5qgNdemJHjuU=
-github.com/go-openapi/swag/loading v0.25.5/go.mod 
h1:I8A8RaaQ4DApxhPSWLNYWh9NvmX2YKMoB9nwvv6oW6g=
-github.com/go-openapi/swag/mangling v0.25.5 
h1:hyrnvbQRS7vKePQPHHDso+k6CGn5ZBs5232UqWZmJZw=
-github.com/go-openapi/swag/mangling v0.25.5/go.mod 
h1:6hadXM/o312N/h98RwByLg088U61TPGiltQn71Iw0NY=
-github.com/go-openapi/swag/netutils v0.25.5 
h1:LZq2Xc2QI8+7838elRAaPCeqJnHODfSyOa7ZGfxDKlU=
-github.com/go-openapi/swag/netutils v0.25.5/go.mod 
h1:lHbtmj4m57APG/8H7ZcMMSWzNqIQcu0RFiXrPUara14=
-github.com/go-openapi/swag/stringutils v0.25.5 
h1:NVkoDOA8YBgtAR/zvCx5rhJKtZF3IzXcDdwOsYzrB6M=
-github.com/go-openapi/swag/stringutils v0.25.5/go.mod 
h1:PKK8EZdu4QJq8iezt17HM8RXnLAzY7gW0O1KKarrZII=
-github.com/go-openapi/swag/typeutils v0.25.5 
h1:EFJ+PCga2HfHGdo8s8VJXEVbeXRCYwzzr9u4rJk7L7E=
-github.com/go-openapi/swag/typeutils v0.25.5/go.mod 
h1:itmFmScAYE1bSD8C4rS0W+0InZUBrB2xSPbWt6DLGuc=
-github.com/go-openapi/swag/yamlutils v0.25.5 
h1:kASCIS+oIeoc55j28T4o8KwlV2S4ZLPT6G0iq2SSbVQ=
-github.com/go-openapi/swag/yamlutils v0.25.5/go.mod 
h1:Gek1/SjjfbYvM+Iq4QGwa/2lEXde9n2j4a3wI3pNuOQ=
-github.com/go-openapi/testify/enable/yaml/v2 v2.4.1 
h1:NZOrZmIb6PTv5LTFxr5/mKV/FjbUzGE7E6gLz7vFoOQ=
-github.com/go-openapi/testify/enable/yaml/v2 v2.4.1/go.mod 
h1:r7dwsujEHawapMsxA69i+XMGZrQ5tRauhLAjV/sxg3Q=
-github.com/go-openapi/testify/v2 v2.4.1 
h1:zB34HDKj4tHwyUQHrUkpV0Q0iXQ6dUCOQtIqn8hE6Iw=
-github.com/go-openapi/testify/v2 v2.4.1/go.mod 
h1:HCPmvFFnheKK2BuwSA0TbbdxJ3I16pjwMkYkP4Ywn54=
+github.com/go-openapi/strfmt v0.26.2 
h1:ysjheCh4i1rmFEo2LanhELDNucNzfWTZhUDKgWWPaFM=
+github.com/go-openapi/strfmt v0.26.2/go.mod 
h1:fXh1e449cyUn2NYuz+wb3wARBUdMl7qPEZwX00nqivY=
+github.com/go-openapi/swag v0.26.0 
h1:GVDXCmfvhfu1BxiHo8/FA+BbKmhecHnG3varjON5/RI=
+github.com/go-openapi/swag v0.26.0/go.mod 
h1:82g3193sZJRbocs7bNCqGfIgq8pkuwVwCfhKIRlEQF0=
+github.com/go-openapi/swag/cmdutils v0.26.0 
h1:iowihOcvq7y4egO8cOq0dmfohz6wfeQ63U1EnuhO2TU=
+github.com/go-openapi/swag/cmdutils v0.26.0/go.mod 
h1:Sm1MVFMkF6guJJ+pQqHnQA3N0j9qALV3NxzDSv6bETM=
+github.com/go-openapi/swag/conv v0.26.0 
h1:5yGGsPYI1ZCva93U0AoKi/iZrNhaJEjr324YVsiD89I=
+github.com/go-openapi/swag/conv v0.26.0/go.mod 
h1:tpAmIL7X58VPnHHiSO4uE3jBeRamGsFsfdDeDtb5ECE=
+github.com/go-openapi/swag/fileutils v0.26.0 
h1:WJoPRvsA7QRiiWluowkLJa9jaYR7FCuxmDvnCgaRRxU=
+github.com/go-openapi/swag/fileutils v0.26.0/go.mod 
h1:0WDJ7lp67eNjPMO50wAWYlKvhOb6CQ37rzR7wrgI8Tc=
+github.com/go-openapi/swag/jsonname v0.26.0 
h1:gV1NFX9M8avo0YSpmWogqfQISigCmpaiNci8cGECU5w=
+github.com/go-openapi/swag/jsonname v0.26.0/go.mod 
h1:urBBR8bZNoDYGr653ynhIx+gTeIz0ARZxHkAPktJK2M=
+github.com/go-openapi/swag/jsonutils v0.26.0 
h1:FawFML2iAXsPqmERscuMPIHmFsoP1tOqWkxBaKNMsnA=
+github.com/go-openapi/swag/jsonutils v0.26.0/go.mod 
h1:2VmA0CJlyFqgawOaPI9psnjFDqzyivIqLYN34t9p91E=
+github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0 
h1:apqeINu/ICHouqiRZbyFvuDge5jCmmLTqGQ9V95EaOM=
+github.com/go-openapi/swag/jsonutils/fixtures_test v0.26.0/go.mod 
h1:AyM6QT8uz5IdKxk5akv0y6u4QvcL9GWERt0Jx/F/R8Y=
+github.com/go-openapi/swag/loading v0.26.0 
h1:Apg6zaKhCJurpJer0DCxq99qwmhFddBhaMX7kilDcko=
+github.com/go-openapi/swag/loading v0.26.0/go.mod 
h1:dBxQ/6V2uBaAQdevN18VELE6xSpJWZxLX4txe12JwDg=
+github.com/go-openapi/swag/mangling v0.26.0 
h1:Du2YC4YLA/Y5m/YKQd7AnY5qq0wRKSFZTTt8ktFaXcQ=
+github.com/go-openapi/swag/mangling v0.26.0/go.mod 
h1:jifS7W9vbg+pw63bT+GI53otluMQL3CeemuyCHKwVx0=
+github.com/go-openapi/swag/netutils v0.26.0 
h1:CmZp+ZT7HrmFwrC3GdGsXBq2+42T1bjKBapcqVpIs3c=
+github.com/go-openapi/swag/netutils v0.26.0/go.mod 
h1:5iK+Ok3ZohWWex1C50BFTPexi03UaPwjW4Oj8kgrpwo=
+github.com/go-openapi/swag/stringutils v0.26.0 
h1:qZQngLxs5s7SLijc3N2ZO+fUq2o8LjuWAASSrJuh+xg=
+github.com/go-openapi/swag/stringutils v0.26.0/go.mod 
h1:sWn5uY+QIIspwPhvgnqJsH8xqFT2ZbYcvbcFanRyhFE=
+github.com/go-openapi/swag/typeutils v0.26.0 
h1:2kdEwdiNWy+JJdOvu5MA2IIg2SylWAFuuyQIKYybfq4=
+github.com/go-openapi/swag/typeutils v0.26.0/go.mod 
h1:oovDuIUvTrEHVMqWilQzKzV4YlSKgyZmFh7AlfABNVE=
+github.com/go-openapi/swag/yamlutils v0.26.0 
h1:H7O8l/8NJJQ/oiReEN+oMpnGMyt8G0hl460nRZxhLMQ=
+github.com/go-openapi/swag/yamlutils v0.26.0/go.mod 
h1:1evKEGAtP37Pkwcc7EWMF0hedX0/x3Rkvei2wtG/TbU=
+github.com/go-openapi/testify/enable/yaml/v2 v2.5.1 
h1:q9NtHwK4qHF7yZziBPvZyv7zWAIk8ok88Gh2mR6Jpc8=
+github.com/go-openapi/testify/enable/yaml/v2 v2.5.1/go.mod 
h1:JW0MXIotCYps/XsgJnG3a8Q7rE5xAiBwoOD5OfaIQBk=
+github.com/go-openapi/testify/v2 v2.5.1 
h1:TMdhCaw8fUNraVSf3Omoob1dO/AzBfhtFAPW0an6sBo=
+github.com/go-openapi/testify/v2 v2.5.1/go.mod 
h1:SgsVHtfooshd0tublTtJ50FPKhujf47YRqauXXOUxfw=
 github.com/go-openapi/validate v0.25.2 
h1:12NsfLAwGegqbGWr2CnvT65X/Q2USJipmJ9b7xDJZz0=
 github.com/go-openapi/validate v0.25.2/go.mod 
h1:Pgl1LpPPGFnZ+ys4/hTlDiRYQdI1ocKypgE+8Q8BLfY=
 github.com/go-viper/mapstructure/v2 v2.5.0 
h1:vM5IJoUAy3d7zRSVtIwQgBj7BiWtMPfmPEgAXnvj1Ro=
@@ -76,24 +78,24 @@
 github.com/stretchr/testify v1.11.1/go.mod 
h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U=
 go.opentelemetry.io/auto/sdk v1.2.1 
h1:jXsnJ4Lmnqd11kwkBV2LgLoFMZKizbCi5fNZ/ipaZ64=
 go.opentelemetry.io/auto/sdk v1.2.1/go.mod 
h1:KRTj+aOaElaLi+wW1kO/DZRXwkF4C5xPbEe3ZiIhN7Y=
-go.opentelemetry.io/otel v1.41.0 
h1:YlEwVsGAlCvczDILpUXpIpPSL/VPugt7zHThEMLce1c=
-go.opentelemetry.io/otel v1.41.0/go.mod 
h1:Yt4UwgEKeT05QbLwbyHXEwhnjxNO6D8L5PQP51/46dE=
-go.opentelemetry.io/otel/metric v1.41.0 
h1:rFnDcs4gRzBcsO9tS8LCpgR0dxg4aaxWlJxCno7JlTQ=
-go.opentelemetry.io/otel/metric v1.41.0/go.mod 
h1:xPvCwd9pU0VN8tPZYzDZV/BMj9CM9vs00GuBjeKhJps=
-go.opentelemetry.io/otel/sdk v1.41.0 
h1:YPIEXKmiAwkGl3Gu1huk1aYWwtpRLeskpV+wPisxBp8=
-go.opentelemetry.io/otel/sdk v1.41.0/go.mod 
h1:ahFdU0G5y8IxglBf0QBJXgSe7agzjE4GiTJ6HT9ud90=
-go.opentelemetry.io/otel/trace v1.41.0 
h1:Vbk2co6bhj8L59ZJ6/xFTskY+tGAbOnCtQGVVa9TIN0=
-go.opentelemetry.io/otel/trace v1.41.0/go.mod 
h1:U1NU4ULCoxeDKc09yCWdWe+3QoyweJcISEVa1RBzOis=
+go.opentelemetry.io/otel v1.43.0 
h1:mYIM03dnh5zfN7HautFE4ieIig9amkNANT+xcVxAj9I=
+go.opentelemetry.io/otel v1.43.0/go.mod 
h1:JuG+u74mvjvcm8vj8pI5XiHy1zDeoCS2LB1spIq7Ay0=
+go.opentelemetry.io/otel/metric v1.43.0 
h1:d7638QeInOnuwOONPp4JAOGfbCEpYb+K6DVWvdxGzgM=
+go.opentelemetry.io/otel/metric v1.43.0/go.mod 
h1:RDnPtIxvqlgO8GRW18W6Z/4P462ldprJtfxHxyKd2PY=
+go.opentelemetry.io/otel/sdk v1.43.0 
h1:pi5mE86i5rTeLXqoF/hhiBtUNcrAGHLKQdhg4h4V9Dg=
+go.opentelemetry.io/otel/sdk v1.43.0/go.mod 
h1:P+IkVU3iWukmiit/Yf9AWvpyRDlUeBaRg6Y+C58QHzg=
+go.opentelemetry.io/otel/trace v1.43.0 
h1:BkNrHpup+4k4w+ZZ86CZoHHEkohws8AY+WTX09nk+3A=
+go.opentelemetry.io/otel/trace v1.43.0/go.mod 
h1:/QJhyVBUUswCphDVxq+8mld+AvhXZLhe+8WVFxiFff0=
 go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
 go.yaml.in/yaml/v3 v3.0.4/go.mod 
h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
-golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
-golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
-golang.org/x/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
-golang.org/x/sync v0.19.0/go.mod 
h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
-golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
-golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
-golang.org/x/text v0.34.0 h1:oL/Qq0Kdaqxa1KbNeMKwQq0reLCCaFtqu2eNuSeNHbk=
-golang.org/x/text v0.34.0/go.mod 
h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
+golang.org/x/net v0.54.0 h1:2zJIZAxAHV/OHCDTCOHAYehQzLfSXuf/5SoL/Dv6w/w=
+golang.org/x/net v0.54.0/go.mod h1:Sj4oj8jK6XmHpBZU/zWHw3BV3abl4Kvi+Ut7cQcY+cQ=
+golang.org/x/sync v0.20.0 h1:e0PTpb7pjO8GAtTs2dQ6jYa5BWYlMuX047Dco/pItO4=
+golang.org/x/sync v0.20.0/go.mod 
h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
+golang.org/x/sys v0.44.0 h1:ildZl3J4uzeKP07r2F++Op7E9B29JRUy+a27EibtBTQ=
+golang.org/x/sys v0.44.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
+golang.org/x/text v0.37.0 h1:Cqjiwd9eSg8e0QAkyCaQTNHFIIzWtidPahFWR83rTrc=
+golang.org/x/text v0.37.0/go.mod 
h1:a5sjxXGs9hsn/AJVwuElvCAo9v8QYLzvavO5z2PiM38=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod 
h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c 
h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
 gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod 
h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kargo-cli-1.10.4/pkg/controller/management/projects/projects.go 
new/kargo-cli-1.10.5/pkg/controller/management/projects/projects.go
--- old/kargo-cli-1.10.4/pkg/controller/management/projects/projects.go 
2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/pkg/controller/management/projects/projects.go 
2026-05-29 21:18:01.000000000 +0200
@@ -898,7 +898,7 @@
                                },
                                { // Full access to all mutable Kargo resource 
types
                                        APIGroups: 
[]string{kargoapi.GroupVersion.Group},
-                                       Resources: []string{"freights", 
"stages", "warehouses", "projectconfigs"},
+                                       Resources: []string{"freights", 
"projectconfigs", "promotiontasks", "stages", "warehouses"},
                                        Verbs:     []string{"*"},
                                },
                                { // Promote permission on all stages
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/helm_template_runner.go 
new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/helm_template_runner.go
--- old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/helm_template_runner.go   
2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/helm_template_runner.go   
2026-05-29 21:18:01.000000000 +0200
@@ -397,6 +397,13 @@
                        fileName = fmt.Sprintf("resource-%d.yaml", i)
                }
 
+               // Filenames are derived from rendered resource metadata, which 
is
+               // untrusted input. Reject anything that isn't a plain filename 
so a
+               // malicious or malformed manifest cannot write outside outPath.
+               if err = validateGeneratedResourceFilename(fileName); err != 
nil {
+                       return err
+               }
+
                // Write the resource to the output directory.
                //
                // #nosec G703 -- Contextually, if this was constructed from a
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/helm_template_runner_test.go 
new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/helm_template_runner_test.go
--- 
old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/helm_template_runner_test.go  
    2026-05-14 16:28:03.000000000 +0200
+++ 
new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/helm_template_runner_test.go  
    2026-05-29 21:18:01.000000000 +0200
@@ -1281,6 +1281,34 @@
                        },
                },
                {
+                       name: "flat layout rejects manifest metadata that would 
escape output dir",
+                       cfg: builtin.HelmTemplateConfig{
+                               OutPath:   "output",
+                               OutLayout: ptr.To(builtin.Flat),
+                       },
+                       rls: &release.Release{
+                               Manifest: `---
+apiVersion: v1
+kind: ../outside/marker
+metadata:
+  name: written
+data:
+  key: value`,
+                       },
+                       setup: func(t *testing.T) (workDir string) {
+                               workDir = t.TempDir()
+                               require.NoError(t, 
os.MkdirAll(filepath.Join(workDir, "outside"), 0o700))
+                               return workDir
+                       },
+                       assertions: func(t *testing.T, workDir string, err 
error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                               assert.NoFileExists(
+                                       t,
+                                       filepath.Join(workDir, "outside", 
"marker-written.yaml"),
+                               )
+                       },
+               },
+               {
                        name: "skip test hooks",
                        cfg: builtin.HelmTemplateConfig{
                                OutPath:   "output",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/kustomize_builder.go 
new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/kustomize_builder.go
--- old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/kustomize_builder.go      
2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/kustomize_builder.go      
2026-05-29 21:18:01.000000000 +0200
@@ -213,6 +213,12 @@
 }
 
 func (k *kustomizeBuilder) writeResource(path, fName string, res 
*resource.Resource) error {
+       // Filenames are derived from rendered resource metadata, which is 
untrusted
+       // input. Reject anything that isn't a plain filename so a malicious or
+       // malformed resource cannot write outside path.
+       if err := validateGeneratedResourceFilename(fName); err != nil {
+               return err
+       }
        m, err := res.Map()
        if err != nil {
                return err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/kustomize_builder_test.go 
new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/kustomize_builder_test.go
--- old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/kustomize_builder_test.go 
2026-05-14 16:28:03.000000000 +0200
+++ new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/kustomize_builder_test.go 
2026-05-29 21:18:01.000000000 +0200
@@ -396,6 +396,37 @@
                        },
                },
                {
+                       name: "output directory rejects resource metadata that 
would escape it",
+                       setupFiles: func(t *testing.T, dir string) {
+                               require.NoError(t, 
os.WriteFile(filepath.Join(dir, "kustomization.yaml"), []byte(`
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- deployment.yaml
+`), 0o600))
+                               require.NoError(t, 
os.WriteFile(filepath.Join(dir, "deployment.yaml"), []byte(`---
+apiVersion: v1
+kind: ../owned/marker
+metadata:
+  name: written
+`), 0o600))
+                               require.NoError(t, 
os.MkdirAll(filepath.Join(dir, "owned"), 0o700))
+                       },
+                       config: builtin.KustomizeBuildConfig{
+                               Path:    ".",
+                               OutPath: "output/",
+                       },
+                       assertions: func(t *testing.T, dir string, result 
promotion.StepResult, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                               assert.Equal(
+                                       t,
+                                       promotion.StepResult{Status: 
kargoapi.PromotionStepStatusErrored},
+                                       result,
+                               )
+                               assert.NoFileExists(t, filepath.Join(dir, 
"owned", "marker-written.yaml"))
+                       },
+               },
+               {
                        name:       "kustomization file not found",
                        setupFiles: func(*testing.T, string) {},
                        config: builtin.KustomizeBuildConfig{
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/resource_filename.go 
new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/resource_filename.go
--- old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/resource_filename.go      
1970-01-01 01:00:00.000000000 +0100
+++ new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/resource_filename.go      
2026-05-29 21:18:01.000000000 +0200
@@ -0,0 +1,33 @@
+package builtin
+
+import (
+       "fmt"
+       "path/filepath"
+       "strings"
+)
+
+// validateGeneratedResourceFilename rejects filenames derived from rendered
+// Kubernetes resource metadata that contain path separators, parent-directory
+// segments, or other components that could cause a write to escape the
+// configured output directory when joined to it.
+//
+// The flat layout for helm-template and the per-resource directory output for
+// kustomize-build both contract to write each resource as a single file at the
+// top level of the configured output directory. Any generated name that is not
+// a plain filename violates that contract -- whether or not it would actually
+// escape the directory after joining.
+func validateGeneratedResourceFilename(fileName string) error {
+       if fileName == "" {
+               return fmt.Errorf("generated resource filename is empty")
+       }
+       // "." and ".." are their own clean forms, so the Clean check below 
does not
+       // reject them. They must be excluded explicitly: "." would target 
outPath
+       // itself, and ".." would escape it.
+       if fileName == "." || fileName == ".." ||
+               filepath.IsAbs(fileName) ||
+               strings.ContainsAny(fileName, `/\`) ||
+               filepath.Clean(fileName) != fileName {
+               return fmt.Errorf("unsafe generated resource filename %q", 
fileName)
+       }
+       return nil
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/resource_filename_test.go 
new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/resource_filename_test.go
--- old/kargo-cli-1.10.4/pkg/promotion/runner/builtin/resource_filename_test.go 
1970-01-01 01:00:00.000000000 +0100
+++ new/kargo-cli-1.10.5/pkg/promotion/runner/builtin/resource_filename_test.go 
2026-05-29 21:18:01.000000000 +0200
@@ -0,0 +1,85 @@
+package builtin
+
+import (
+       "testing"
+
+       "github.com/stretchr/testify/require"
+)
+
+func Test_validateGeneratedResourceFilename(t *testing.T) {
+       tests := []struct {
+               name     string
+               fileName string
+               assert   func(*testing.T, error)
+       }{
+               {
+                       name:     "empty",
+                       fileName: "",
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "generated 
resource filename is empty")
+                       },
+               },
+               {
+                       name:     "plain filename",
+                       fileName: "configmap-test-ns-test-configmap.yaml",
+                       assert: func(t *testing.T, err error) {
+                               require.NoError(t, err)
+                       },
+               },
+               {
+                       name:     "absolute path",
+                       fileName: "/etc/passwd",
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                       },
+               },
+               {
+                       name:     "forward slash separator",
+                       fileName: "subdir/file.yaml",
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                       },
+               },
+               {
+                       name:     "backslash separator",
+                       fileName: `subdir\file.yaml`,
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                       },
+               },
+               {
+                       name:     "current segment alone",
+                       fileName: ".",
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                       },
+               },
+               {
+                       name:     "parent segment",
+                       fileName: "..",
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                       },
+               },
+               {
+                       name:     "parent traversal",
+                       fileName: "../owned-marker.yaml",
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                       },
+               },
+               {
+                       name:     "current-dir prefix",
+                       fileName: "./file.yaml",
+                       assert: func(t *testing.T, err error) {
+                               require.ErrorContains(t, err, "unsafe generated 
resource filename")
+                       },
+               },
+       }
+       for _, tt := range tests {
+               t.Run(tt.name, func(t *testing.T) {
+                       t.Parallel()
+                       tt.assert(t, 
validateGeneratedResourceFilename(tt.fileName))
+               })
+       }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/kargo-cli-1.10.4/pkg/server/server.go 
new/kargo-cli-1.10.5/pkg/server/server.go
--- old/kargo-cli-1.10.4/pkg/server/server.go   2026-05-14 16:28:03.000000000 
+0200
+++ new/kargo-cli-1.10.5/pkg/server/server.go   2026-05-29 21:18:01.000000000 
+0200
@@ -16,8 +16,6 @@
        "connectrpc.com/grpchealth"
        "github.com/klauspost/compress/gzhttp"
        "github.com/rs/cors"
-       "golang.org/x/net/http2"
-       "golang.org/x/net/http2/h2c"
        "k8s.io/apimachinery/pkg/runtime/schema"
        "k8s.io/apimachinery/pkg/types"
        "sigs.k8s.io/controller-runtime/pkg/client"
@@ -235,7 +233,7 @@
                mux.Handle("/dex/", dexProxy)
        }
 
-       handler := h2c.NewHandler(mux, &http2.Server{})
+       var handler http.Handler = mux
 
        // Sometimes a permissive CORS policy is useful during local 
development.
        if s.cfg.PermissiveCORSPolicyEnabled {
@@ -247,9 +245,15 @@
                }).Handler(handler)
        }
 
+       protocols := new(http.Protocols)
+       protocols.SetHTTP1(true)
+       protocols.SetHTTP2(true)
+       protocols.SetUnencryptedHTTP2(true)
+
        srv := &http.Server{
                Handler:           handler,
                ReadHeaderTimeout: time.Minute,
+               Protocols:         protocols,
        }
 
        errCh := make(chan error)

++++++ kargo-cli.obsinfo ++++++
--- /var/tmp/diff_new_pack.A12uZX/_old  2026-06-02 16:08:24.157054098 +0200
+++ /var/tmp/diff_new_pack.A12uZX/_new  2026-06-02 16:08:24.189055426 +0200
@@ -1,5 +1,5 @@
 name: kargo-cli
-version: 1.10.4
-mtime: 1778768883
-commit: 73760176458c832e6a1533ed0d8a31aa462b659c
+version: 1.10.5
+mtime: 1780082281
+commit: b2a335a22f3c8235393877817a9d756f6f695e50
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/kargo-cli/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.kargo-cli.new.1937/vendor.tar.gz differ: char 13, 
line 1

Reply via email to