diff --git a/CHANGELOG.md b/CHANGELOG.md
index a6126a6324b7fd1599ba6c15cf0f44c7bfb1366e..0e24d7243676f1453b7605dead57c09500ab5210 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,11 +2,14 @@
 
 ## [Unreleased]
 
+## [v0.11.0] - 2022-10-22
+
 ### Changed
 
-- Optimized SLI recording rules now have the same labels as the non-optimized ones.
-- Update to Go 1.19
-- Update to Kubernetes v1.25
+- Optimized SLI recording rules now have the same labels as the non-optimized ones, avoiding promtool check warnings.
+- Update to Go 1.19.
+- Update to Kubernetes v1.25.
+- `sloth_window` is ignored in alerts reducing the noise of refiring alerts.
 
 ## [v0.10.0] - 2022-03-22
 
@@ -159,7 +162,8 @@
 - Support raw query based SLI.
 - Kubernetes (prometheus-operator) CRD generation support.
 
-[unreleased]: https://github.com/slok/sloth/compare/v0.10.0...HEAD
+[unreleased]: https://github.com/slok/sloth/compare/v0.11.0...HEAD
+[v0.11.0]: https://github.com/slok/sloth/compare/v0.10.0...v0.11.0
 [v0.10.0]: https://github.com/slok/sloth/compare/v0.9.0...v0.10.0
 [v0.9.0]: https://github.com/slok/sloth/compare/v0.8.0...v0.9.0
 [v0.8.0]: https://github.com/slok/sloth/compare/v0.7.0...v0.8.0
diff --git a/deploy/kubernetes/helm/sloth/Chart.yaml b/deploy/kubernetes/helm/sloth/Chart.yaml
index 9df037505f4d18e4a35d54239b0c251b8ae56266..fe31da40b4c0548cb8c7b5c3a320fa346a334f3c 100644
--- a/deploy/kubernetes/helm/sloth/Chart.yaml
+++ b/deploy/kubernetes/helm/sloth/Chart.yaml
@@ -4,4 +4,4 @@ description: Base chart for Sloth.
 type: application
 home: https://github.com/slok/sloth
 kubeVersion: ">= 1.19.0-0"
-version: 0.5.2
+version: 0.6.0
diff --git a/deploy/kubernetes/helm/sloth/crds/sloth.slok.dev_prometheusservicelevels.yaml b/deploy/kubernetes/helm/sloth/crds/sloth.slok.dev_prometheusservicelevels.yaml
index 2bc1a778e95bc90e3c25a6933a9117d66114b7d7..7283e667923a0d1444d0457ec4ea89e38a7aaa1e 100644
--- a/deploy/kubernetes/helm/sloth/crds/sloth.slok.dev_prometheusservicelevels.yaml
+++ b/deploy/kubernetes/helm/sloth/crds/sloth.slok.dev_prometheusservicelevels.yaml
@@ -1,4 +1,3 @@
-
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
@@ -261,9 +260,3 @@ spec:
     storage: true
     subresources:
       status: {}
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml
index 9352e5aec4b314f4f715073b072152329c9fc966..ba18e1cb55523ca910f6888121482477fad437f3 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_custom.yaml
@@ -59,7 +59,7 @@ spec:
               cpu: 5m
               memory: 75Mi
         - name: git-sync-plugins
-          image: k8s.gcr.io/git-sync/git-sync:v3.3.4
+          image: k8s.gcr.io/git-sync/git-sync:v3.6.1
           args:
             - --repo=https://github.com/slok/sloth-test-common-sli-plugins
             - --branch=main
diff --git a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml
index 49802fbe2a8179d642ef38d2d75cfa075d7c93b3..74a31beea9eb5eb4d9d6e9688dd0b2e111430b70 100644
--- a/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml
+++ b/deploy/kubernetes/helm/sloth/tests/testdata/output/deployment_default.yaml
@@ -32,7 +32,7 @@ spec:
       serviceAccountName: sloth
       containers:
         - name: sloth
-          image: ghcr.io/slok/sloth:v0.10.0
+          image: ghcr.io/slok/sloth:v0.11.0
           args:
             - kubernetes-controller
             - --sli-plugins-path=/plugins
@@ -50,7 +50,7 @@ spec:
               cpu: 5m
               memory: 75Mi
         - name: git-sync-plugins
-          image: k8s.gcr.io/git-sync/git-sync:v3.3.4
+          image: k8s.gcr.io/git-sync/git-sync:v3.6.1
           args:
             - --repo=https://github.com/slok/sloth-common-sli-plugins
             - --branch=main
diff --git a/deploy/kubernetes/helm/sloth/values.yaml b/deploy/kubernetes/helm/sloth/values.yaml
index 9ccf55fc6fa3a2938c9f73c9bfa26524f9c01cc9..011f64bbec08d667d65492b04e292fae4c5826b8 100644
--- a/deploy/kubernetes/helm/sloth/values.yaml
+++ b/deploy/kubernetes/helm/sloth/values.yaml
@@ -2,7 +2,7 @@ labels: {}
 
 image:
   repository: ghcr.io/slok/sloth
-  tag: v0.10.0
+  tag: v0.11.0
 
 sloth:
   resyncInterval: ""    # The controller resync interval duration (e.g 15m).
@@ -19,7 +19,7 @@ commonPlugins:
   enabled: true
   image:
     repository: k8s.gcr.io/git-sync/git-sync
-    tag: v3.3.4
+    tag: v3.6.1
   gitRepo:
     url: https://github.com/slok/sloth-common-sli-plugins
     branch: main
diff --git a/deploy/kubernetes/raw/sloth-with-common-plugins.yaml b/deploy/kubernetes/raw/sloth-with-common-plugins.yaml
index 52770bfc485854f2ffe3642b1143a80ccde0862e..a0b6cf39d38b879b8333d4859eca43f10daf64b1 100644
--- a/deploy/kubernetes/raw/sloth-with-common-plugins.yaml
+++ b/deploy/kubernetes/raw/sloth-with-common-plugins.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -18,7 +18,7 @@ kind: ClusterRole
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -38,7 +38,7 @@ kind: ClusterRoleBinding
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -59,7 +59,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -74,7 +74,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.4.2
+        helm.sh/chart: sloth-0.6.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
@@ -85,7 +85,7 @@ spec:
       serviceAccountName: sloth
       containers:
         - name: sloth
-          image: ghcr.io/slok/sloth:v0.10.0
+          image: ghcr.io/slok/sloth:v0.11.0
           args:
             - kubernetes-controller
             - --sli-plugins-path=/plugins
