Mutationstest der Provisionierung: acht Mutationen werden nicht erkannt (Test war vorher wirkungslos) #18

Closed
opened 2026-10-14 17:48:44 +00:00 by alf · 3 comments
Owner

Problem

provision/tools_mutation.py kopierte nur tests/ und die beiden Quelldateien in einen temporären Ordner. Die Tests, die templates/ und das Sandbox-Dockerfile lesen (Embedding-Vorlage, Strata-Vorlagen, Skript-Prüfung), schlugen dort schon vor jeder Mutation fehl. Dadurch galt jede Mutation als „erkannt“, das gemeldete „189 von 189“ sagte nichts aus.

Was schon behoben ist (iris-linux-server#17)

Das Werkzeug baut die Ordnerstruktur nach (provision/{tests,templates}, iris-server/hermes/sandbox-image), prüft zuerst, dass die unveränderten Tests grün sind (sonst bricht es ab), und nimmt einen Namensfilter (python3 tools_mutation.py Vorsatz). Ein ungültiges Muster („Strata Skript ausführbar“) ist angepasst, elf neue Mutationen für den Modellwechsel-Vorsatz und das Plugin strata-modelle sind dabei.

Ergebnis des ersten ehrlichen Laufs

257 von 266 Mutationen erkannt. Nicht erkannt (Tests zu schwach oder Mutation gleichwertig, jeweils prüfen):

  • provision.py: Optionen setzen zurück
  • provision.py: Embedding: Dimensionen
  • preflight.py: Embedding-Port nicht geprüft
  • provision.py: Iris-Server baut trotz Cache
  • provision.py: Registry-Images werden nicht gezogen
  • provision.py: Marker-Plugin immer erledigt
  • provision.py: Whisper-Test aufräumen
  • provision.py: Env erledigt: LLM prüfen

(Der neunte Eintrag, „Strata Skript ausführbar“, war ein ungültiges Muster und ist erledigt.)

Aufgabe

Zu jeder der acht Mutationen entweder einen Test ergänzen, der sie erkennt, oder sie als gleichwertig begründen und streichen. Danach python3 tools_mutation.py ohne Filter: alle erkannt.

## Problem `provision/tools_mutation.py` kopierte nur `tests/` und die beiden Quelldateien in einen temporären Ordner. Die Tests, die `templates/` und das Sandbox-Dockerfile lesen (Embedding-Vorlage, Strata-Vorlagen, Skript-Prüfung), schlugen dort schon **vor jeder Mutation** fehl. Dadurch galt jede Mutation als „erkannt“, das gemeldete „189 von 189“ sagte nichts aus. ## Was schon behoben ist (iris-linux-server#17) Das Werkzeug baut die Ordnerstruktur nach (`provision/{tests,templates}`, `iris-server/hermes/sandbox-image`), prüft zuerst, dass die unveränderten Tests grün sind (sonst bricht es ab), und nimmt einen Namensfilter (`python3 tools_mutation.py Vorsatz`). Ein ungültiges Muster („Strata Skript ausführbar“) ist angepasst, elf neue Mutationen für den Modellwechsel-Vorsatz und das Plugin `strata-modelle` sind dabei. ## Ergebnis des ersten ehrlichen Laufs 257 von 266 Mutationen erkannt. Nicht erkannt (Tests zu schwach oder Mutation gleichwertig, jeweils prüfen): - `provision.py`: Optionen setzen zurück - `provision.py`: Embedding: Dimensionen - `preflight.py`: Embedding-Port nicht geprüft - `provision.py`: Iris-Server baut trotz Cache - `provision.py`: Registry-Images werden nicht gezogen - `provision.py`: Marker-Plugin immer erledigt - `provision.py`: Whisper-Test aufräumen - `provision.py`: Env erledigt: LLM prüfen (Der neunte Eintrag, „Strata Skript ausführbar“, war ein ungültiges Muster und ist erledigt.) ## Aufgabe Zu jeder der acht Mutationen entweder einen Test ergänzen, der sie erkennt, oder sie als gleichwertig begründen und streichen. Danach `python3 tools_mutation.py` ohne Filter: alle erkannt.
Author
Owner

PR #25 gemergt: test(provision): acht überlebende Mutationen erkannt, Mutationstest vollständig grün (#18)

Neue Tests in provision/tests: Optionen ohne Wert setzen nichts zurück (store_config), Iris-Server baut
nicht, wenn die Images lokal da sind oder aus der Registry kommen, Vektorlänge 1024 mit wörtlichen
Zahlen (bge-m3), collect_facts fragt alle drei Ports inklusive Embedding, marker_plugin_done nur bei
gelistetem Plugin, Whisper-Test räumt die Sprachdatei weg (FakeSystem merkt sich Löschaufrufe),
videowatch_env_done braucht die LLM-Werte in der .env. tools_mutation.py: 277 von 277 erkannt.

Co-Authored-By: Claude Sonnet 5.5 noreply@anthropic.com
#25

Commits:

  • test(provision): acht überlebende Mutationen erkannt, Mutationstest vollständig grün (#18)
PR #25 gemergt: test(provision): acht überlebende Mutationen erkannt, Mutationstest vollständig grün (#18) Neue Tests in provision/tests: Optionen ohne Wert setzen nichts zurück (store_config), Iris-Server baut nicht, wenn die Images lokal da sind oder aus der Registry kommen, Vektorlänge 1024 mit wörtlichen Zahlen (bge-m3), collect_facts fragt alle drei Ports inklusive Embedding, marker_plugin_done nur bei gelistetem Plugin, Whisper-Test räumt die Sprachdatei weg (FakeSystem merkt sich Löschaufrufe), videowatch_env_done braucht die LLM-Werte in der .env. tools_mutation.py: 277 von 277 erkannt. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> https://forgejo.lewerken.duckdns.org/iris/iris-linux-server/pulls/25 Commits: - test(provision): acht überlebende Mutationen erkannt, Mutationstest vollständig grün (#18)
Author
Owner

Stand 2026-10-16: alle acht Mutationen werden erkannt (PR #25)

Ergebnis: python3 tools_mutation.py ohne Filter meldet 277 von 277 erkannt (266 vorhandene plus die 11 neuen). Die 246 Unit-Tests laufen durch.

Einordnung: Alle acht waren echte Testlücken, keine war gleichwertig, deshalb keine gestrichen. Es ändert sich nur provision/tests/, provision.py und preflight.py sind unberührt.

Mutation Neuer Test
Optionen setzen zurück store_config mit extra={"profile": None, ...} lässt gespeicherte Werte stehen, ein neuer Wert ersetzt den alten
Embedding: Dimensionen wörtlich 1024 Werte werden akzeptiert, 768, 1023 und 1025 abgewiesen (die bisherigen Tests nutzten die Konstante selbst)
Embedding-Port nicht geprüft collect_facts fragt genau 8080, 18094 und 11434; nur 11434 belegt liefert [11434]
Iris-Server baut trotz Cache Images lokal vorhanden → up -d --no-build, kein docker pull
Registry-Images werden nicht gezogen fehlende Images → docker pull für beide Registry-Namen, danach --no-build; bei Fehlern wird gebaut
Marker-Plugin immer erledigt nicht gelistet, nur anderes Plugin gelistet, Server nicht erreichbar → False
Whisper-Test aufräumen FakeSystem merkt sich Löschaufrufe (removed), der Test prüft den Pfad /tmp/iris-whisper-test.wav
Env erledigt: LLM prüfen Videowatch-Dateien stimmen, aber LLM_BASE_URL falsch oder LLM_MODEL fehlt in der .env → False

Entscheidung zur Dimensions-Mutation: Der Test nutzt bewusst wörtliche Zahlen und nicht pv.EMBEDDING_DIMENSIONS. Wechselt das Embedding-Modell einmal (bge-m3 liefert 1024), muss der Test zusammen mit der Konstante angepasst werden und fällt nicht unbemerkt weg.

Nicht geprüft: Ob die neuen Tests auch dann Mutationen erkennen, die ich nicht kenne, ist offen. Der Mutationstest deckt nur die in tools_mutation.py aufgeführten Änderungen ab.

## Stand 2026-10-16: alle acht Mutationen werden erkannt (PR #25) **Ergebnis:** `python3 tools_mutation.py` ohne Filter meldet **277 von 277 erkannt** (266 vorhandene plus die 11 neuen). Die 246 Unit-Tests laufen durch. **Einordnung:** Alle acht waren echte Testlücken, keine war gleichwertig, deshalb keine gestrichen. Es ändert sich nur `provision/tests/`, `provision.py` und `preflight.py` sind unberührt. | Mutation | Neuer Test | |---|---| | Optionen setzen zurück | `store_config` mit `extra={"profile": None, ...}` lässt gespeicherte Werte stehen, ein neuer Wert ersetzt den alten | | Embedding: Dimensionen | wörtlich 1024 Werte werden akzeptiert, 768, 1023 und 1025 abgewiesen (die bisherigen Tests nutzten die Konstante selbst) | | Embedding-Port nicht geprüft | `collect_facts` fragt genau 8080, 18094 und 11434; nur 11434 belegt liefert `[11434]` | | Iris-Server baut trotz Cache | Images lokal vorhanden → `up -d --no-build`, kein `docker pull` | | Registry-Images werden nicht gezogen | fehlende Images → `docker pull` für beide Registry-Namen, danach `--no-build`; bei Fehlern wird gebaut | | Marker-Plugin immer erledigt | nicht gelistet, nur anderes Plugin gelistet, Server nicht erreichbar → `False` | | Whisper-Test aufräumen | `FakeSystem` merkt sich Löschaufrufe (`removed`), der Test prüft den Pfad `/tmp/iris-whisper-test.wav` | | Env erledigt: LLM prüfen | Videowatch-Dateien stimmen, aber `LLM_BASE_URL` falsch oder `LLM_MODEL` fehlt in der `.env` → `False` | **Entscheidung zur Dimensions-Mutation:** Der Test nutzt bewusst wörtliche Zahlen und nicht `pv.EMBEDDING_DIMENSIONS`. Wechselt das Embedding-Modell einmal (bge-m3 liefert 1024), muss der Test zusammen mit der Konstante angepasst werden und fällt nicht unbemerkt weg. **Nicht geprüft:** Ob die neuen Tests auch dann Mutationen erkennen, die ich nicht kenne, ist offen. Der Mutationstest deckt nur die in `tools_mutation.py` aufgeführten Änderungen ab.
Author
Owner

Geschlossen auf Wunsch von Alf. Umgesetzt in iris-linux-server PR 25: alle acht Mutationen werden erkannt, tools_mutation.py meldet 277 von 277.

Geschlossen auf Wunsch von Alf. Umgesetzt in iris-linux-server PR 25: alle acht Mutationen werden erkannt, tools_mutation.py meldet 277 von 277.
alf closed this issue 2026-10-16 14:31:31 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
iris/iris-linux-server#18
No description provided.