Files
printserver/openspec/changes/fix-tonersave-queue-default/tasks.md
T

84 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Tasks
Aufteilung: 1. Ursache feststellen (blockierend), 2. Testschicht, 3. Spec/README,
4. Serverseitiger Fix nur falls 1 ihn hergibt.
## 1. Ursache feststellen (Verifikation des Ist-Zustands)
- [ ] 1.1 Jobpfad reproduzieren: Image bauen, Testcontainer mit
`PRINTER_OPTIONS="BRColorMode=None TonerSaveMode=True"` starten, einen Job
einreichen (`podman exec <c> lp -d <queue> -o raw <sample>` oder
`cupsfilter <sample>`), und im versandten PostScript
(`/var/spool/cups/d<JobId>-*`, Job-Nummer aus
`lpstat -W completed -o`) prüfen, ob der Tonerspar-Zweig
(`statusdict/tonersave` … `true`) enthalten ist.
Verifikation: Ergebnis (enthalten/nicht enthalten) mit dem ausgelesenen
Spool-Pfad und der CUPS-Version in design.md notieren.
- [ ] 1.2 Zweiten Messpunkt gegen die Queue-Defaults aufnehmen: denselben Job
zusätzlich mit explizitem `-o BRColorMode=Vivid` einreichen und die
`UseCIEColor`-Zeile im Spool mit der des ersten Jobs vergleichen.
Verifikation: dokumentierter Unterschied (oder dessen Fehlen) zeigt, ob
per-Job-Optionen im selben Pfad sichtbar werden — belegt, dass die
Messmethode aus 1.1 trägt.
- [ ] 1.3 Queue-Zustand desselben Containers gegengelesen:
`lpoptions -p <queue> -l` (Sternchen) und
`grep '^Default' /etc/cups/ppd/<queue>.ppd`.
Verifikation: die Abweichung aus dem Ausgangsbefund ist entweder
bestätigt (`*False` bei `DefaultTonerSaveMode True`) oder widerlegt;
Ergebnis in design.md festhalten.
- [ ] 1.4 Ergebnis einordnen und die Entscheidung nach Design D3 treffen:
erreicht der Queue-Default den Job (Szenario in specs/… bleibt) oder nicht
(design.md um das Resultat ergänzen, Szenario auf das verifizierte
Verhalten umformulieren, Limitation explizit benennen).
Verifikation: design.md enthält den Messwert und die getroffene
Entscheidung; die betroffenen Tasks aus 2/3 sind entsprechend markiert.
Ohne dieses Ergebnis werden 2.x/3.x nicht abgehakt.
## 2. Automatisierter Nachweis (neue Testschicht)
- [ ] 2.1 `tests/test-queue-defaults.sh` anlegen: baut das Image, startet einen
Container mit `PRINTER_OPTIONS="BRColorMode=Vivid TonerSaveMode=False"`,
wartet auf `ready: CUPS on 631/tcp`, reicht einen Job ohne
`print-quality`/Preset-Attribute ein und liest das letzte Spool-File
(`lpstat -W completed -o` → `/var/spool/cups/d<JobId>-*`).
Verifikation: Skript läuft lokal durch (`bash tests/test-queue-defaults.sh`),
Ausgabe zeigt den Spool-Pfad und die gefundenen PostScript-Zeilen.
- [ ] 2.2 Assertions gemäß Ergebnis aus 1.4 einbauen: `UseCIEColor true` für den
Queue-Default `Vivid` und der Tonerspar-Zustand aus dem verifizierten
Verhalten für `TonerSaveMode=False`; zusätzlich muss die
`UseCIEColor`-Zeile bei explizitem `-o BRColorMode=None` abweichen
(Regressionsschutz). Vergleich nur über `grep -F` auf Zeilen, kein Parsen
von PDF/PS-Struktur.
Verifikation: Skript endet mit Exit 0 und einer PASS-Zeile pro Assertion;
eine absichtlich falsch gesetzte Erwartung lässt es mit Exit ≠ 0 und
Klartextzeile scheitern.
- [ ] 2.3 Lebensdauer/Umgebung absichern: Container immer aufräumen (Trap),
kurze Wiederholung des Spool-Lesens statt Polling, und im Skriptkopf die
verifizierte CUPS-Version notieren.
Verifikation: `podman ps -a` zeigt nach einem Lauf keinen Testcontainer;
zweiter Lauf hintereinander ist grün.
## 3. Spec und README angleichen
- [ ] 3.1 `README.md`, Abschnitt *Environment variables* / `PRINTER_OPTIONS`:
eine Zeile ergänzen, was ein Queue-Default für den Ausdruck bedeutet
(Queue-Default schlägt den PPD-Default, sichtbar im versandten
PostScript), mit Verweis auf das Testskript.
Verifikation: `grep -n 'PRINTER_OPTIONS' README.md` zeigt den neuen Satz;
die genannte Assertion stimmt mit 2.2 überein.
- [ ] 3.2 `entrypoint.sh`-Hinweis prüfen: der bestehende Kommentar bei
`apply_printer_options` (Zeile ~341–345) behauptet, `lpadmin` würde
unbekannte Zuweisungen speichern — mit dem Befund aus 1.x abgleichen und
nur bei Bedarf präzisieren.
Verifikation: `jj diff` zeigt entweder keine Änderung an entrypoint.sh
oder ausschließlich Kommentar/Log-Text, ohne Verhaltensänderung.
## 4. Aktualisierung der Hauptspec (Archive-Zeitpunkt)
- [ ] 4.1 Beim Archivieren die Delta-Spec nach
`openspec/specs/printserver/cups/spec.md` übernehmen und dabei die alte
Fassung des Requirements *Queue defaults are configurable at runtime*
(Zeilen 69–89) durch die neue, job-beobachtbare Fassung ersetzen.
Verifikation: `openspec validate --strict` ohne Findings; die Hauptspec
enthält genau eine Fassung des Requirements.