@@ -103,7 +103,7 @@ spec:
               cpu: 5m
               memory: 75Mi
         - name: git-sync-plugins
-          image: k8s.gcr.io/git-sync/git-sync:v3.3.4
+          image: k8s.gcr.io/git-sync/git-sync:v3.6.1
           args:
             - --repo=https://github.com/slok/sloth-common-sli-plugins
             - --branch=main
@@ -130,7 +130,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/deploy/kubernetes/raw/sloth.yaml b/deploy/kubernetes/raw/sloth.yaml
index df4a5e8b8c24966c0b883f0f6c38bdee8cf6e696..f3d14f5834079de4308087b7b50a35d0fb10c260 100644
--- a/deploy/kubernetes/raw/sloth.yaml
+++ b/deploy/kubernetes/raw/sloth.yaml
@@ -6,7 +6,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -18,7 +18,7 @@ kind: ClusterRole
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -38,7 +38,7 @@ kind: ClusterRoleBinding
 metadata:
   name: sloth
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -59,7 +59,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
@@ -74,7 +74,7 @@ spec:
   template:
     metadata:
       labels:
-        helm.sh/chart: sloth-0.4.2
+        helm.sh/chart: sloth-0.6.0
         app.kubernetes.io/managed-by: Helm
         app: sloth
         app.kubernetes.io/name: sloth
@@ -85,7 +85,7 @@ spec:
       serviceAccountName: sloth
       containers:
         - name: sloth
-          image: ghcr.io/slok/sloth:v0.10.0
+          image: ghcr.io/slok/sloth:v0.11.0
           args:
             - kubernetes-controller
           ports:
@@ -106,7 +106,7 @@ metadata:
   name: sloth
   namespace: monitoring
   labels:
-    helm.sh/chart: sloth-0.4.2
+    helm.sh/chart: sloth-0.6.0
     app.kubernetes.io/managed-by: Helm
     app: sloth
     app.kubernetes.io/name: sloth
diff --git a/examples/_gen/getting-started.yml b/examples/_gen/getting-started.yml
index b3e1d1a24508a3b7aedd65b5834f55bc073afe51..8fb10d7535012905935ca4f8e739a9f5f920384c 100644
--- a/examples/_gen/getting-started.yml
+++ b/examples/_gen/getting-started.yml
@@ -110,7 +110,14 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"}[30d])
     labels:
+      cmd: examplesgen.sh
+      owner: myteam
+      repo: myorg/myservice
+      sloth_id: myservice-requests-availability
+      sloth_service: myservice
+      sloth_slo: requests-availability
       sloth_window: 30d
+      tier: "2"
 - name: sloth-slo-meta-recordings-myservice-requests-availability
   rules:
   - record: slo:objective:ratio
@@ -201,7 +208,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
@@ -223,7 +230,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
diff --git a/examples/_gen/home-wifi.yml b/examples/_gen/home-wifi.yml
index 057a6f587357658eb931e7d56971042c42b4a2bb..bfa3a663f252e70afac05c413e571a116e954925 100644
--- a/examples/_gen/home-wifi.yml
+++ b/examples/_gen/home-wifi.yml
@@ -110,6 +110,13 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"}[30d])
     labels:
+      cluster: valhalla
+      cmd: examplesgen.sh
+      component: ubiquiti
+      context: home
+      sloth_id: home-wifi-good-wifi-client-satisfaction
+      sloth_service: home-wifi
+      sloth_slo: good-wifi-client-satisfaction
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-home-wifi-good-wifi-client-satisfaction
   rules:
