Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package polaris for openSUSE:Factory checked 
in at 2026-02-25 21:11:42
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/polaris (Old)
 and      /work/SRC/openSUSE:Factory/.polaris.new.1977 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "polaris"

Wed Feb 25 21:11:42 2026 rev:45 rq:1335046 version:10.1.5

Changes:
--------
--- /work/SRC/openSUSE:Factory/polaris/polaris.changes  2026-02-02 
14:56:26.469680330 +0100
+++ /work/SRC/openSUSE:Factory/.polaris.new.1977/polaris.changes        
2026-02-25 21:11:59.733698220 +0100
@@ -1,0 +2,8 @@
+Wed Feb 25 09:52:15 UTC 2026 - Johannes Kastl 
<[email protected]>
+
+- Update to version 10.1.5:
+  * INS-1950: Go 1.26 and bump libs for polaris (#1172)
+  * Revert "Go 1.26"
+  * Go 1.26
+
+-------------------------------------------------------------------

Old:
----
  polaris-10.1.4.obscpio

New:
----
  polaris-10.1.5.obscpio

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

Other differences:
------------------
++++++ polaris.spec ++++++
--- /var/tmp/diff_new_pack.OuxDFz/_old  2026-02-25 21:12:00.309722005 +0100
+++ /var/tmp/diff_new_pack.OuxDFz/_new  2026-02-25 21:12:00.309722005 +0100
@@ -17,7 +17,7 @@
 
 
 Name:           polaris
-Version:        10.1.4
+Version:        10.1.5
 Release:        0
 Summary:        Validation of best practices in your Kubernetes clusters
 License:        Apache-2.0
@@ -26,7 +26,7 @@
 Source1:        vendor.tar.gz
 BuildRequires:  bash-completion
 BuildRequires:  fish
-BuildRequires:  go1.25 >= 1.25.5
+BuildRequires:  go1.26 >= 1.26.0
 BuildRequires:  zsh
 
 %description

++++++ _service ++++++
--- /var/tmp/diff_new_pack.OuxDFz/_old  2026-02-25 21:12:00.349723657 +0100
+++ /var/tmp/diff_new_pack.OuxDFz/_new  2026-02-25 21:12:00.353723822 +0100
@@ -3,7 +3,7 @@
     <param name="url">https://github.com/FairwindsOps/polaris</param>
     <param name="scm">git</param>
     <param name="exclude">.git</param>
-    <param name="revision">10.1.4</param>
+    <param name="revision">10.1.5</param>
     <param name="versionformat">@PARENT_TAG@</param>
     <param name="changesgenerate">enable</param>
   </service>

++++++ _servicedata ++++++
--- /var/tmp/diff_new_pack.OuxDFz/_old  2026-02-25 21:12:00.373724648 +0100
+++ /var/tmp/diff_new_pack.OuxDFz/_new  2026-02-25 21:12:00.377724813 +0100
@@ -1,6 +1,6 @@
 <servicedata>
 <service name="tar_scm">
                 <param 
name="url">https://github.com/FairwindsOps/polaris</param>
-              <param 
name="changesrevision">517c8899d701bd8e19cdd9ba0c22ddf63e68eb93</param></service></servicedata>
+              <param 
name="changesrevision">a5af7bb34ea1c377ece9cef5a8ff9e75dc775849</param></service></servicedata>
 (No newline at EOF)
 

++++++ polaris-10.1.4.obscpio -> polaris-10.1.5.obscpio ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/.circleci/config.yml 
new/polaris-10.1.5/.circleci/config.yml
--- old/polaris-10.1.4/.circleci/config.yml     2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/.circleci/config.yml     2026-02-24 16:22:14.000000000 
+0100
@@ -120,7 +120,7 @@
 
   test:
     docker:
-      - image: cimg/go:1.25.5
+      - image: cimg/go:1.26.0
     steps:
       - checkout
       - *set_environment_variables
@@ -136,7 +136,7 @@
       # The goreleaser image tag determins the version of Go.
       # Manually check goreleaser images for their version of Go.
       # Ref: https://hub.docker.com/r/goreleaser/goreleaser/tags
-      - image: goreleaser/goreleaser:v2.13.1
+      - image: goreleaser/goreleaser:v2.14.0
     steps:
       - checkout
       - setup_remote_docker
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/.goreleaser.yml.envsubst 
new/polaris-10.1.5/.goreleaser.yml.envsubst
--- old/polaris-10.1.4/.goreleaser.yml.envsubst 2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/.goreleaser.yml.envsubst 2026-02-24 16:22:14.000000000 
+0100
@@ -30,6 +30,10 @@
     goarm:
       - 6
       - 7
+    # Go does not support windows/arm (32-bit); only windows/arm64 is 
supported.
+    ignore:
+      - goos: windows
+        goarch: arm
 archives:
   - id: polaris
     builds: ["polaris"]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/cmd/polaris/audit.go 
new/polaris-10.1.5/cmd/polaris/audit.go
--- old/polaris-10.1.4/cmd/polaris/audit.go     2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/cmd/polaris/audit.go     2026-02-24 16:22:14.000000000 
+0100
@@ -190,7 +190,7 @@
        var outputBytes []byte
        var err error
        if outputFormat == "score" {
-               outputBytes = []byte(fmt.Sprintf("%d\n", 
auditData.GetSummary().GetScore()))
+               outputBytes = fmt.Appendf(nil, "%d\n", 
auditData.GetSummary().GetScore())
        } else if outputFormat == "yaml" {
                var jsonBytes []byte
                jsonBytes, err = json.Marshal(auditData)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/go.mod new/polaris-10.1.5/go.mod
--- old/polaris-10.1.4/go.mod   2026-01-30 20:21:23.000000000 +0100
+++ new/polaris-10.1.5/go.mod   2026-02-24 16:22:14.000000000 +0100
@@ -1,6 +1,6 @@
 module github.com/fairwindsops/polaris
 
-go 1.25.5
+go 1.26.0
 
 require (
        github.com/fairwindsops/controller-utils v0.3.4
@@ -15,9 +15,9 @@
        github.com/thoas/go-funk v0.9.3
        gomodules.xyz/jsonpatch/v2 v2.5.0
        gopkg.in/yaml.v3 v3.0.1
-       k8s.io/api v0.35.0
-       k8s.io/apimachinery v0.35.0
-       k8s.io/client-go v0.35.0
+       k8s.io/api v0.35.1
+       k8s.io/apimachinery v0.35.1
+       k8s.io/client-go v0.35.1
        sigs.k8s.io/controller-runtime v0.23.1
        sigs.k8s.io/yaml v1.6.0
 )
@@ -69,20 +69,20 @@
        github.com/x448/float16 v0.8.4 // indirect
        go.yaml.in/yaml/v2 v2.4.3 // indirect
        go.yaml.in/yaml/v3 v3.0.4 // indirect
-       golang.org/x/net v0.49.0 // indirect
-       golang.org/x/oauth2 v0.34.0 // indirect
-       golang.org/x/sys v0.40.0 // indirect
-       golang.org/x/term v0.39.0 // indirect
-       golang.org/x/text v0.33.0 // indirect
+       golang.org/x/net v0.50.0 // indirect
+       golang.org/x/oauth2 v0.35.0 // indirect
+       golang.org/x/sys v0.41.0 // indirect
+       golang.org/x/term v0.40.0 // indirect
+       golang.org/x/text v0.34.0 // indirect
        golang.org/x/time v0.14.0 // indirect
        google.golang.org/protobuf v1.36.11 // indirect
        gopkg.in/evanphx/json-patch.v4 v4.13.0 // indirect
        gopkg.in/inf.v0 v0.9.1 // indirect
-       k8s.io/apiextensions-apiserver v0.35.0 // indirect
+       k8s.io/apiextensions-apiserver v0.35.1 // indirect
        k8s.io/klog/v2 v2.130.1 // indirect
        k8s.io/kube-openapi v0.0.0-20260127142750-a19766b6e2d4 // indirect
-       k8s.io/utils v0.0.0-20260108192941-914a6e750570 // indirect
+       k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 // 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.2-0.20260122202528-d9cc6641c482 // indirect
+       sigs.k8s.io/structured-merge-diff/v6 v6.3.2 // indirect
 )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/go.sum new/polaris-10.1.5/go.sum
--- old/polaris-10.1.4/go.sum   2026-01-30 20:21:23.000000000 +0100
+++ new/polaris-10.1.5/go.sum   2026-02-24 16:22:14.000000000 +0100
@@ -189,8 +189,12 @@
 golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
 golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
 golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
+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/oauth2 v0.34.0 h1:hqK/t4AKgbqWkdkcAeI8XLmbK+4m4G5YeQRrmiotGlw=
 golang.org/x/oauth2 v0.34.0/go.mod 
h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
+golang.org/x/oauth2 v0.35.0 h1:Mv2mzuHuZuY2+bkyWXIHMfhNdJAdwW3FuWeCPYN5GVQ=
+golang.org/x/oauth2 v0.35.0/go.mod 
h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA=
 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=
@@ -205,16 +209,22 @@
 golang.org/x/sys v0.39.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
 golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
 golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
+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/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU=
 golang.org/x/term v0.37.0/go.mod 
h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
 golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY=
 golang.org/x/term v0.39.0/go.mod 
h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww=
+golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
+golang.org/x/term v0.40.0/go.mod 
h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
 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.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
 golang.org/x/text v0.31.0/go.mod 
h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
 golang.org/x/text v0.33.0 h1:B3njUFyqtHDUI5jMn1YIr5B0IE2U0qck04r6d4KPAxE=
 golang.org/x/text v0.33.0/go.mod 
h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
+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/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=
@@ -248,18 +258,26 @@
 k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw=
 k8s.io/api v0.35.0 h1:iBAU5LTyBI9vw3L5glmat1njFK34srdLmktWwLTprlY=
 k8s.io/api v0.35.0/go.mod h1:AQ0SNTzm4ZAczM03QH42c7l3bih1TbAXYo0DkF8ktnA=
+k8s.io/api v0.35.1 h1:0PO/1FhlK/EQNVK5+txc4FuhQibV25VLSdLMmGpDE/Q=
+k8s.io/api v0.35.1/go.mod h1:28uR9xlXWml9eT0uaGo6y71xK86JBELShLy4wR1XtxM=
 k8s.io/apiextensions-apiserver v0.34.1 
h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI=
 k8s.io/apiextensions-apiserver v0.34.1/go.mod 
h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc=
 k8s.io/apiextensions-apiserver v0.35.0 
h1:3xHk2rTOdWXXJM+RDQZJvdx0yEOgC0FgQ1PlJatA5T4=
 k8s.io/apiextensions-apiserver v0.35.0/go.mod 
h1:E1Ahk9SADaLQ4qtzYFkwUqusXTcaV2uw3l14aqpL2LU=
+k8s.io/apiextensions-apiserver v0.35.1 
h1:p5vvALkknlOcAqARwjS20kJffgzHqwyQRM8vHLwgU7w=
+k8s.io/apiextensions-apiserver v0.35.1/go.mod 
h1:2CN4fe1GZ3HMe4wBr25qXyJnJyZaquy4nNlNmb3R7AQ=
 k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4=
 k8s.io/apimachinery v0.34.2/go.mod 
h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
 k8s.io/apimachinery v0.35.0 h1:Z2L3IHvPVv/MJ7xRxHEtk6GoJElaAqDCCU0S6ncYok8=
 k8s.io/apimachinery v0.35.0/go.mod 
h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
+k8s.io/apimachinery v0.35.1 h1:yxO6gV555P1YV0SANtnTjXYfiivaTPvCTKX6w6qdDsU=
+k8s.io/apimachinery v0.35.1/go.mod 
h1:jQCgFZFR1F4Ik7hvr2g84RTJSZegBc8yHgFWKn//hns=
 k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M=
 k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE=
 k8s.io/client-go v0.35.0 h1:IAW0ifFbfQQwQmga0UdoH0yvdqrbwMdq9vIFEhRpxBE=
 k8s.io/client-go v0.35.0/go.mod h1:q2E5AAyqcbeLGPdoRB+Nxe3KYTfPce1Dnu1myQdqz9o=
+k8s.io/client-go v0.35.1 h1:+eSfZHwuo/I19PaSxqumjqZ9l5XiTEKbIaJ+j1wLcLM=
+k8s.io/client-go v0.35.1/go.mod h1:1p1KxDt3a0ruRfc/pG4qT/3oHmUj1AhSHEcxNSGg+OA=
 k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
 k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
 k8s.io/kube-openapi v0.0.0-20251125145642-4e65d59e963e 
h1:iW9ChlU0cU16w8MpVYjXk12dqQ4BPFBEgif+ap7/hqQ=
@@ -270,6 +288,8 @@
 k8s.io/utils v0.0.0-20251002143259-bc988d571ff4/go.mod 
h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
 k8s.io/utils v0.0.0-20260108192941-914a6e750570 
h1:JT4W8lsdrGENg9W+YwwdLJxklIuKWdRm+BC+xt33FOY=
 k8s.io/utils v0.0.0-20260108192941-914a6e750570/go.mod 
h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
+k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2 
h1:AZYQSJemyQB5eRxqcPky+/7EdBj0xi3g0ZcxxJ7vbWU=
+k8s.io/utils v0.0.0-20260210185600-b8788abfbbc2/go.mod 
h1:xDxuJ0whA3d0I4mf/C4ppKHxXynQ+fxnkmQH0vTHnuk=
 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/controller-runtime v0.23.1 
h1:TjJSM80Nf43Mg21+RCy3J70aj/W6KyvDtOlpKf+PupE=
@@ -282,5 +302,7 @@
 sigs.k8s.io/structured-merge-diff/v6 v6.3.1/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
 sigs.k8s.io/structured-merge-diff/v6 v6.3.2-0.20260122202528-d9cc6641c482 
h1:2WOzJpHUBVrrkDjU4KBT8n5LDcj824eX0I5UKcgeRUs=
 sigs.k8s.io/structured-merge-diff/v6 
v6.3.2-0.20260122202528-d9cc6641c482/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.2 
h1:kwVWMx5yS1CrnFWA/2QHyRVJ8jM6dBA80uLmm0wJkk8=
+sigs.k8s.io/structured-merge-diff/v6 v6.3.2/go.mod 
h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
 sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
 sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/config/config_test.go 
new/polaris-10.1.5/pkg/config/config_test.go
--- old/polaris-10.1.4/pkg/config/config_test.go        2026-01-30 
20:21:23.000000000 +0100
+++ new/polaris-10.1.5/pkg/config/config_test.go        2026-02-24 
16:22:14.000000000 +0100
@@ -142,19 +142,19 @@
 }
 
 func TestConfigWithCustomChecks(t *testing.T) {
-       valid := map[string]interface{}{
-               "securityContext": map[string]interface{}{
+       valid := map[string]any{
+               "securityContext": map[string]any{
                        "foo": "bar",
                },
        }
-       invalid := map[string]interface{}{
-               "notSecurityContext": map[string]interface{}{},
+       invalid := map[string]any{
+               "notSecurityContext": map[string]any{},
        }
 
        parsedConf, err := Parse([]byte(confCustomChecks))
        assert.NoError(t, err, "Expected no error when parsing YAML config")
        assert.Equal(t, 1, len(parsedConf.CustomChecks))
-       check, err := 
parsedConf.CustomChecks["foo"].TemplateForResource(map[string]interface{}{})
+       check, err := 
parsedConf.CustomChecks["foo"].TemplateForResource(map[string]any{})
        isValid, _, err := check.CheckObject(context.TODO(), valid)
        assert.NoError(t, err)
        assert.Equal(t, true, isValid)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/config/schema.go 
new/polaris-10.1.5/pkg/config/schema.go
--- old/polaris-10.1.4/pkg/config/schema.go     2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/config/schema.go     2026-02-24 16:22:14.000000000 
+0100
@@ -21,6 +21,8 @@
        "errors"
        "fmt"
        "io"
+       "maps"
+       "slices"
        "strings"
        "text/template"
 
@@ -58,34 +60,34 @@
 type Mutation struct {
        Path    string
        Op      string
-       Value   interface{}
+       Value   any
        Comment string
 }
 
 // SchemaCheck is a Polaris check that runs using JSON Schema
 type SchemaCheck struct {
-       ID                      string                            `yaml:"id" 
json:"id"`
-       Category                string                            
`yaml:"category" json:"category"`
-       SuccessMessage          string                            
`yaml:"successMessage" json:"successMessage"`
-       FailureMessage          string                            
`yaml:"failureMessage" json:"failureMessage"`
-       Controllers             includeExcludeList                
`yaml:"controllers" json:"controllers"`
-       Containers              includeExcludeList                
`yaml:"containers" json:"containers"`
-       Target                  TargetKind                        
`yaml:"target" json:"target"`
-       SchemaTarget            TargetKind                        
`yaml:"schemaTarget" json:"schemaTarget"`
-       Schema                  map[string]interface{}            
`yaml:"schema" json:"schema"`
-       SchemaString            string                            
`yaml:"schemaString" json:"schemaString"`
-       Validator               jsonschema.Schema                 `yaml:"-" 
json:"-"`
-       AdditionalSchemas       map[string]map[string]interface{} 
`yaml:"additionalSchemas" json:"additionalSchemas"`
-       AdditionalSchemaStrings map[string]string                 
`yaml:"additionalSchemaStrings" json:"additionalSchemaStrings"`
-       AdditionalValidators    map[string]jsonschema.Schema      `yaml:"-" 
json:"-"`
-       Mutations               []Mutation                        
`yaml:"mutations" json:"mutations"`
+       ID                      string                       `yaml:"id" 
json:"id"`
+       Category                string                       `yaml:"category" 
json:"category"`
+       SuccessMessage          string                       
`yaml:"successMessage" json:"successMessage"`
+       FailureMessage          string                       
`yaml:"failureMessage" json:"failureMessage"`
+       Controllers             includeExcludeList           
`yaml:"controllers" json:"controllers"`
+       Containers              includeExcludeList           `yaml:"containers" 
json:"containers"`
+       Target                  TargetKind                   `yaml:"target" 
json:"target"`
+       SchemaTarget            TargetKind                   
`yaml:"schemaTarget" json:"schemaTarget"`
+       Schema                  map[string]any               `yaml:"schema" 
json:"schema"`
+       SchemaString            string                       
`yaml:"schemaString" json:"schemaString"`
+       Validator               jsonschema.Schema            `yaml:"-" json:"-"`
+       AdditionalSchemas       map[string]map[string]any    
`yaml:"additionalSchemas" json:"additionalSchemas"`
+       AdditionalSchemaStrings map[string]string            
`yaml:"additionalSchemaStrings" json:"additionalSchemaStrings"`
+       AdditionalValidators    map[string]jsonschema.Schema `yaml:"-" json:"-"`
+       Mutations               []Mutation                   `yaml:"mutations" 
json:"mutations"`
 }
 
 type resourceMinimum string
 type resourceMaximum string
 
 // UnmarshalYAMLOrJSON is a helper function to unmarshal data in an arbitrary 
format
-func UnmarshalYAMLOrJSON(raw []byte, dest interface{}) error {
+func UnmarshalYAMLOrJSON(raw []byte, dest any) error {
        reader := bytes.NewReader(raw)
        d := k8sYaml.NewYAMLOrJSONDecoder(reader, 4096)
        for {
@@ -129,7 +131,7 @@
        return new(resourceMaximum)
 }
 
-func (min resourceMinimum) ValidateKeyword(ctx context.Context, currentState 
*jsonschema.ValidationState, data interface{}) {
+func (min resourceMinimum) ValidateKeyword(ctx context.Context, currentState 
*jsonschema.ValidationState, data any) {
        err := validateRange(string(min), data, true)
        if err != nil {
                errs := currentState.Errs
@@ -137,7 +139,7 @@
                currentState.Errs = errs
        }
 }
-func (max resourceMaximum) ValidateKeyword(ctx context.Context, currentState 
*jsonschema.ValidationState, data interface{}) {
+func (max resourceMaximum) ValidateKeyword(ctx context.Context, currentState 
*jsonschema.ValidationState, data any) {
        err := validateRange(string(max), data, false)
        if err != nil {
                errs := currentState.Errs
@@ -163,7 +165,7 @@
        // Not implemented
 }
 
-func parseQuantity(i interface{}) (resource.Quantity, *[]jsonschema.KeyError) {
+func parseQuantity(i any) (resource.Quantity, *[]jsonschema.KeyError) {
        if resNum, ok := i.(float64); ok {
                i = fmt.Sprintf("%f", resNum)
        }
@@ -182,7 +184,7 @@
        return q, nil
 }
 
-func validateRange(limit interface{}, data interface{}, isMinimum bool) 
*[]jsonschema.KeyError {
+func validateRange(limit any, data any, isMinimum bool) *[]jsonschema.KeyError 
{
        limitQuantity, err := parseQuantity(limit)
        if err != nil {
                return err
@@ -228,21 +230,19 @@
                }
                check.AdditionalSchemaStrings[kind] = string(jsonBytes)
        }
-       check.Schema = map[string]interface{}{}
-       check.AdditionalSchemas = map[string]map[string]interface{}{}
+       check.Schema = map[string]any{}
+       check.AdditionalSchemas = map[string]map[string]any{}
        return nil
 }
 
 // TemplateForResource fills out a check's templated fields given a particular 
resource
-func (check SchemaCheck) TemplateForResource(res interface{}) (*SchemaCheck, 
error) {
+func (check SchemaCheck) TemplateForResource(res any) (*SchemaCheck, error) {
        newCheck := check // Make a copy of the check, since we're going to 
modify the schema
 
        templateStrings := map[string]string{
                "": newCheck.SchemaString,
        }
-       for kind, schema := range newCheck.AdditionalSchemaStrings {
-               templateStrings[kind] = schema
-       }
+       maps.Copy(templateStrings, newCheck.AdditionalSchemaStrings)
        newCheck.SchemaString = ""
        newCheck.AdditionalSchemaStrings = map[string]string{}
 
@@ -294,7 +294,7 @@
 }
 
 // CheckPodTemplate checks a pod template against the schema
-func (check SchemaCheck) CheckPodTemplate(ctx context.Context, podTemplate 
interface{}) (bool, []jsonschema.KeyError, error) {
+func (check SchemaCheck) CheckPodTemplate(ctx context.Context, podTemplate 
any) (bool, []jsonschema.KeyError, error) {
        return check.CheckObject(ctx, podTemplate)
 }
 
@@ -310,7 +310,7 @@
 }
 
 // CheckObject checks arbitrary data against the schema
-func (check SchemaCheck) CheckObject(ctx context.Context, obj interface{}) 
(bool, []jsonschema.KeyError, error) {
+func (check SchemaCheck) CheckObject(ctx context.Context, obj any) (bool, 
[]jsonschema.KeyError, error) {
        bytes, err := json.Marshal(obj)
        if err != nil {
                return false, nil, err
@@ -320,7 +320,7 @@
 }
 
 // CheckAdditionalObjects looks for an object that passes the specified 
additional schema
-func (check SchemaCheck) CheckAdditionalObjects(ctx context.Context, groupkind 
string, objects []interface{}) (bool, error) {
+func (check SchemaCheck) CheckAdditionalObjects(ctx context.Context, groupkind 
string, objects []any) (bool, error) {
        val, ok := check.AdditionalValidators[groupkind]
        if !ok {
                return false, errors.New("No validator found for " + groupkind)
@@ -356,19 +356,14 @@
                return false
        }
        isIncluded := len(check.Controllers.Include) == 0
-       for _, inclusion := range check.Controllers.Include {
-               if inclusion == kind {
-                       isIncluded = true
-                       break
-               }
+       if slices.Contains(check.Controllers.Include, kind) {
+               isIncluded = true
        }
        if !isIncluded {
                return false
        }
-       for _, exclusion := range check.Controllers.Exclude {
-               if exclusion == kind {
-                       return false
-               }
+       if slices.Contains(check.Controllers.Exclude, kind) {
+               return false
        }
        if check.Target == TargetContainer {
                isIncluded := len(check.Containers.Include) == 0
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/dashboard/helpers.go 
new/polaris-10.1.5/pkg/dashboard/helpers.go
--- old/polaris-10.1.4/pkg/dashboard/helpers.go 2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/dashboard/helpers.go 2026-02-24 16:22:14.000000000 
+0100
@@ -16,6 +16,7 @@
 
 import (
        "fmt"
+       "slices"
        "strings"
 
        "github.com/fairwindsops/polaris/pkg/config"
@@ -157,10 +158,5 @@
 }
 
 func stringInSlice(a string, list []string) bool {
-       for _, b := range list {
-               if b == a {
-                       return true
-               }
-       }
-       return false
+       return slices.Contains(list, a)
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/kube/resource.go 
new/polaris-10.1.5/pkg/kube/resource.go
--- old/polaris-10.1.4/pkg/kube/resource.go     2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/kube/resource.go     2026-02-24 16:22:14.000000000 
+0100
@@ -39,13 +39,13 @@
        ObjectMeta         kubeAPIMetaV1.Object
        Resource           unstructured.Unstructured
        PodSpec            *kubeAPICoreV1.PodSpec
-       PodTemplate        interface{}
+       PodTemplate        any
        OriginalObjectJSON []byte
        OriginalObjectYAML []byte
 }
 
 // NewGenericResourceFromUnstructured creates a workload from an 
unstructured.Unstructured
-func NewGenericResourceFromUnstructured(unst unstructured.Unstructured, 
podSpecMap interface{}) (GenericResource, error) {
+func NewGenericResourceFromUnstructured(unst unstructured.Unstructured, 
podSpecMap any) (GenericResource, error) {
        if unst.GetCreationTimestamp().Time.IsZero() {
                unstructured.RemoveNestedField(unst.Object, "metadata", 
"creationTimestamp")
                unstructured.RemoveNestedField(unst.Object, "status")
@@ -69,7 +69,7 @@
                return workload, err
        }
        workload.OriginalObjectJSON = b
-       m := make(map[string]interface{})
+       m := make(map[string]any)
        err = json.Unmarshal(b, &m)
        if err != nil {
                return workload, err
@@ -93,7 +93,7 @@
 }
 
 // NewGenericResourceFromPod builds a new workload for a given Pod without 
looking at parents
-func NewGenericResourceFromPod(podResource kubeAPICoreV1.Pod, originalObject 
interface{}) (GenericResource, error) {
+func NewGenericResourceFromPod(podResource kubeAPICoreV1.Pod, originalObject 
any) (GenericResource, error) {
        podMap, err := SerializePod(&podResource)
        if err != nil {
                return GenericResource{}, err
@@ -157,7 +157,7 @@
        }
        topKind := "Pod"
        topMeta := podWorkload.ObjectMeta
-       var topPodSpec interface{}
+       var topPodSpec any
        topPodSpec = podWorkload.Resource.Object
        owners := podResource.ObjectMeta.GetOwnerReferences()
        lastKey := ""
@@ -263,10 +263,10 @@
 }
 
 // GetPodSpec looks inside arbitrary YAML for a PodSpec
-func GetPodSpec(yaml map[string]interface{}) interface{} {
+func GetPodSpec(yaml map[string]any) any {
        for _, child := range podSpecFields {
                if childYaml, ok := yaml[child]; ok {
-                       return GetPodSpec(childYaml.(map[string]interface{}))
+                       return GetPodSpec(childYaml.(map[string]any))
                }
        }
        if _, ok := yaml["containers"]; ok {
@@ -278,9 +278,9 @@
 // GetPodTemplate looks inside arbitrary YAML for a Pod template, containing
 // fields `spec.containers`.
 // For example, it returns the `spec.template` level of a Kubernetes 
Deployment yaml.
-func GetPodTemplate(yaml map[string]interface{}) (podTemplate interface{}, err 
error) {
+func GetPodTemplate(yaml map[string]any) (podTemplate any, err error) {
        if yamlSpec, ok := yaml["spec"]; ok {
-               if yamlSpecMap, ok := yamlSpec.(map[string]interface{}); ok {
+               if yamlSpecMap, ok := yamlSpec.(map[string]any); ok {
                        if _, ok := yamlSpecMap["containers"]; ok {
                                // This is a hack around 
unstructured.SetNestedField using DeepCopy which does
                                // not support the type int, and panics.
@@ -289,7 +289,7 @@
                                if err != nil {
                                        return nil, err
                                }
-                               podTemplateMap := make(map[string]interface{})
+                               podTemplateMap := make(map[string]any)
                                err = json.Unmarshal(podTemplateJSON, 
&podTemplateMap)
                                if err != nil {
                                        return nil, err
@@ -300,7 +300,7 @@
        }
        for _, podSpecField := range podSpecFields {
                if childYaml, ok := yaml[podSpecField]; ok {
-                       return 
GetPodTemplate(childYaml.(map[string]interface{}))
+                       return GetPodTemplate(childYaml.(map[string]any))
                }
        }
        return nil, nil
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/kube/resources.go 
new/polaris-10.1.5/pkg/kube/resources.go
--- old/polaris-10.1.4/pkg/kube/resources.go    2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/kube/resources.go    2026-02-24 16:22:14.000000000 
+0100
@@ -109,13 +109,13 @@
 }
 
 func parseGroupKind(gk string) schema.GroupKind {
-       i := strings.Index(gk, "/")
-       if i == -1 {
+       before, after, ok := strings.Cut(gk, "/")
+       if !ok {
                return schema.GroupKind{Kind: gk}
        }
 
-       group := gk[:i]
-       kind := gk[i+1:]
+       group := before
+       kind := after
        return schema.GroupKind{Group: group, Kind: kind}
 }
 
@@ -454,12 +454,12 @@
 }
 
 // SerializePodSpec converts a typed PodSpec into a map[string]interface{}
-func SerializePodSpec(pod *corev1.PodSpec) (map[string]interface{}, error) {
+func SerializePodSpec(pod *corev1.PodSpec) (map[string]any, error) {
        podJSON, err := json.Marshal(pod)
        if err != nil {
                return nil, err
        }
-       podMap := make(map[string]interface{})
+       podMap := make(map[string]any)
        err = json.Unmarshal(podJSON, &podMap)
        if err != nil {
                return nil, err
@@ -468,12 +468,12 @@
 }
 
 // SerializePod converts a typed Pod into a map[string]interface{}
-func SerializePod(pod *corev1.Pod) (map[string]interface{}, error) {
+func SerializePod(pod *corev1.Pod) (map[string]any, error) {
        podJSON, err := json.Marshal(pod)
        if err != nil {
                return nil, err
        }
-       podMap := make(map[string]interface{})
+       podMap := make(map[string]any)
        err = json.Unmarshal(podJSON, &podMap)
        if err != nil {
                return nil, err
@@ -482,12 +482,12 @@
 }
 
 // SerializeContainer converts a typed Container into a map[string]interface{}
-func SerializeContainer(container *corev1.Container) (map[string]interface{}, 
error) {
+func SerializeContainer(container *corev1.Container) (map[string]any, error) {
        containerJSON, err := json.Marshal(container)
        if err != nil {
                return nil, err
        }
-       containerMap := make(map[string]interface{})
+       containerMap := make(map[string]any)
        err = json.Unmarshal(containerJSON, &containerMap)
        if err != nil {
                return nil, err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/mutation/mutate.go 
new/polaris-10.1.5/pkg/mutation/mutate.go
--- old/polaris-10.1.4/pkg/mutation/mutate.go   2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/mutation/mutate.go   2026-02-24 16:22:14.000000000 
+0100
@@ -224,7 +224,7 @@
        return nil
 }
 
-func getNodeFromValue(value interface{}, comment string) (*yaml.Node, error) {
+func getNodeFromValue(value any, comment string) (*yaml.Node, error) {
        bytes, err := yaml.Marshal(value)
        if err != nil {
                return nil, err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/mutation/mutate_test.go 
new/polaris-10.1.5/pkg/mutation/mutate_test.go
--- old/polaris-10.1.4/pkg/mutation/mutate_test.go      2026-01-30 
20:21:23.000000000 +0100
+++ new/polaris-10.1.5/pkg/mutation/mutate_test.go      2026-02-24 
16:22:14.000000000 +0100
@@ -102,7 +102,7 @@
 `,
                patch: config.Mutation{
                        Op: "replace",
-                       Value: map[string]interface{}{
+                       Value: map[string]any{
                                "bar": []string{"c", "d"},
                        },
                        Path: "/obj/foo",
@@ -129,7 +129,7 @@
                original: `foo: bar`,
                patch: config.Mutation{
                        Op: "add",
-                       Value: map[string]interface{}{
+                       Value: map[string]any{
                                "baz": "quux",
                        },
                        Path:    "/extra",
@@ -149,7 +149,7 @@
 `,
                patch: config.Mutation{
                        Op: "replace",
-                       Value: map[string]interface{}{
+                       Value: map[string]any{
                                "baz": "quux",
                        },
                        Path:    "/extra",
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/validator/controller_test.go 
new/polaris-10.1.5/pkg/validator/controller_test.go
--- old/polaris-10.1.4/pkg/validator/controller_test.go 2026-01-30 
20:21:23.000000000 +0100
+++ new/polaris-10.1.5/pkg/validator/controller_test.go 2026-02-24 
16:22:14.000000000 +0100
@@ -99,7 +99,7 @@
        assert.Equal(t, 10, res.Resources.GetLength())
        testResources(res)
 
-       replicaSpec := map[string]interface{}{"replicas": 2}
+       replicaSpec := map[string]any{"replicas": 2}
        b, err := json.Marshal(replicaSpec)
        assert.NoError(t, err)
        err = json.Unmarshal(b, &replicaSpec)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/validator/output.go 
new/polaris-10.1.5/pkg/validator/output.go
--- old/polaris-10.1.4/pkg/validator/output.go  2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/validator/output.go  2026-02-24 16:22:14.000000000 
+0100
@@ -250,15 +250,16 @@
 // GetPrettyOutput returns a human-readable string
 func (res AuditData) GetPrettyOutput(useColor bool) string {
        color.NoColor = !useColor
-       str := titleColor.Sprint(fmt.Sprintf("Polaris audited %s %s at %s\n", 
res.SourceType, res.SourceName, res.AuditTime))
-       str += color.CyanString(fmt.Sprintf("    Nodes: %d | Namespaces: %d | 
Controllers: %d\n", res.ClusterInfo.Nodes, res.ClusterInfo.Namespaces, 
res.ClusterInfo.Controllers))
-       str += color.GreenString(fmt.Sprintf("    Final score: %d\n", 
res.Score))
-       str += "\n"
+       var str strings.Builder
+       str.WriteString(titleColor.Sprint(fmt.Sprintf("Polaris audited %s %s at 
%s\n", res.SourceType, res.SourceName, res.AuditTime)))
+       str.WriteString(color.CyanString(fmt.Sprintf("    Nodes: %d | 
Namespaces: %d | Controllers: %d\n", res.ClusterInfo.Nodes, 
res.ClusterInfo.Namespaces, res.ClusterInfo.Controllers)))
+       str.WriteString(color.GreenString(fmt.Sprintf("    Final score: %d\n", 
res.Score)))
+       str.WriteString("\n")
        for _, result := range res.Results {
-               str += result.GetPrettyOutput() + "\n"
+               str.WriteString(result.GetPrettyOutput() + "\n")
        }
        color.NoColor = false
-       return str
+       return str.String()
 }
 
 // GetPrettyOutput returns a human-readable string
@@ -277,11 +278,12 @@
 
 // GetPrettyOutput returns a human-readable string
 func (res PodResult) GetPrettyOutput() string {
-       str := res.Results.GetPrettyOutput()
+       var str strings.Builder
+       str.WriteString(res.Results.GetPrettyOutput())
        for _, cont := range res.ContainerResults {
-               str += cont.GetPrettyOutput()
+               str.WriteString(cont.GetPrettyOutput())
        }
-       return str
+       return str.String()
 }
 
 // GetPrettyOutput returns a human-readable string
@@ -296,7 +298,7 @@
 // GetPrettyOutput returns a human-readable string
 func (res ResultSet) GetPrettyOutput() string {
        indent := "    "
-       str := ""
+       var str strings.Builder
        for _, msg := range res {
                status := color.GreenString(successMessage)
                if !msg.Success {
@@ -309,8 +311,8 @@
                if color.NoColor {
                        status = strings.Fields(status)[1] // remove emoji
                }
-               str += fmt.Sprintf("%s%s %s\n", indent, 
checkColor.Sprint(fillString(msg.ID, minIDLength-len(indent))), status)
-               str += fmt.Sprintf("%s    %s - %s\n", indent, msg.Category, 
msg.Message)
+               str.WriteString(fmt.Sprintf("%s%s %s\n", indent, 
checkColor.Sprint(fillString(msg.ID, minIDLength-len(indent))), status))
+               str.WriteString(fmt.Sprintf("%s    %s - %s\n", indent, 
msg.Category, msg.Message))
        }
-       return str
+       return str.String()
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/validator/schema.go 
new/polaris-10.1.5/pkg/validator/schema.go
--- old/polaris-10.1.4/pkg/validator/schema.go  2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/validator/schema.go  2026-02-24 16:22:14.000000000 
+0100
@@ -99,7 +99,7 @@
 // getTemplateInput augments a schemaTestCase.Resource.Resource.Object with
 // Polaris built-in variables. The result can be used as input for
 // CheckSchema.TemplateForResource().
-func getTemplateInput(test schemaTestCase) (map[string]interface{}, error) {
+func getTemplateInput(test schemaTestCase) (map[string]any, error) {
        templateInput := test.Resource.Resource.Object
        if templateInput == nil {
                return nil, nil
@@ -113,7 +113,7 @@
                if err != nil {
                        return nil, err
                }
-               podTemplateMap, ok := 
test.Resource.PodTemplate.(map[string]interface{})
+               podTemplateMap, ok := test.Resource.PodTemplate.(map[string]any)
                if ok {
                        err := unstructured.SetNestedMap(templateInput, 
podTemplateMap, "Polaris", "PodTemplate")
                        if err != nil {
@@ -425,9 +425,9 @@
                resources = funk.Filter(resources, func(res 
kube.GenericResource) bool {
                        return res.ObjectMeta.GetNamespace() == "" || 
res.ObjectMeta.GetNamespace() == namespace
                }).([]kube.GenericResource)
-               objects := funk.Map(resources, func(res kube.GenericResource) 
interface{} {
+               objects := funk.Map(resources, func(res kube.GenericResource) 
any {
                        return res.Resource.Object
-               }).([]interface{})
+               }).([]any)
                passes, err = check.CheckAdditionalObjects(ctx, groupkind, 
objects)
                if err != nil {
                        return nil, err
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/pkg/webhook/webhook.go 
new/polaris-10.1.5/pkg/webhook/webhook.go
--- old/polaris-10.1.4/pkg/webhook/webhook.go   2026-01-30 20:21:23.000000000 
+0100
+++ new/polaris-10.1.5/pkg/webhook/webhook.go   2026-02-24 16:22:14.000000000 
+0100
@@ -19,6 +19,7 @@
        "encoding/json"
        "fmt"
        "net/http"
+       "strings"
 
        "github.com/fairwindsops/controller-utils/pkg/controller"
        "github.com/fairwindsops/polaris/pkg/config"
@@ -135,11 +136,12 @@
 }
 
 func getFailureReason(result validator.Result) string {
-       reason := "\nPolaris prevented this deployment due to configuration 
problems:\n"
+       var reason strings.Builder
+       reason.WriteString("\nPolaris prevented this deployment due to 
configuration problems:\n")
 
        for _, message := range result.Results {
                if !message.Success && message.Severity == 
config.SeverityDanger {
-                       reason += fmt.Sprintf("- %s: %s\n", result.Kind, 
message.Message)
+                       reason.WriteString(fmt.Sprintf("- %s: %s\n", 
result.Kind, message.Message))
                }
        }
 
@@ -147,18 +149,18 @@
        if podResult != nil {
                for _, message := range podResult.Results {
                        if !message.Success && message.Severity == 
config.SeverityDanger {
-                               reason += fmt.Sprintf("- Pod: %s\n", 
message.Message)
+                               reason.WriteString(fmt.Sprintf("- Pod: %s\n", 
message.Message))
                        }
                }
 
                for _, containerResult := range podResult.ContainerResults {
                        for _, message := range containerResult.Results {
                                if !message.Success && message.Severity == 
config.SeverityDanger {
-                                       reason += fmt.Sprintf("- Container %s: 
%s\n", containerResult.Name, message.Message)
+                                       reason.WriteString(fmt.Sprintf("- 
Container %s: %s\n", containerResult.Name, message.Message))
                                }
                        }
                }
        }
 
-       return reason
+       return reason.String()
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/polaris-10.1.4/test/fixtures.go 
new/polaris-10.1.5/test/fixtures.go
--- old/polaris-10.1.4/test/fixtures.go 2026-01-30 20:21:23.000000000 +0100
+++ new/polaris-10.1.5/test/fixtures.go 2026-02-24 16:22:14.000000000 +0100
@@ -32,12 +32,12 @@
        "k8s.io/client-go/kubernetes/fake"
 )
 
-func newUnstructured(apiVersion, kind, namespace, name string, spec 
map[string]interface{}) unstructured.Unstructured {
+func newUnstructured(apiVersion, kind, namespace, name string, spec 
map[string]any) unstructured.Unstructured {
        return unstructured.Unstructured{
-               Object: map[string]interface{}{
+               Object: map[string]any{
                        "apiVersion": apiVersion,
                        "kind":       kind,
-                       "metadata": map[string]interface{}{
+                       "metadata": map[string]any{
                                "namespace": namespace,
                                "name":      name,
                        },
@@ -85,7 +85,7 @@
 }
 
 // MockController creates a mock controller and pod
-func MockController(apiVersion, kind, namespace, name string, spec 
map[string]interface{}, podSpec corev1.PodSpec, dest interface{}) corev1.Pod {
+func MockController(apiVersion, kind, namespace, name string, spec 
map[string]any, podSpec corev1.PodSpec, dest any) corev1.Pod {
        unst := newUnstructured(apiVersion, kind, namespace, name, spec)
        pod := corev1.Pod{
                ObjectMeta: metav1.ObjectMeta{
@@ -111,19 +111,19 @@
 }
 
 // MockControllerWithNormalSpec mocks a controller with podspec at 
spec.template.spec
-func MockControllerWithNormalSpec(apiVersion, kind, namespace, name string, 
dest interface{}) corev1.Pod {
+func MockControllerWithNormalSpec(apiVersion, kind, namespace, name string, 
dest any) corev1.Pod {
        p := MockPod()
        b, err := json.Marshal(p.Spec)
        if err != nil {
                panic(err)
        }
-       pSpec := map[string]interface{}{}
+       pSpec := map[string]any{}
        err = json.Unmarshal(b, &pSpec)
        if err != nil {
                panic(err)
        }
-       spec := map[string]interface{}{
-               "template": map[string]interface{}{
+       spec := map[string]any{
+               "template": map[string]any{
                        "spec": pSpec,
                },
        }
@@ -162,7 +162,7 @@
 func MockCronJob(namespace, name string) (batchv1.CronJob, corev1.Pod) {
        cj := batchv1.CronJob{}
        p := MockPod()
-       spec := map[string]interface{}{}
+       spec := map[string]any{}
        pod := MockController("batch/v1", "CronJob", namespace, name, spec, 
p.Spec, &cj)
        cj.Spec.JobTemplate.Spec.Template.Spec = pod.Spec
 

++++++ polaris.obsinfo ++++++
--- /var/tmp/diff_new_pack.OuxDFz/_old  2026-02-25 21:12:00.965749093 +0100
+++ /var/tmp/diff_new_pack.OuxDFz/_new  2026-02-25 21:12:00.969749258 +0100
@@ -1,5 +1,5 @@
 name: polaris
-version: 10.1.4
-mtime: 1769800883
-commit: 517c8899d701bd8e19cdd9ba0c22ddf63e68eb93
+version: 10.1.5
+mtime: 1771946534
+commit: a5af7bb34ea1c377ece9cef5a8ff9e75dc775849
 

++++++ vendor.tar.gz ++++++
/work/SRC/openSUSE:Factory/polaris/vendor.tar.gz 
/work/SRC/openSUSE:Factory/.polaris.new.1977/vendor.tar.gz differ: char 14, 
line 1

Reply via email to