# Code Guardian 17.17: Fertig heißt jetzt: Ziel gemessen

*Quelle: https://www.provimedia.de/blog/code-guardian-17-17-neuerungen · Stand: 2026-11-10*

> Was bringt Code Guardian 17.17? Eine Kernprobe sperrt den Abschluss, der Agent hält nach jeder Anpassung an, kleine Änderungen brauchen weniger Prüfung. Eine Grenze bleibt offen.

Mit 17.17 kann eine Aufgabe eine Kernprobe tragen: eine Probe, die das Ziel selbst misst. Eine solche Aufgabe gilt erst als fertig, wenn die Kernprobe grün gemessen ist. Nach jeder Anpassung hält der Agent an und fragt, ob noch etwas kommt. Kleine Änderungen bekommen eine kleinere Prüfung. Eine Lücke aus 17.16 ist dagegen nicht behoben, und dieser Artikel sagt, was das für Sie heißt.

Den Artikel zu den Fassungen davor finden Sie unter [Code Guardian 17.14 bis 17.16: Neuerungen](https://www.provimedia.de/blog/code-guardian-17-16-neuerungen).

## Was Sie jetzt tun sollten

1. Führen Sie den Installer aus. Lokal geänderte Agentendefinitionen sichert er vor dem Ersetzen und meldet sie.
2. Prüfen Sie, ob jq installiert ist. Ohne jq prüfen nicht alle Riegel (siehe unten).
3. Läuft bei Ihnen der Leitstand-Dienst (Claude Code), starten Sie ihn einmal neu und laden Sie offene Leitstand-Tabs neu. Bis dahin passen Seite und Dienst nicht zusammen.
4. Legen Sie die nächste Aufgabe mit einer Kernprobe an.
5. Prüfen Sie Befehle zum Löschen, Deployen und Migrieren in einem Block mit Umleitung dahinter selbst. Die Formen stehen im letzten Abschnitt.

## Was ist eine Kernprobe?

Die Kernprobe ist die eine Probe, die das Ziel der Aufgabe selbst misst. Neue Aufgabenordner können sie tragen.

- `aufgabe.py neu --kriterien-entfaellt` geht nur noch zusammen mit `--kernprobe "<text> | lauf | <kommando>"`.
- `aufgabe.py abschliessen` sperrt, solange die Kernprobe rot ist, nie gemessen wurde oder veraltet ist.
- Bleibt sie rot und hat eine Antwort des Agenten sie nicht gemessen, erhält der Agent mit der nächsten Eingabe eine Zeile `[kern]`.

Ein Rot, das nichts am Ziel misst, zählt nicht. Das gilt etwa bei einem Programm, das nicht gefunden wird, bei einem falschen pytest-Pfad oder fehlendem Testgerüst. Beim Setzen endet das mit Exit 2 und einem Hinweis. Beim Messen steht dort „rot (Bedienfehler)“.

Außerdem belegen Testläufe von phpunit, pest, paratest und `php artisan test` nichts mehr, wenn sie keinen einzigen Test ausgeführt haben. Das gilt auch bei Exit 0. Hinter Hüllen wie `composer test` oder `bash -c` erkennt das Werkzeug das nicht.

**Für Sie heißt das:** „Fertig“ heißt, dass das Ziel selbst gemessen wurde, nicht nur etwas drumherum.

## Warum hält der Agent nach jeder Anpassung an?

Nach jeder Anpassung zeigt der Agent, was sich geändert hat und wie es geprüft wurde. Dann fragt er: „Weitere Anpassungen oder Abschluss?“ Audit, Kalt-Review, Doku und Commit laufen danach einmal für das ganze Bündel. Sie starten sie mit Ihrem Wort.

Die Bash-Riegel bleiben scharf. Es gibt Ausnahmen:

- Im Autopilot, bei „ohne Rückfragen“ und ohne Terminal läuft der Abschluss wie bisher je Änderung.
- Fehlerbehebungen im DEBUG-Ablauf laufen wie bisher durch.
- Worker, die ein Orchestrator steuert, halten nicht an.

**Für Sie heißt das:** Sie sammeln mehrere Anpassungen, und Audit und Review laufen einmal für alle.

## Wann läuft welcher Review?

Das Werkzeug `pruef-bedarf.py` sagt je Prüfschritt mit Grund, ob er nötig ist. Heikles behält beide Reviews, auch als Einzeiler. Die Sperrliste umfasst heikle Bereiche wie Anmeldung, Zahlung, Datenbankschema, Deploy, Abhängigkeiten und Geheimnisse.

Situation

Was gilt

Kalt-Review, Sperrliste berührt

Läuft immer

Kalt-Review, über 300 geänderte Zeilen

Läuft immer

Reiner Text oder reine Oberfläche unter 300 Zeilen

Kein Kalt-Review nötig

Logik unter 300 Zeilen

Der neue Prüfagent, der Schiedsrichter, urteilt nur nach dem Diff. Ohne tragendes Urteil bleibt der Kalt-Review nötig.

Plan-Reviewer, Sperrliste berührt, Plan über 40 Zeilen oder zwei Dateien, oder mehr als zwei Konsumenten bzw. mehr als ein Einstiegspunkt

Läuft immer

Kleiner Plan

Entfällt nur, wenn zwei blinde Urteile des Schiedsrichters einig sagen, dass er entfällt

Nichts daran sperrt. `aufgabe.py abschliessen` zeigt den Bedarf und zählt je Woche, wie oft ein Review unter der Schwelle lief. Der Schiedsrichter ist der 15. Prüfagent, in 17.16 waren es 14.

**Für Sie heißt das:** Kleine Änderungen ohne heiklen Bereich bekommen keine große Prüfung mehr. Heikle Änderungen werden nicht leichter.

## Hält mich ein Riegel jetzt häufiger an?

An zwei Stellen, ja.

- Ein Befehl, der mit einer Variable beginnt, etwa `$X rm -rf …`, wird geprüft, als stünde die Variable nicht da. Bei unbekanntem Wert vor Lösch-Argumenten fragt der Riegel nach.
- Eine Kopie per ssh aus dem Home-Verzeichnis des Servers in ein Ziel außerhalb davon, etwa ein Webverzeichnis, gilt als Deploy.

Gemessen wurde das über einen Bestand echter Befehle. Kein Befehl, der vorher gesperrt war, geht jetzt durch.

**Für Sie heißt das:** Mehr Rückfragen bei diesen zwei Formen, aber keine neue Durchlässigkeit.

## Was gibt es sonst Neues?

- **Ziel-Bezug:** Das Werkzeug `todo_ziel.py` ordnet offene Punkte den Zielen aus `.goals/index.json` zu. Die Aufgabenliste zeigt Punkte ohne Ziel, der Sitzungsstart nennt das Ziel.
- **Leitstand:** Der neue Reiter „Git“ zeigt je Projekt Zweige und Worktrees, welche Sitzung woran arbeitet und was noch nicht in main ist. Er liest nur, braucht kein Netz und ändert nichts.
- **CodeGuardMaster:** Er zeigt eine Mitteilung am Rechner, wenn eine Frage an Sie länger offen ist oder eine Kernprobe lange rot steht. Unter macOS nutzt er osascript, unter Linux notify-send, sonst nur die Datei `meldungen.md`.
- **Migrations-Detektor:** Er meldet `dropForeign`, `dropUnique` und `dropPrimary` als `[constraint]`. Bei leerem `down()` kommt `[irreversible]` dazu, Exit 1.
- **design-beweis:** Er misst geschützte Seiten per Basic-Auth über `CG_DESIGN_HTTP_USER` und `CG_DESIGN_HTTP_PASS`, nur an die eigene Adresse. Eine App-Sitzung übergeben Sie mit `--sitzung`.
- **session-orchestrator:** Jede Sitzung kann eine frei formulierte Rolle tragen (`rolle setzen selbst "<text>"`, höchstens fünf Zeilen). Sie übersteht die Kompaktierung. Nach `/clear` ist sie meist weg.

Das Claude-Paket zählt jetzt 5 Modi, 7 Gates, 15 Hooks, 22 Detektoren, 31 Skills, 15 Prüf-Agenten und 82 Werkzeuge.

## Welche Korrekturen sind dabei?

Das sind Korrekturen und keine neuen Fähigkeiten:

- Das DECISION GATE zeigt den Fragedialog wieder, nachdem gerade Anführungszeichen ersetzt wurden. Bisher wurde die Frage dabei ohne Dialog durchgereicht.
- Der Migrations-Detektor meldete Alembic-Migrationen bisher still als „nichts gefunden“. Jetzt stehen sie als UNSEEN da und machen den Lauf rot. Ihr Inhalt wird noch nicht ausgewertet.
- Fehlt jq, sagte der Installer bisher, es werde gar nichts geprüft. Das stimmte nicht. Jetzt nennt die Warnung, was gilt: Die vier Befehls-Riegel für Löschen, Deploy, Migration und Geheimnis im Commit sperren weiter. Die anderen prüfen ohne jq gar nicht, darunter der Schreib-Riegel für Läufe ohne Aufsicht. Die Meldung nennt 11 von 15.
- Der JS-Testdetektor mutiert Dateien mit Sonderzeichen im Namen jetzt wirklich, etwa `pages/[id].vue`. Vorher galt der Lauf ohne Mutation als bestanden.
- JS- und PHP-Testdetektor beenden einen Mutationslauf ohne lesbaren Bericht mit Exit 2 („Mutation nicht gemessen“) statt mit Exit 0.
- Im Auto-Modus von Claude Code wird der Autopilot nicht scharf. Die Doku sagt das jetzt.

## Was ändert sich für Codex-Nutzer?

Die Codex-Ausgabe bekommt die Kernprobe, den Haltepunkt, die schärferen Riegel und die Korrekturen an den Detektoren. Auch design-beweis (unter Codex nicht eigens nachgemessen), `PATHEXT` und das österreichische Impressum gibt es dort. Unterschiede zu Claude Code:

- Es gibt keinen Schiedsrichter. Für Logik gilt dort die Grenze von 100 Zeilen.
- Der Plan-Reviewer entfällt bei kleinen Plänen: höchstens zwei Konsumenten, ein Einstiegspunkt, keine Sperrliste.
- Der Haltepunkt entfällt „in einem Lauf ohne Terminal mit abgeschalteten Freigaben“.
- Den session-orchestrator und damit die Rollen je Sitzung gibt es im Codex-Paket nicht.
- Leitstand-Reiter „Git“, CodeGuardMaster, die `[kern]`-Zeile, der Ziel-Hinweis beim Sitzungsstart, die jq-Warnung, der Hinweis zum Auto-Modus und die DECISION-GATE-Korrektur gehören nur zur Claude-Ausgabe.
- Die Codex-Begrüßung nennt 81 Werkzeuge.

## Welche Grenzen bleiben offen?

Das sind die wichtigsten offenen Grenzen. Weitere stehen im Changelog im Kundenportal.

- **Befehle in einem Block mit Umleitung dahinter:** Der 17.16-Artikel kündigte an, diese Lücke im Folgerelease zu beheben. Das ist in 17.17 nicht geschehen. Nachgemessen: Die Riegel für Löschen, Deploy und Migration verhalten sich dort wie in 17.16. Sie erkennen solche Befehle weiterhin nicht in jeder Form. Einen neuen Termin gibt es nicht. Verlassen Sie sich bei Befehlen dieser Form nicht auf die Riegel, sondern prüfen Sie sie selbst, bevor Sie sie freigeben. Gemeint sind diese Formen: `{ befehl; } < eingabe
( befehl ) < eingabe
while read zeile; do befehl; done < eingabe
if bedingung; then befehl; fi < eingabe`
- **Autopilot und Haltepunkt:** Ist der Autopilot scharf, blendet der Hinweis den Haltepunkt nicht von selbst aus. Die Ausnahme steht nur im Hinweistext.
- **CodeGuardMaster:** Hängt ein Lauf, startet der Dienst unter macOS keinen zweiten. Der Hänger meldet sich nicht von selbst.

**Für Sie heißt das:** Die Abnahme ist enger an das Ziel gebunden, die Prüfung folgt der Größe der Änderung. Eine Lücke bei den Riegeln bleibt offen, und Sie prüfen sie selbst.

Mehr zum Produkt finden Sie auf der [Produktseite](https://www.provimedia.de/code-guardian).

## Quellen

- Changelog Code Guardian 17.17 (Claude-Paket und Codex-Paket), im Kundenportal

Stand: 10.11.2026

---

Kanonische Version: <https://www.provimedia.de/blog/code-guardian-17-17-neuerungen>