@@ -201,7 +208,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (14.4 * 0.05)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (14.4 * 0.05))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (14.4 * 0.05)) without (sloth_window)
       )
       or
       (
@@ -222,7 +229,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (3 * 0.05)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (3 * 0.05))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (3 * 0.05)) without (sloth_window)
       )
       or
       (
@@ -344,6 +351,13 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"}[30d])
     labels:
+      cluster: valhalla
+      cmd: examplesgen.sh
+      component: ubiquiti
+      context: home
+      sloth_id: home-wifi-risk-wifi-client-satisfaction
+      sloth_service: home-wifi
+      sloth_slo: risk-wifi-client-satisfaction
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-home-wifi-risk-wifi-client-satisfaction
   rules:
@@ -435,7 +449,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
@@ -456,7 +470,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (3 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (3 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (3 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
diff --git a/examples/_gen/k8s-getting-started.yml b/examples/_gen/k8s-getting-started.yml
index f4a9a5469690a0b5bb8d007556c003393bb39e57..de14e579c551b21adc43b697fef3a3b3e2eed742 100644
--- a/examples/_gen/k8s-getting-started.yml
+++ b/examples/_gen/k8s-getting-started.yml
@@ -119,7 +119,14 @@ spec:
         / ignoring (sloth_window)
         count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"}[30d])
       labels:
+        cmd: examplesgen.sh
+        owner: myteam
+        repo: myorg/myservice
+        sloth_id: myservice-requests-availability
+        sloth_service: myservice
+        sloth_slo: requests-availability
         sloth_window: 30d
+        tier: "2"
       record: slo:sli_error:ratio_rate30d
   - name: sloth-slo-meta-recordings-myservice-requests-availability
     rules:
@@ -215,7 +222,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
@@ -237,7 +244,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate2h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
diff --git a/examples/_gen/k8s-home-wifi.yml b/examples/_gen/k8s-home-wifi.yml
index 58ac71877032983c045f228cfcdb04ed36484b17..1927ed78ccae3cde0936b963c203f9a783739e96 100644
--- a/examples/_gen/k8s-home-wifi.yml
+++ b/examples/_gen/k8s-home-wifi.yml
@@ -122,6 +122,13 @@ spec:
         / ignoring (sloth_window)
         count_over_time(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"}[30d])
       labels:
+        cluster: valhalla
+        cmd: examplesgen.sh
+        component: ubiquiti
+        context: home
+        sloth_id: home-wifi-good-wifi-client-satisfaction
+        sloth_service: home-wifi
+        sloth_slo: good-wifi-client-satisfaction
         sloth_window: 30d
       record: slo:sli_error:ratio_rate30d
   - name: sloth-slo-meta-recordings-home-wifi-good-wifi-client-satisfaction
@@ -219,7 +226,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (14.4 * 0.05)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1h{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (14.4 * 0.05))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1h{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (14.4 * 0.05)) without (sloth_window)
         )
         or
         (
@@ -240,7 +247,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate2h{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (3 * 0.05)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1d{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (3 * 0.05))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1d{sloth_id="home-wifi-good-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="good-wifi-client-satisfaction"} > (3 * 0.05)) without (sloth_window)
         )
         or
         (
@@ -356,6 +363,13 @@ spec:
         / ignoring (sloth_window)
         count_over_time(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"}[30d])
       labels:
+        cluster: valhalla
+        cmd: examplesgen.sh
+        component: ubiquiti
+        context: home
+        sloth_id: home-wifi-risk-wifi-client-satisfaction
+        sloth_service: home-wifi
+        sloth_slo: risk-wifi-client-satisfaction
         sloth_window: 30d
       record: slo:sli_error:ratio_rate30d
   - name: sloth-slo-meta-recordings-home-wifi-risk-wifi-client-satisfaction
@@ -453,7 +467,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1h{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1h{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
@@ -474,7 +488,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate2h{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (3 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1d{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (3 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1d{sloth_id="home-wifi-risk-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="risk-wifi-client-satisfaction"} > (3 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
diff --git a/examples/_gen/k8s-multifile.yml b/examples/_gen/k8s-multifile.yml
index 9334edd185abb4c236f18264b0e8b5d573e6bbe3..11890be2d4c498ee1250452ed059013f9c5eb7ec 100644
--- a/examples/_gen/k8s-multifile.yml
+++ b/examples/_gen/k8s-multifile.yml
@@ -119,7 +119,14 @@ spec:
         / ignoring (sloth_window)
         count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"}[30d])
       labels:
+        cmd: examplesgen.sh
+        owner: myteam
+        repo: myorg/myservice
+        sloth_id: myservice-requests-availability
+        sloth_service: myservice
+        sloth_slo: requests-availability
         sloth_window: 30d
+        tier: "2"
       record: slo:sli_error:ratio_rate30d
   - name: sloth-slo-meta-recordings-myservice-requests-availability
     rules:
@@ -215,7 +222,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
@@ -237,7 +244,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate2h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
@@ -371,7 +378,14 @@ spec:
         / ignoring (sloth_window)
         count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"}[30d])
       labels:
+        cmd: examplesgen.sh
+        owner: myteam2
+        repo: myorg/myservice2
+        sloth_id: myservice2-requests-availability
+        sloth_service: myservice2
+        sloth_slo: requests-availability
         sloth_window: 30d
+        tier: "1"
       record: slo:sli_error:ratio_rate30d
   - name: sloth-slo-meta-recordings-myservice2-requests-availability
     rules:
@@ -467,7 +481,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate5m{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (14.4 * 0.00010000000000005117)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1h{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (14.4 * 0.00010000000000005117))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1h{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (14.4 * 0.00010000000000005117)) without (sloth_window)
         )
         or
         (
@@ -489,7 +503,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate2h{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (3 * 0.00010000000000005117)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1d{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (3 * 0.00010000000000005117))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1d{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (3 * 0.00010000000000005117)) without (sloth_window)
         )
         or
         (
diff --git a/examples/_gen/kubernetes-apiserver.yml b/examples/_gen/kubernetes-apiserver.yml
index a0bde7867202ec3841e46dc3757281bf72775866..4c30405e8482936bcc120bf37f2cc3de4e640611 100644
--- a/examples/_gen/kubernetes-apiserver.yml
+++ b/examples/_gen/kubernetes-apiserver.yml
@@ -110,6 +110,13 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="k8s-apiserver-requests-availability", sloth_service="k8s-apiserver", sloth_slo="requests-availability"}[30d])
     labels:
+      category: availability
+      cluster: valhalla
+      cmd: examplesgen.sh
+      component: kubernetes
+      sloth_id: k8s-apiserver-requests-availability
+      sloth_service: k8s-apiserver
+      sloth_slo: requests-availability
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-k8s-apiserver-requests-availability
   rules:
@@ -201,7 +208,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="k8s-apiserver-requests-availability", sloth_service="k8s-apiserver", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="k8s-apiserver-requests-availability", sloth_service="k8s-apiserver", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="k8s-apiserver-requests-availability", sloth_service="k8s-apiserver", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
@@ -224,7 +231,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="k8s-apiserver-requests-availability", sloth_service="k8s-apiserver", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="k8s-apiserver-requests-availability", sloth_service="k8s-apiserver", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="k8s-apiserver-requests-availability", sloth_service="k8s-apiserver", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
@@ -383,6 +390,13 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="k8s-apiserver-requests-latency", sloth_service="k8s-apiserver", sloth_slo="requests-latency"}[30d])
     labels:
+      category: latency
+      cluster: valhalla
+      cmd: examplesgen.sh
+      component: kubernetes
+      sloth_id: k8s-apiserver-requests-latency
+      sloth_service: k8s-apiserver
+      sloth_slo: requests-latency
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-k8s-apiserver-requests-latency
   rules:
@@ -474,7 +488,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="k8s-apiserver-requests-latency", sloth_service="k8s-apiserver", sloth_slo="requests-latency"} > (14.4 * 0.01)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="k8s-apiserver-requests-latency", sloth_service="k8s-apiserver", sloth_slo="requests-latency"} > (14.4 * 0.01))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="k8s-apiserver-requests-latency", sloth_service="k8s-apiserver", sloth_slo="requests-latency"} > (14.4 * 0.01)) without (sloth_window)
       )
       or
       (
@@ -497,7 +511,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="k8s-apiserver-requests-latency", sloth_service="k8s-apiserver", sloth_slo="requests-latency"} > (3 * 0.01)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="k8s-apiserver-requests-latency", sloth_service="k8s-apiserver", sloth_slo="requests-latency"} > (3 * 0.01))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="k8s-apiserver-requests-latency", sloth_service="k8s-apiserver", sloth_slo="requests-latency"} > (3 * 0.01)) without (sloth_window)
       )
       or
       (
diff --git a/examples/_gen/multifile.yml b/examples/_gen/multifile.yml
index f6633008cec6979b2c3e8f2145fee60ad0fa048c..6e14e02ea570a1a8af81e3d163e9059e98a6597a 100644
--- a/examples/_gen/multifile.yml
+++ b/examples/_gen/multifile.yml
@@ -110,7 +110,14 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"}[30d])
     labels:
+      cmd: examplesgen.sh
+      owner: myteam
+      repo: myorg/myservice
+      sloth_id: myservice-requests-availability
+      sloth_service: myservice
+      sloth_slo: requests-availability
       sloth_window: 30d
+      tier: "2"
 - name: sloth-slo-meta-recordings-myservice-requests-availability
   rules:
   - record: slo:objective:ratio
@@ -201,7 +208,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
@@ -223,7 +230,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
@@ -352,7 +359,14 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"}[30d])
     labels:
+      cmd: examplesgen.sh
+      owner: myteam2
+      repo: myorg/myservice2
+      sloth_id: myservice2-requests-availability
+      sloth_service: myservice2
+      sloth_slo: requests-availability
       sloth_window: 30d
+      tier: "1"
 - name: sloth-slo-meta-recordings-myservice2-requests-availability
   rules:
   - record: slo:objective:ratio
@@ -443,7 +457,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (14.4 * 0.00010000000000005117)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (14.4 * 0.00010000000000005117))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (14.4 * 0.00010000000000005117)) without (sloth_window)
       )
       or
       (
@@ -465,7 +479,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (3 * 0.00010000000000005117)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (3 * 0.00010000000000005117))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="myservice2-requests-availability", sloth_service="myservice2", sloth_slo="requests-availability"} > (3 * 0.00010000000000005117)) without (sloth_window)
       )
       or
       (
diff --git a/examples/_gen/no-alerts.yml b/examples/_gen/no-alerts.yml
index dfe0059cd308612c9ba2e747c60f735c20a8f286..b0209acb63b2981d0d50b8440501e8531ac71124 100644
--- a/examples/_gen/no-alerts.yml
+++ b/examples/_gen/no-alerts.yml
@@ -138,6 +138,11 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myapp-http-availability", sloth_service="myapp", sloth_slo="http-availability"}[30d])
     labels:
+      cmd: examplesgen.sh
+      owner: myteam
+      sloth_id: myapp-http-availability
+      sloth_service: myapp
+      sloth_slo: http-availability
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-myapp-http-availability
   rules:
diff --git a/examples/_gen/openslo-getting-started.yml b/examples/_gen/openslo-getting-started.yml
index deb16eebebb49f7693efafd606eee52868d920cd..472ab14fa1eaf4731f9c119d9b67e80cbd9891d3 100644
--- a/examples/_gen/openslo-getting-started.yml
+++ b/examples/_gen/openslo-getting-started.yml
@@ -145,6 +145,10 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="my-service-sloth-slo-my-service-0", sloth_service="my-service", sloth_slo="sloth-slo-my-service-0"}[30d])
     labels:
