Die Versionsabstands-Prüfung zwischen kubectl und k3släuft nicht in dem PR, der sie auslösen würde — sie sitzt in einem Job, der genau dann übersprungen wird.
Die Prüfung („mehr als ein Minor Abstand → Fehler") ist ein Schritt innerhalb des Install-Test-Jobs. Dieser Job läuft nur für Charts, die ein PR ändert. Ein PR, der ausschließlich KUBECTL_VERSION hebt, ändert kein Chart-Verzeichnis — der Job wird übersprungen, die Prüfung findet nicht statt, der PR ist grün.
Was gerade vorliegt
Renovate hat zwei PRs offen, erzeugt durch separateMinorPatch aus Gitea #34:
Patch auf v1.35.9 — unkritisch, Abstand bleibt 0.
Minor auf v1.37.1 — Abstand zu k3s v1.35.5 wäre zwei Minor. Genau der Fall, den die Prüfung abfangen soll.
Beide liefen nur 11 beziehungsweise 12 Sekunden, also ohne Install-Test. Der 1.37.1-PR kann damit grün automerged werden, und rot wird anschließend der nächste Chart-PR — mit einer Meldung über kubectl, in einer Änderung, die niemand damit in Verbindung bringt.
K3S_IMAGE wird von nichts verfolgt. Der Kommentar im Workflow sagt das selbst. Die beiden Werte können also nur auseinanderlaufen, nicht gemeinsam wandern.
Warum das die bekannte Fehlerklasse ist
Die README dieses Repositories formuliert die Regel: eine Prüfung, die ein kaputtes System besteht, ist schlimmer als keine Prüfung. Hier ist es eine Stufe subtiler — die Prüfung besteht nicht, sie findet nicht statt, und die Grünfärbung des PR behauptet trotzdem, es sei alles geprüft. Dass der Fehler später und an anderer Stelle auftaucht, ist der eigentliche Schaden.
Entstanden ist die Lage erst durch die Renovate-Angleichung (#34): Vorher bewegte niemand KUBECTL_VERSION automatisch.
Mögliche Wege, nicht abschließend bewertet
Die Prüfung aus dem Install-Test herausziehen in einen Job, der immer läuft — etwa neben dem Mengen-Render-Test in validate-charts.yml, der bewusst über alle Charts läuft, unabhängig von den geänderten. Dann geht der verursachende PR rot, sofort und mit der richtigen Meldung. Strukturell die richtige Antwort; zu klären ist, wo die beiden Werte dann gelesen werden, ohne sie zu duplizieren.
K3S_IMAGE ebenfalls von Renovate verfolgen lassen (ein # renovate:-Kommentar genügt, die Zeile ist ein Docker-Verweis). Dann wandern beide — aber möglicherweise in zwei PRs, und zwischen den Merges besteht derselbe Zustand.
Beide Aktualisierungen gruppieren (groupName), damit sie nur gemeinsam auftreten. Verträgt sich mit Weg 2 und nimmt das Zwischenfenster weg.
kubectl an die k3s-Linie binden (allowedVersions). Einfach, aber die Grenze muss bei jedem k3s-Sprung von Hand mitwandern — und wer das vergisst, friert kubectl still ein. Dieselbe Falle wie bei der nginx-Einschränkung, die aus genau diesem Grund suffix-tolerant geschrieben wurde.
Weg 1 plus 3 wäre meine Empfehlung: Die Prüfung greift dort, wo die Änderung passiert, und die beiden Werte können sich gar nicht erst trennen.
Sofort, unabhängig von der Lösung
Den PR auf v1.37.1 nicht mergen, solange K3S_IMAGE auf v1.35.5 steht. Der Patch-PR auf v1.35.9 ist unbedenklich.
Die Versionsabstands-Prüfung zwischen `kubectl` und `k3s` **läuft nicht in dem PR, der sie auslösen würde** — sie sitzt in einem Job, der genau dann übersprungen wird.
## Der Zustand
In `.github/workflows/install-test.yml`:
```
K3S_IMAGE: docker.io/rancher/k3s:v1.35.5-k3s1
# renovate: datasource=github-releases depName=kubernetes/kubernetes
KUBECTL_VERSION: v1.35.5
```
Die Prüfung („mehr als ein Minor Abstand → Fehler") ist ein **Schritt innerhalb des Install-Test-Jobs**. Dieser Job läuft nur für Charts, die ein PR ändert. Ein PR, der ausschließlich `KUBECTL_VERSION` hebt, ändert kein Chart-Verzeichnis — der Job wird übersprungen, die Prüfung findet nicht statt, der PR ist grün.
## Was gerade vorliegt
Renovate hat zwei PRs offen, erzeugt durch `separateMinorPatch` aus Gitea #34:
- **Patch auf `v1.35.9`** — unkritisch, Abstand bleibt 0.
- **Minor auf `v1.37.1`** — Abstand zu `k3s v1.35.5` wäre **zwei Minor**. Genau der Fall, den die Prüfung abfangen soll.
Beide liefen nur 11 beziehungsweise 12 Sekunden, also ohne Install-Test. Der 1.37.1-PR kann damit grün automerged werden, und rot wird anschließend der **nächste Chart-PR** — mit einer Meldung über `kubectl`, in einer Änderung, die niemand damit in Verbindung bringt.
**`K3S_IMAGE` wird von nichts verfolgt.** Der Kommentar im Workflow sagt das selbst. Die beiden Werte können also nur auseinanderlaufen, nicht gemeinsam wandern.
## Warum das die bekannte Fehlerklasse ist
Die README dieses Repositories formuliert die Regel: *eine Prüfung, die ein kaputtes System besteht, ist schlimmer als keine Prüfung.* Hier ist es eine Stufe subtiler — die Prüfung besteht nicht, sie **findet nicht statt**, und die Grünfärbung des PR behauptet trotzdem, es sei alles geprüft. Dass der Fehler später und an anderer Stelle auftaucht, ist der eigentliche Schaden.
Entstanden ist die Lage erst durch die Renovate-Angleichung (#34): Vorher bewegte niemand `KUBECTL_VERSION` automatisch.
## Mögliche Wege, nicht abschließend bewertet
1. **Die Prüfung aus dem Install-Test herausziehen** in einen Job, der immer läuft — etwa neben dem Mengen-Render-Test in `validate-charts.yml`, der bewusst über alle Charts läuft, unabhängig von den geänderten. Dann geht der verursachende PR rot, sofort und mit der richtigen Meldung. Strukturell die richtige Antwort; zu klären ist, wo die beiden Werte dann gelesen werden, ohne sie zu duplizieren.
2. **`K3S_IMAGE` ebenfalls von Renovate verfolgen lassen** (ein `# renovate:`-Kommentar genügt, die Zeile ist ein Docker-Verweis). Dann wandern beide — aber möglicherweise in zwei PRs, und zwischen den Merges besteht derselbe Zustand.
3. **Beide Aktualisierungen gruppieren** (`groupName`), damit sie nur gemeinsam auftreten. Verträgt sich mit Weg 2 und nimmt das Zwischenfenster weg.
4. **`kubectl` an die k3s-Linie binden** (`allowedVersions`). Einfach, aber die Grenze muss bei jedem k3s-Sprung von Hand mitwandern — und wer das vergisst, friert `kubectl` still ein. Dieselbe Falle wie bei der nginx-Einschränkung, die aus genau diesem Grund suffix-tolerant geschrieben wurde.
Weg 1 plus 3 wäre meine Empfehlung: Die Prüfung greift dort, wo die Änderung passiert, und die beiden Werte können sich gar nicht erst trennen.
## Sofort, unabhängig von der Lösung
**Den PR auf `v1.37.1` nicht mergen**, solange `K3S_IMAGE` auf `v1.35.5` steht. Der Patch-PR auf `v1.35.9` ist unbedenklich.
Die Abstandsprüfung lebt innerhalb dieses Jobs. Ein PR, der nur KUBECTL_VERSION in .github/workflows/install-test.yml anhebt, berührt kein Chart-Verzeichnis, also liefert detect-changed-charts eine leere Liste, any-install wird false, der Job wird übersprungen — und die Prüfung läuft genau in dem PR nicht, für den sie gebaut wurde.
Heutiger Stand der beiden Werte:KUBECTL_VERSION: v1.35.9 (durch #68 angehoben) gegen K3S_IMAGE v1.35.5. Gleiche Minor-Version, der Abstand ist also in Ordnung — aber durch Glück, nicht durch Prüfung.
Darum muss PR #69 als WIP stehen: er hebt KUBECTL_VERSION auf v1.37.1, also zwei Minor-Versionen über dem Server. Kubernetes stützt höchstens eine. Der PR wäre grün, weil die Prüfung in ihm nicht läuft.
Nebenbefund: der Kommentar bei install-test.yml:120-121 sagt, der Wert „mirrors K3S_IMAGE above (v1.35.5)". Seit #68 steht dort v1.35.9 — dieselbe Minor-Linie, also harmlos, aber der Kommentar stimmt wörtlich nicht mehr.
## Nachgeprüft am 2026-10-04: unverändert offen, und hier ist der Beleg
`.github/workflows/validate-charts.yml:230-233`:
```yaml
install-test:
name: "Install-test"
needs: [detect-changed-charts, build-chart]
if: needs.detect-changed-charts.outputs.any-install == 'true'
```
Die Abstandsprüfung lebt **innerhalb** dieses Jobs. Ein PR, der nur `KUBECTL_VERSION` in `.github/workflows/install-test.yml` anhebt, berührt **kein** Chart-Verzeichnis, also liefert `detect-changed-charts` eine leere Liste, `any-install` wird `false`, der Job wird übersprungen — und die Prüfung läuft genau in dem PR nicht, für den sie gebaut wurde.
**Heutiger Stand der beiden Werte:** `KUBECTL_VERSION: v1.35.9` (durch #68 angehoben) gegen `K3S_IMAGE` v1.35.5. Gleiche Minor-Version, der Abstand ist also in Ordnung — aber durch Glück, nicht durch Prüfung.
**Darum muss PR #69 als WIP stehen:** er hebt `KUBECTL_VERSION` auf `v1.37.1`, also **zwei** Minor-Versionen über dem Server. Kubernetes stützt höchstens eine. Der PR wäre grün, weil die Prüfung in ihm nicht läuft.
**Nebenbefund:** der Kommentar bei `install-test.yml:120-121` sagt, der Wert „mirrors K3S_IMAGE above (v1.35.5)". Seit #68 steht dort `v1.35.9` — dieselbe Minor-Linie, also harmlos, aber der Kommentar stimmt wörtlich nicht mehr.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Die Versionsabstands-Prüfung zwischen
kubectlundk3släuft nicht in dem PR, der sie auslösen würde — sie sitzt in einem Job, der genau dann übersprungen wird.Der Zustand
In
.github/workflows/install-test.yml:Die Prüfung („mehr als ein Minor Abstand → Fehler") ist ein Schritt innerhalb des Install-Test-Jobs. Dieser Job läuft nur für Charts, die ein PR ändert. Ein PR, der ausschließlich
KUBECTL_VERSIONhebt, ändert kein Chart-Verzeichnis — der Job wird übersprungen, die Prüfung findet nicht statt, der PR ist grün.Was gerade vorliegt
Renovate hat zwei PRs offen, erzeugt durch
separateMinorPatchaus Gitea #34:v1.35.9— unkritisch, Abstand bleibt 0.v1.37.1— Abstand zuk3s v1.35.5wäre zwei Minor. Genau der Fall, den die Prüfung abfangen soll.Beide liefen nur 11 beziehungsweise 12 Sekunden, also ohne Install-Test. Der 1.37.1-PR kann damit grün automerged werden, und rot wird anschließend der nächste Chart-PR — mit einer Meldung über
kubectl, in einer Änderung, die niemand damit in Verbindung bringt.K3S_IMAGEwird von nichts verfolgt. Der Kommentar im Workflow sagt das selbst. Die beiden Werte können also nur auseinanderlaufen, nicht gemeinsam wandern.Warum das die bekannte Fehlerklasse ist
Die README dieses Repositories formuliert die Regel: eine Prüfung, die ein kaputtes System besteht, ist schlimmer als keine Prüfung. Hier ist es eine Stufe subtiler — die Prüfung besteht nicht, sie findet nicht statt, und die Grünfärbung des PR behauptet trotzdem, es sei alles geprüft. Dass der Fehler später und an anderer Stelle auftaucht, ist der eigentliche Schaden.
Entstanden ist die Lage erst durch die Renovate-Angleichung (#34): Vorher bewegte niemand
KUBECTL_VERSIONautomatisch.Mögliche Wege, nicht abschließend bewertet
validate-charts.yml, der bewusst über alle Charts läuft, unabhängig von den geänderten. Dann geht der verursachende PR rot, sofort und mit der richtigen Meldung. Strukturell die richtige Antwort; zu klären ist, wo die beiden Werte dann gelesen werden, ohne sie zu duplizieren.K3S_IMAGEebenfalls von Renovate verfolgen lassen (ein# renovate:-Kommentar genügt, die Zeile ist ein Docker-Verweis). Dann wandern beide — aber möglicherweise in zwei PRs, und zwischen den Merges besteht derselbe Zustand.groupName), damit sie nur gemeinsam auftreten. Verträgt sich mit Weg 2 und nimmt das Zwischenfenster weg.kubectlan die k3s-Linie binden (allowedVersions). Einfach, aber die Grenze muss bei jedem k3s-Sprung von Hand mitwandern — und wer das vergisst, friertkubectlstill ein. Dieselbe Falle wie bei der nginx-Einschränkung, die aus genau diesem Grund suffix-tolerant geschrieben wurde.Weg 1 plus 3 wäre meine Empfehlung: Die Prüfung greift dort, wo die Änderung passiert, und die beiden Werte können sich gar nicht erst trennen.
Sofort, unabhängig von der Lösung
Den PR auf
v1.37.1nicht mergen, solangeK3S_IMAGEaufv1.35.5steht. Der Patch-PR aufv1.35.9ist unbedenklich.Nachgeprüft am 2026-10-04: unverändert offen, und hier ist der Beleg
.github/workflows/validate-charts.yml:230-233:Die Abstandsprüfung lebt innerhalb dieses Jobs. Ein PR, der nur
KUBECTL_VERSIONin.github/workflows/install-test.ymlanhebt, berührt kein Chart-Verzeichnis, also liefertdetect-changed-chartseine leere Liste,any-installwirdfalse, der Job wird übersprungen — und die Prüfung läuft genau in dem PR nicht, für den sie gebaut wurde.Heutiger Stand der beiden Werte:
KUBECTL_VERSION: v1.35.9(durch #68 angehoben) gegenK3S_IMAGEv1.35.5. Gleiche Minor-Version, der Abstand ist also in Ordnung — aber durch Glück, nicht durch Prüfung.Darum muss PR #69 als WIP stehen: er hebt
KUBECTL_VERSIONaufv1.37.1, also zwei Minor-Versionen über dem Server. Kubernetes stützt höchstens eine. Der PR wäre grün, weil die Prüfung in ihm nicht läuft.Nebenbefund: der Kommentar bei
install-test.yml:120-121sagt, der Wert „mirrors K3S_IMAGE above (v1.35.5)". Seit #68 steht dortv1.35.9— dieselbe Minor-Linie, also harmlos, aber der Kommentar stimmt wörtlich nicht mehr.