docs(savepoint): der volle Durchlauf - vier Belege und ein gefundener Fehler
Ampel / ampel (push) Failing after 30s

Belegt: Auswurf im automatischen Weg (bisher nur der UI-Knopf), Phasen-Marke
springt bei der Uebergabe auf true, Sprachwahl kommt beim externen Encoder an
("Ton: deu, Untertitel: deu"), Mount-Wache heilt in 4,2 s.

Gefunden: Jeder erste Film in einer neuen Ablage war unerreichbar - die Pruefung
liess nur eine fehlende Ordner-Ebene durch, obwohl makedirs die ganze Kette
anlegt. Der Fehler wartete seit v3.17 darauf, dass jemand eine frische Ablage
benutzt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-26 17:47:27 +02:00
parent 96c400f2f2
commit 4915bba0b3
+47 -8
View File
@@ -10,8 +10,9 @@
| | |
|---|---|
| Repo + VM | `9156e8a`, Ampel **grün**, deployt |
| Tests | **289** grün (Sitzungsbeginn heute: 130) |
| Repo + VM | `96c400f`, Ampel **grün**, deployt |
| Tests | **301** grün (Sitzungsbeginn heute: 130) |
| Voller Durchlauf | Rip 40,9 GB ✅ · Auswurf ✅ · Übergabe an den PC ✅ · Kompression läuft |
| Rate-Limit-Eimer | PC bei 590, VM gleichzeitig bei 599 — **getrennt** (vorher einer für alle) |
| Anfragen des Dashboards | 75/min → **30/min** |
| Phasen-Marke | live gesetzt: `rip_fertig: false` beim Rip-Start |
@@ -181,13 +182,51 @@ Nebenbei ist damit auch die Log-Brücke bestätigt: Die Zeilen von 14:21 und
gefiltert hatte — die Liste war nicht leer, ich habe an der falschen Seite
geschaut.)
### 5. Was noch offen ist
### 5. Der volle Durchlauf — was er bewiesen und was er gefunden hat
- **Voller Durchlauf läuft gerade** (Job `bfb7a946`, über den neuen
`retry-rip`-Weg gestartet): Akira-BD → Auswurf → Kompression auf
`tobisnicerpc` mit Wunschsprache `deu` (Ton **und** Untertitel). Das ist die
Kette, die noch nie komplett durchlief — Sprachwahl war bisher nur bis zum
Scan belegt, nie durch einen echten Encode.
Job `bfb7a946`, über den neuen `retry-rip`-Weg an der Akira-BD gestartet.
Aus dem Log, unverändert:
```
15:38:57 Copy complete. 1 titles saved.
15:39:02 Disc ausgeworfen
15:39:02 [watcher] Disc entfernt: /dev/sr0
15:39:03 Rip fertig, Kompression eingereiht
15:39:05 Dieser Worker erreicht die Ziel (fertige Datei) nicht: …
15:44:17 rippy: neu verbunden (4.2s)
15:44:36 Kompression gestartet (1 Datei(en), Disc-Typ 'bluray',
Preset 'HQ 1080p30 Surround', Ton: deu, Untertitel: deu)
```
**Vier Dinge sind damit belegt, die vorher nur behauptet waren:**
| | |
|---|---|
| Auswurf im AUTOMATISCHEN Weg | bisher war nur der Knopf im UI live geprüft, nicht der Weg nach einem echten Rip — und die Laufwerks-Wache bestätigt ihn unabhängig |
| Phasen-Marke | sprang bei der Übergabe auf `rip_fertig: true`, `retry_art` wurde `transcode` — der Knopf bot „Neu komprimieren" an, bei 40,9 GB intaktem Rip genau richtig |
| Sprachwahl beim EXTERNEN Encoder | `Ton: deu, Untertitel: deu` — die Wahl aus dem Rip-Dialog kommt auf dem Windows-PC an |
| Mount-Wache | 4,2 s, inklusive eines abgewiesenen ersten Versuchs (`mount error(16): Device or resource busy`) |
**Und ein echter Fehler, gefunden genau dort, wo noch nie jemand war:** Die
Kompression brach 0,2 s nach der Übergabe ab —
`erreicht die Ziel nicht: \\…\rippy\movies\Akira (1988)`. Die Freigabe war
erreichbar; es fehlten zwei **noch nie angelegte** Ordner. Die Prüfung ließ aber
genau EINE fehlende Ebene durch (sie sah nach `dirname`), obwohl gleich darauf
`os.makedirs` die ganze Kette anlegt. Damit war **jeder erste Film in einer neuen
Ablage** systematisch unerreichbar — der Fehler wartete seit v3.17 darauf, dass
jemand eine frische Ablage benutzt.
Zweiter Fehler in derselben Meldung: Sie behauptete
„RIPPY_PATH_MAP … deckt diesen Pfad aber nicht ab" und nannte im selben Satz den
korrekt übersetzten UNC-Pfad. Wer dem folgte, suchte in der Karte statt in der
Freigabe. Dazu der Artikelfehler „erreicht **die** Ziel".
`_erreichbarkeit_pruefen` hatte **keinen einzigen Test** — deshalb kam beides
durch. Jetzt zwölf (`test_erreichbarkeit.py`). Beim Schreiben fiel ein dritter
Fehler auf: `isdir=os.path.isdir` als Vorgabewert bindet die Funktion beim
IMPORT; ein Ersetzen geht danach ins Leere. Auflösung jetzt beim Aufruf.
### 6. Was noch offen ist
- **Job `2182d525` trägt einen falschen Fehlertext.** Das Aufräumen lief, bevor
der phasenbewusste Text deployt war; dort steht noch „mit Neu komprimieren'
läuft die Kompression erneut" für einen Rip, der bei 12 % starb. Der Knopf