+      cmd: examplesgen.sh
+      sloth_id: my-service-sloth-slo-my-service-0
+      sloth_service: my-service
+      sloth_slo: sloth-slo-my-service-0
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-my-service-sloth-slo-my-service-0
   rules:
diff --git a/examples/_gen/openslo-kubernetes-apiserver.yml b/examples/_gen/openslo-kubernetes-apiserver.yml
index 7bb8ddc41f3db879431921675a2a779b977916fd..41a6f8cccd1b0f6cc19f0366d483c721a6ee0430 100644
--- a/examples/_gen/openslo-kubernetes-apiserver.yml
+++ b/examples/_gen/openslo-kubernetes-apiserver.yml
@@ -145,6 +145,10 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="k8s-apiserver-requests-availability-openslo-0", sloth_service="k8s-apiserver", sloth_slo="requests-availability-openslo-0"}[30d])
     labels:
+      cmd: examplesgen.sh
+      sloth_id: k8s-apiserver-requests-availability-openslo-0
+      sloth_service: k8s-apiserver
+      sloth_slo: requests-availability-openslo-0
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-k8s-apiserver-requests-availability-openslo-0
   rules:
@@ -355,6 +359,10 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="k8s-apiserver-requests-latency-openslo-0", sloth_service="k8s-apiserver", sloth_slo="requests-latency-openslo-0"}[30d])
     labels:
+      cmd: examplesgen.sh
+      sloth_id: k8s-apiserver-requests-latency-openslo-0
+      sloth_service: k8s-apiserver
+      sloth_slo: requests-latency-openslo-0
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-k8s-apiserver-requests-latency-openslo-0
   rules:
@@ -559,6 +567,10 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="k8s-apiserver-requests-latency-openslo-1", sloth_service="k8s-apiserver", sloth_slo="requests-latency-openslo-1"}[30d])
     labels:
+      cmd: examplesgen.sh
+      sloth_id: k8s-apiserver-requests-latency-openslo-1
+      sloth_service: k8s-apiserver
+      sloth_slo: requests-latency-openslo-1
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-k8s-apiserver-requests-latency-openslo-1
   rules:
diff --git a/examples/_gen/plugin-getting-started.yml b/examples/_gen/plugin-getting-started.yml
index 8da4e6bd79476e8276ddb30f2c4ce500621d038c..631df5ea065a555b0f819abd1c6f9e8c903a1d0d 100644
--- a/examples/_gen/plugin-getting-started.yml
+++ b/examples/_gen/plugin-getting-started.yml
@@ -117,7 +117,14 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"}[30d])
     labels:
+      cmd: examplesgen.sh
+      owner: myteam
+      repo: myorg/myservice
+      sloth_id: myservice-requests-availability
+      sloth_service: myservice
+      sloth_slo: requests-availability
       sloth_window: 30d
+      tier: "2"
 - name: sloth-slo-meta-recordings-myservice-requests-availability
   rules:
   - record: slo:objective:ratio
@@ -208,7 +215,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
@@ -230,7 +237,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
       )
       or
       (
diff --git a/examples/_gen/plugin-k8s-getting-started.yml b/examples/_gen/plugin-k8s-getting-started.yml
index 53a3be66d02976ac439c067ef3bf396ce7ae21b4..c50c073791c107a04e8b0cc3967c51f8c294a93f 100644
--- a/examples/_gen/plugin-k8s-getting-started.yml
+++ b/examples/_gen/plugin-k8s-getting-started.yml
@@ -129,7 +129,14 @@ spec:
         / ignoring (sloth_window)
         count_over_time(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"}[30d])
       labels:
+        cmd: examplesgen.sh
+        owner: myteam
+        repo: myorg/myservice
+        sloth_id: myservice-requests-availability
+        sloth_service: myservice
+        sloth_slo: requests-availability
         sloth_window: 30d
+        tier: "2"
       record: slo:sli_error:ratio_rate30d
   - name: sloth-slo-meta-recordings-myservice-requests-availability
     rules:
@@ -225,7 +232,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate5m{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (14.4 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
@@ -245,7 +252,7 @@ spec:
         (
             max(slo:sli_error:ratio_rate2h{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
             and
-            max((slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432))) without (sloth_window)
+            max(slo:sli_error:ratio_rate1d{sloth_id="myservice-requests-availability", sloth_service="myservice", sloth_slo="requests-availability"} > (3 * 0.0009999999999999432)) without (sloth_window)
         )
         or
         (
diff --git a/examples/_gen/raw-home-wifi.yml b/examples/_gen/raw-home-wifi.yml
index 661646277f207150fbe23719fb3eb1d290dbb221..54b8d7da0b7e62f83f6cc6f8f4b844eaed2fedb8 100644
--- a/examples/_gen/raw-home-wifi.yml
+++ b/examples/_gen/raw-home-wifi.yml
@@ -131,6 +131,13 @@ groups:
       / ignoring (sloth_window)
       count_over_time(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="wifi-client-satisfaction"}[30d])
     labels:
+      cluster: valhalla
+      cmd: examplesgen.sh
+      component: ubiquiti
+      context: home
+      sloth_id: home-wifi-wifi-client-satisfaction
+      sloth_service: home-wifi
+      sloth_slo: wifi-client-satisfaction
       sloth_window: 30d
 - name: sloth-slo-meta-recordings-home-wifi-wifi-client-satisfaction
   rules:
@@ -222,7 +229,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate5m{sloth_id="home-wifi-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="wifi-client-satisfaction"} > (14.4 * 0.05)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1h{sloth_id="home-wifi-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="wifi-client-satisfaction"} > (14.4 * 0.05))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1h{sloth_id="home-wifi-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="wifi-client-satisfaction"} > (14.4 * 0.05)) without (sloth_window)
       )
       or
       (
@@ -243,7 +250,7 @@ groups:
       (
           max(slo:sli_error:ratio_rate2h{sloth_id="home-wifi-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="wifi-client-satisfaction"} > (3 * 0.05)) without (sloth_window)
           and
-          max((slo:sli_error:ratio_rate1d{sloth_id="home-wifi-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="wifi-client-satisfaction"} > (3 * 0.05))) without (sloth_window)
+          max(slo:sli_error:ratio_rate1d{sloth_id="home-wifi-wifi-client-satisfaction", sloth_service="home-wifi", sloth_slo="wifi-client-satisfaction"} > (3 * 0.05)) without (sloth_window)
       )
       or
       (
diff --git a/internal/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go b/internal/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go
index 0949077adfe2915cb601080e9b0601b923c0876b..f8995be099480bc42a6d567698ca4032ca76051a 100644
--- a/internal/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go
+++ b/internal/k8sprometheus/k8sprometheusmock/prometheus_rules_ensurer.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.5.1. DO NOT EDIT.
+// Code generated by mockery v2.14.0. DO NOT EDIT.
 
 package k8sprometheusmock
 
@@ -28,3 +28,18 @@ func (_m *PrometheusRulesEnsurer) EnsurePrometheusRule(ctx context.Context, pr *
 
 	return r0
 }
+
+type mockConstructorTestingTNewPrometheusRulesEnsurer interface {
+	mock.TestingT
+	Cleanup(func())
+}
+
+// NewPrometheusRulesEnsurer creates a new instance of PrometheusRulesEnsurer. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+func NewPrometheusRulesEnsurer(t mockConstructorTestingTNewPrometheusRulesEnsurer) *PrometheusRulesEnsurer {
+	mock := &PrometheusRulesEnsurer{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
diff --git a/internal/prometheus/prometheusmock/file_manager.go b/internal/prometheus/prometheusmock/file_manager.go
index 1618f41aa3b944206eef10fed0d64f65157251a2..703008edf73c15339035e1f416509529cbf04084 100644
--- a/internal/prometheus/prometheusmock/file_manager.go
+++ b/internal/prometheus/prometheusmock/file_manager.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.5.1. DO NOT EDIT.
+// Code generated by mockery v2.14.0. DO NOT EDIT.
 
 package prometheusmock
 
@@ -60,3 +60,18 @@ func (_m *FileManager) ReadFile(ctx context.Context, path string) ([]byte, error
 
 	return r0, r1
 }
+
+type mockConstructorTestingTNewFileManager interface {
+	mock.TestingT
+	Cleanup(func())
+}
+
+// NewFileManager creates a new instance of FileManager. It also registers a testing interface on the mock and a cleanup function to assert the mocks expectations.
+func NewFileManager(t mockConstructorTestingTNewFileManager) *FileManager {
+	mock := &FileManager{}
+	mock.Mock.Test(t)
+
+	t.Cleanup(func() { mock.AssertExpectations(t) })
+
+	return mock
+}
diff --git a/pkg/kubernetes/api/sloth/v1/README.md b/pkg/kubernetes/api/sloth/v1/README.md
index 421519540e1099a2ed089c86d0346c00c6614eb9..46ef875c4c2ee605db6897c313a3187caf1039f6 100755
--- a/pkg/kubernetes/api/sloth/v1/README.md
+++ b/pkg/kubernetes/api/sloth/v1/README.md
@@ -60,7 +60,7 @@ var (
 )
 ```
 
-SchemeGroupVersion is group version used to register these objects\.
+SchemeGroupVersion is group version used to register these objects.
 
 ```go
 var SchemeGroupVersion = schema.GroupVersion{Group: sloth.GroupName, Version: version}
@@ -72,7 +72,7 @@ var SchemeGroupVersion = schema.GroupVersion{Group: sloth.GroupName, Version: ve
 func Kind(kind string) schema.GroupKind
 ```
 
-Kind takes an unqualified kind and returns back a Group qualified GroupKind\.
+Kind takes an unqualified kind and returns back a Group qualified GroupKind.
 
 ## func Resource
 
@@ -80,7 +80,7 @@ Kind takes an unqualified kind and returns back a Group qualified GroupKind\.
 func Resource(resource string) schema.GroupResource
 ```
 
-Resource takes an unqualified resource and returns a Group qualified GroupResource\.
+Resource takes an unqualified resource and returns a Group qualified GroupResource.
 
 ## func VersionKind
 
@@ -88,11 +88,11 @@ Resource takes an unqualified resource and returns a Group qualified GroupResour
 func VersionKind(kind string) schema.GroupVersionKind
 ```
 
-VersionKind takes an unqualified kind and returns back a Group qualified GroupVersionKind\.
+VersionKind takes an unqualified kind and returns back a Group qualified GroupVersionKind.
 
 ## type Alert
 
-Alert configures specific SLO alert\.
+Alert configures specific SLO alert.
 
 ```go
 type Alert struct {
@@ -117,7 +117,7 @@ type Alert struct {
 func (in *Alert) DeepCopy() *Alert
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new Alert\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Alert.
 
 ### func \(\*Alert\) DeepCopyInto
 
@@ -125,11 +125,11 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *Alert) DeepCopyInto(out *Alert)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type Alerting
 
-Alerting wraps all the configuration required by the SLO alerts\.
+Alerting wraps all the configuration required by the SLO alerts.
 
 ```go
 type Alerting struct {
@@ -160,7 +160,7 @@ type Alerting struct {
 func (in *Alerting) DeepCopy() *Alerting
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new Alerting\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Alerting.
 
 ### func \(\*Alerting\) DeepCopyInto
 
@@ -168,13 +168,13 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *Alerting) DeepCopyInto(out *Alerting)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type PrometheusServiceLevel
 
-\+genclient \+k8s:deepcopy\-gen:interfaces=k8s\.io/apimachinery/pkg/runtime\.Object \+kubebuilder:subresource:status \+kubebuilder:printcolumn:name="SERVICE"\,type="string"\,JSONPath="\.spec\.service" \+kubebuilder:printcolumn:name="DESIRED SLOs"\,type="integer"\,JSONPath="\.status\.processedSLOs" \+kubebuilder:printcolumn:name="READY SLOs"\,type="integer"\,JSONPath="\.status\.promOpRulesGeneratedSLOs" \+kubebuilder:printcolumn:name="GEN OK"\,type="boolean"\,JSONPath="\.status\.promOpRulesGenerated" \+kubebuilder:printcolumn:name="GEN AGE"\,type="date"\,JSONPath="\.status\.lastPromOpRulesSuccessfulGenerated" \+kubebuilder:printcolumn:name="AGE"\,type="date"\,JSONPath="\.metadata\.creationTimestamp" \+kubebuilder:resource:singular=prometheusservicelevel\,path=prometheusservicelevels\,shortName=psl;pslo\,scope=Namespaced\,categories=slo;slos;sli;slis
+\+genclient \+k8s:deepcopy\-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object \+kubebuilder:subresource:status \+kubebuilder:printcolumn:name="SERVICE",type="string",JSONPath=".spec.service" \+kubebuilder:printcolumn:name="DESIRED SLOs",type="integer",JSONPath=".status.processedSLOs" \+kubebuilder:printcolumn:name="READY SLOs",type="integer",JSONPath=".status.promOpRulesGeneratedSLOs" \+kubebuilder:printcolumn:name="GEN OK",type="boolean",JSONPath=".status.promOpRulesGenerated" \+kubebuilder:printcolumn:name="GEN AGE",type="date",JSONPath=".status.lastPromOpRulesSuccessfulGenerated" \+kubebuilder:printcolumn:name="AGE",type="date",JSONPath=".metadata.creationTimestamp" \+kubebuilder:resource:singular=prometheusservicelevel,path=prometheusservicelevels,shortName=psl;pslo,scope=Namespaced,categories=slo;slos;sli;slis
 
-PrometheusServiceLevel is the expected service quality level using Prometheus as the backend used by Sloth\.
+PrometheusServiceLevel is the expected service quality level using Prometheus as the backend used by Sloth.
 
 ```go
 type PrometheusServiceLevel struct {
@@ -192,7 +192,7 @@ type PrometheusServiceLevel struct {
 func (in *PrometheusServiceLevel) DeepCopy() *PrometheusServiceLevel
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new PrometheusServiceLevel\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusServiceLevel.
 
 ### func \(\*PrometheusServiceLevel\) DeepCopyInto
 
@@ -200,7 +200,7 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *PrometheusServiceLevel) DeepCopyInto(out *PrometheusServiceLevel)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ### func \(\*PrometheusServiceLevel\) DeepCopyObject
 
@@ -208,13 +208,13 @@ DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writ
 func (in *PrometheusServiceLevel) DeepCopyObject() runtime.Object
 ```
 
-DeepCopyObject is an autogenerated deepcopy function\, copying the receiver\, creating a new runtime\.Object\.
+DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
 
 ## type PrometheusServiceLevelList
 
-\+k8s:deepcopy\-gen:interfaces=k8s\.io/apimachinery/pkg/runtime\.Object
+\+k8s:deepcopy\-gen:interfaces=k8s.io/apimachinery/pkg/runtime.Object
 
-PrometheusServiceLevelList is a list of PrometheusServiceLevel resources\.
+PrometheusServiceLevelList is a list of PrometheusServiceLevel resources.
 
 ```go
 type PrometheusServiceLevelList struct {
@@ -231,7 +231,7 @@ type PrometheusServiceLevelList struct {
 func (in *PrometheusServiceLevelList) DeepCopy() *PrometheusServiceLevelList
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new PrometheusServiceLevelList\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusServiceLevelList.
 
 ### func \(\*PrometheusServiceLevelList\) DeepCopyInto
 
@@ -239,7 +239,7 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *PrometheusServiceLevelList) DeepCopyInto(out *PrometheusServiceLevelList)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ### func \(\*PrometheusServiceLevelList\) DeepCopyObject
 
@@ -247,11 +247,11 @@ DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writ
 func (in *PrometheusServiceLevelList) DeepCopyObject() runtime.Object
 ```
 
-DeepCopyObject is an autogenerated deepcopy function\, copying the receiver\, creating a new runtime\.Object\.
+DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object.
 
 ## type PrometheusServiceLevelSpec
 
-ServiceLevelSpec is the spec for a PrometheusServiceLevel\.
+ServiceLevelSpec is the spec for a PrometheusServiceLevel.
 
 ```go
 type PrometheusServiceLevelSpec struct {
@@ -277,7 +277,7 @@ type PrometheusServiceLevelSpec struct {
 func (in *PrometheusServiceLevelSpec) DeepCopy() *PrometheusServiceLevelSpec
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new PrometheusServiceLevelSpec\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusServiceLevelSpec.
 
 ### func \(\*PrometheusServiceLevelSpec\) DeepCopyInto
 
@@ -285,7 +285,7 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *PrometheusServiceLevelSpec) DeepCopyInto(out *PrometheusServiceLevelSpec)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type PrometheusServiceLevelStatus
 
@@ -313,7 +313,7 @@ type PrometheusServiceLevelStatus struct {
 func (in *PrometheusServiceLevelStatus) DeepCopy() *PrometheusServiceLevelStatus
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new PrometheusServiceLevelStatus\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PrometheusServiceLevelStatus.
 
 ### func \(\*PrometheusServiceLevelStatus\) DeepCopyInto
 
@@ -321,13 +321,13 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *PrometheusServiceLevelStatus) DeepCopyInto(out *PrometheusServiceLevelStatus)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type SLI
 
-SLI will tell what is good or bad for the SLO\. All SLIs will be get based on time windows\, that's why Sloth needs the queries to use \`\{\{\.window\}\}\` template variable\.
+SLI will tell what is good or bad for the SLO. All SLIs will be get based on time windows, that's why Sloth needs the queries to use \`\{\{.window\}\}\` template variable.
 
-Only one of the SLI types can be used\.
+Only one of the SLI types can be used.
 
 ```go
 type SLI struct {
@@ -351,7 +351,7 @@ type SLI struct {
 func (in *SLI) DeepCopy() *SLI
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new SLI\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLI.
 
 ### func \(\*SLI\) DeepCopyInto
 
@@ -359,11 +359,11 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *SLI) DeepCopyInto(out *SLI)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type SLIEvents
 
-SLIEvents is an SLI that is calculated as the division of bad events and total events\, giving a ratio SLI\. Normally this is the most common ratio type\.
+SLIEvents is an SLI that is calculated as the division of bad events and total events, giving a ratio SLI. Normally this is the most common ratio type.
 
 ```go
 type SLIEvents struct {
@@ -385,7 +385,7 @@ type SLIEvents struct {
 func (in *SLIEvents) DeepCopy() *SLIEvents
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new SLIEvents\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLIEvents.
 
 ### func \(\*SLIEvents\) DeepCopyInto
 
@@ -393,11 +393,11 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *SLIEvents) DeepCopyInto(out *SLIEvents)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type SLIPlugin
 
-SLIPlugin will use the SLI returned by the SLI plugin selected along with the options\.
+SLIPlugin will use the SLI returned by the SLI plugin selected along with the options.
 
 ```go
 type SLIPlugin struct {
@@ -416,7 +416,7 @@ type SLIPlugin struct {
 func (in *SLIPlugin) DeepCopy() *SLIPlugin
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new SLIPlugin\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLIPlugin.
 
 ### func \(\*SLIPlugin\) DeepCopyInto
 
@@ -424,11 +424,11 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *SLIPlugin) DeepCopyInto(out *SLIPlugin)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type SLIRaw
 
-SLIRaw is a error ratio SLI already calculated\. Normally this will be used when the SLI is already calculated by other recording rule\, system\.\.\.
+SLIRaw is a error ratio SLI already calculated. Normally this will be used when the SLI is already calculated by other recording rule, system...
 
 ```go
 type SLIRaw struct {
@@ -443,7 +443,7 @@ type SLIRaw struct {
 func (in *SLIRaw) DeepCopy() *SLIRaw
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new SLIRaw\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLIRaw.
 
 ### func \(\*SLIRaw\) DeepCopyInto
 
@@ -451,11 +451,11 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *SLIRaw) DeepCopyInto(out *SLIRaw)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 ## type SLO
 
-SLO is the configuration/declaration of the service level objective of a service\.
+SLO is the configuration/declaration of the service level objective of a service.
 
 ```go
 type SLO struct {
@@ -499,7 +499,7 @@ type SLO struct {
 func (in *SLO) DeepCopy() *SLO
 ```
 
-DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating a new SLO\.
+DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SLO.
 
 ### func \(\*SLO\) DeepCopyInto
 
@@ -507,7 +507,7 @@ DeepCopy is an autogenerated deepcopy function\, copying the receiver\, creating
 func (in *SLO) DeepCopyInto(out *SLO)
 ```
 
-DeepCopyInto is an autogenerated deepcopy function\, copying the receiver\, writing into out\. in must be non\-nil\.
+DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non\-nil.
 
 
 
diff --git a/pkg/kubernetes/gen/clientset/versioned/clientset.go b/pkg/kubernetes/gen/clientset/versioned/clientset.go
index 895abab4316419c22c307e3669b8d64f15cb4fd1..e70b75712bcbd8f10e827e583526273ea28f1670 100644
--- a/pkg/kubernetes/gen/clientset/versioned/clientset.go
+++ b/pkg/kubernetes/gen/clientset/versioned/clientset.go
@@ -45,6 +45,10 @@ func (c *Clientset) Discovery() discovery.DiscoveryInterface {
 func NewForConfig(c *rest.Config) (*Clientset, error) {
 	configShallowCopy := *c
 
+	if configShallowCopy.UserAgent == "" {
+		configShallowCopy.UserAgent = rest.DefaultKubernetesUserAgent()
+	}
+
 	// share the transport between all clients
 	httpClient, err := rest.HTTPClientFor(&configShallowCopy)
 	if err != nil {
diff --git a/pkg/kubernetes/gen/clientset/versioned/fake/register.go b/pkg/kubernetes/gen/clientset/versioned/fake/register.go
index c8d8e92d2ab2235ed69a74c94c5fc1bca101ee1b..6248599c0523436bab79b914d8d92a0f73fb4e05 100644
--- a/pkg/kubernetes/gen/clientset/versioned/fake/register.go
+++ b/pkg/kubernetes/gen/clientset/versioned/fake/register.go
@@ -21,14 +21,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{
 // AddToScheme adds all types of this clientset into the given scheme. This allows composition
 // of clientsets, like in:
 //
-//   import (
-//     "k8s.io/client-go/kubernetes"
-//     clientsetscheme "k8s.io/client-go/kubernetes/scheme"
-//     aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
-//   )
+//	import (
+//	  "k8s.io/client-go/kubernetes"
+//	  clientsetscheme "k8s.io/client-go/kubernetes/scheme"
+//	  aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
+//	)
 //
-//   kclientset, _ := kubernetes.NewForConfig(c)
-//   _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
+//	kclientset, _ := kubernetes.NewForConfig(c)
+//	_ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
 //
 // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
 // correctly.
diff --git a/pkg/kubernetes/gen/clientset/versioned/scheme/register.go b/pkg/kubernetes/gen/clientset/versioned/scheme/register.go
index 21b1f41ad44ccd80a7028def0e4ee4e40bca9447..c4f6bb531071ae40cab9f6d598f8518792fce32f 100644
--- a/pkg/kubernetes/gen/clientset/versioned/scheme/register.go
+++ b/pkg/kubernetes/gen/clientset/versioned/scheme/register.go
@@ -21,14 +21,14 @@ var localSchemeBuilder = runtime.SchemeBuilder{
 // AddToScheme adds all types of this clientset into the given scheme. This allows composition
 // of clientsets, like in:
 //
-//   import (
-//     "k8s.io/client-go/kubernetes"
-//     clientsetscheme "k8s.io/client-go/kubernetes/scheme"
-//     aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
-//   )
+//	import (
+//	  "k8s.io/client-go/kubernetes"
+//	  clientsetscheme "k8s.io/client-go/kubernetes/scheme"
+//	  aggregatorclientsetscheme "k8s.io/kube-aggregator/pkg/client/clientset_generated/clientset/scheme"
+//	)
 //
-//   kclientset, _ := kubernetes.NewForConfig(c)
-//   _ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
+//	kclientset, _ := kubernetes.NewForConfig(c)
+//	_ = aggregatorclientsetscheme.AddToScheme(clientsetscheme.Scheme)
 //
 // After this, RawExtensions in Kubernetes types will serialize kube-aggregator types
 // correctly.
diff --git a/pkg/kubernetes/gen/crd/sloth.slok.dev_prometheusservicelevels.yaml b/pkg/kubernetes/gen/crd/sloth.slok.dev_prometheusservicelevels.yaml
index 2bc1a778e95bc90e3c25a6933a9117d66114b7d7..7283e667923a0d1444d0457ec4ea89e38a7aaa1e 100644
--- a/pkg/kubernetes/gen/crd/sloth.slok.dev_prometheusservicelevels.yaml
+++ b/pkg/kubernetes/gen/crd/sloth.slok.dev_prometheusservicelevels.yaml
@@ -1,4 +1,3 @@
-
 ---
 apiVersion: apiextensions.k8s.io/v1
 kind: CustomResourceDefinition
@@ -261,9 +260,3 @@ spec:
     storage: true
     subresources:
       status: {}
-status:
-  acceptedNames:
-    kind: ""
-    plural: ""
-  conditions: []
-  storedVersions: []
diff --git a/pkg/prometheus/alertwindows/v1/README.md b/pkg/prometheus/alertwindows/v1/README.md
index 1a135005325a951661b2f003b25abdad455e6596..09544ab2fc4e5d96cebaef38de64c2397c59e504 100755
--- a/pkg/prometheus/alertwindows/v1/README.md
+++ b/pkg/prometheus/alertwindows/v1/README.md
@@ -39,7 +39,7 @@ type AlertWindows struct {
 
 ## type PageWindow
 
-PageWindow represents the configuration for page alerting\.
+PageWindow represents the configuration for page alerting.
 
 ```go
 type PageWindow struct {
@@ -60,7 +60,7 @@ type QuickSlowWindow struct {
 
 ## type Spec
 
-Spec represents the root type of the Alerting window\.
+Spec represents the root type of the Alerting window.
 
 ```go
 type Spec struct {
@@ -75,7 +75,7 @@ type Spec struct {
 
 ## type TicketWindow
 
-PageWindow represents the configuration for ticket alerting\.
+PageWindow represents the configuration for ticket alerting.
 
 ```go
 type TicketWindow struct {
diff --git a/pkg/prometheus/api/v1/README.md b/pkg/prometheus/api/v1/README.md
index 2a1a6187ee31beac3086c4b0638653645d35e424..ab419d3d9d304ecc75afd75116a43d89abd79128 100755
--- a/pkg/prometheus/api/v1/README.md
+++ b/pkg/prometheus/api/v1/README.md
@@ -84,7 +84,7 @@ const Version = "prometheus/v1"
 
 ## type Alert
 
-Alert configures specific SLO alert\.
+Alert configures specific SLO alert.
 
 ```go
 type Alert struct {
@@ -101,7 +101,7 @@ type Alert struct {
 
 ## type Alerting
 
-Alerting wraps all the configuration required by the SLO alerts\.
+Alerting wraps all the configuration required by the SLO alerts.
 
 ```go
 type Alerting struct {
@@ -121,9 +121,9 @@ type Alerting struct {
 
 ## type SLI
 
-SLI will tell what is good or bad for the SLO\. All SLIs will be get based on time windows\, that's why Sloth needs the queries to use \`\{\{\.window\}\}\` template variable\.
+SLI will tell what is good or bad for the SLO. All SLIs will be get based on time windows, that's why Sloth needs the queries to use \`\{\{.window\}\}\` template variable.
 
-Only one of the SLI types can be used\.
+Only one of the SLI types can be used.
 
 ```go
 type SLI struct {
@@ -138,7 +138,7 @@ type SLI struct {
 
 ## type SLIEvents
 
-SLIEvents is an SLI that is calculated as the division of bad events and total events\, giving a ratio SLI\. Normally this is the most common ratio type\.
+SLIEvents is an SLI that is calculated as the division of bad events and total events, giving a ratio SLI. Normally this is the most common ratio type.
 
 ```go
 type SLIEvents struct {
@@ -155,7 +155,7 @@ type SLIEvents struct {
 
 ## type SLIPlugin
 
-SLIPlugin will use the SLI returned by the SLI plugin selected along with the options\.
+SLIPlugin will use the SLI returned by the SLI plugin selected along with the options.
 
 ```go
 type SLIPlugin struct {
@@ -168,7 +168,7 @@ type SLIPlugin struct {
 
 ## type SLIRaw
 
-SLIRaw is a error ratio SLI already calculated\. Normally this will be used when the SLI is already calculated by other recording rule\, system\.\.\.
+SLIRaw is a error ratio SLI already calculated. Normally this will be used when the SLI is already calculated by other recording rule, system...
 
 ```go
 type SLIRaw struct {
@@ -179,7 +179,7 @@ type SLIRaw struct {
 
 ## type SLO
 
-SLO is the configuration/declaration of the service level objective of a service\.
+SLO is the configuration/declaration of the service level objective of a service.
 
 ```go
 type SLO struct {
@@ -203,7 +203,7 @@ type SLO struct {
 
 ## type Spec
 
-Spec represents the root type of the SLOs declaration specification\.
+Spec represents the root type of the SLOs declaration specification.
 
 ```go
 type Spec struct {
diff --git a/scripts/kubegen.sh b/scripts/kubegen.sh
index 89ba7e37a4e5c4354b375bcfb2d7d0c5b3829e1b..fb1cd0b21f64ee79044dab8d639738f85e5d3ecc 100755
--- a/scripts/kubegen.sh
+++ b/scripts/kubegen.sh
@@ -3,8 +3,8 @@
 set -o errexit
 set -o nounset
 
-IMAGE_CLI_GEN=quay.io/slok/kube-code-generator:v1.23.0
-IMAGE_CRD_GEN=quay.io/slok/kube-code-generator:v1.23.0
+IMAGE_CLI_GEN=quay.io/slok/kube-code-generator:v1.25.0
+IMAGE_CRD_GEN=quay.io/slok/kube-code-generator:v1.25.0
 ROOT_DIRECTORY=$(dirname "$(readlink -f "$0")")/../
 PROJECT_PACKAGE="github.com/slok/sloth"
 GEN_DIRECTORY="pkg/kubernetes/gen"