proposal to revert color mode default
This commit is contained in:
1 parent
f15ea07f44
commit
f556103f3c
5 files changed
+218
No files matched your search
@@ -0,0 +1,2 @@
|
|||||||
|
schema: spec-driven
|
||||||
|
created: 2026-10-20
|
||||||
@@ -0,0 +1,73 @@
|
|||||||
|
# Design
|
||||||
|
|
||||||
|
## Context
|
||||||
|
|
||||||
|
Commit `tpypxmkn` set `*DefaultBRColorMode: None` in the shipped PPD (plus a
|
||||||
|
"Modified by this repo" comment), documented the rationale in three README
|
||||||
|
sections, and synced a spec requirement *Colour output is saturated by
|
||||||
|
default*. Its own message already conceded that a `VividNoCIE` candidate
|
||||||
|
printed identically to `None`. The decisive new evidence (see proposal.md —
|
||||||
|
Why) is that `None` also prints identically to the **vendor default** `Normal`:
|
||||||
|
before/after prints through the container are indistinguishable, while the
|
||||||
|
same document through the Mac's local driver is clearly more saturated. The
|
||||||
|
washout therefore originates in the server-side PostScript path (no client-side
|
||||||
|
colour management), not in the printer's `UseCIEColor` switch, and no
|
||||||
|
server-side lever is currently known.
|
||||||
|
|
||||||
|
The same commit also added two features that this change does **not** touch:
|
||||||
|
the six `APPrinterPreset` entries in the PPD and the `PRINTER_OPTIONS`
|
||||||
|
mechanism in `entrypoint.sh`.
|
||||||
|
|
||||||
|
## Goals / Non-Goals
|
||||||
|
|
||||||
|
**Goals:**
|
||||||
|
- Restore the vendor `*DefaultBRColorMode: Normal` so the shipped PPD deviates
|
||||||
|
from Brother's original only where the deviation earns its keep (the
|
||||||
|
presets).
|
||||||
|
- Remove every saturation claim from README and spec; document the tested
|
||||||
|
limitation honestly, including the local-driver recommendation.
|
||||||
|
- Encode the "no untested PPD deviations" decision at spec level so the
|
||||||
|
change cannot silently regress.
|
||||||
|
|
||||||
|
**Non-Goals:**
|
||||||
|
- Finding a server-side fix for the saturation gap (needs printer-side
|
||||||
|
investigation and physical test prints).
|
||||||
|
- Changing the `APPrinterPreset` mappings, `PRINTER_OPTIONS`, the entrypoint
|
||||||
|
or the Containerfile.
|
||||||
|
- Re-testing colour modes on the physical printer — the user already performed
|
||||||
|
the decisive comparison.
|
||||||
|
|
||||||
|
## Decisions
|
||||||
|
|
||||||
|
- **D1 — Revert the default, don't merely re-document it.** Both defaults
|
||||||
|
print identically, so reverting carries no regression risk, and it restores
|
||||||
|
the "vendor original plus marked additions" property of the PPD. Keeping
|
||||||
|
`None` with corrected docs would leave a deviation whose stated rationale
|
||||||
|
no longer exists.
|
||||||
|
- **D2 — Spec delta = REMOVED + ADDED.** A bare removal of the disproven
|
||||||
|
requirement would leave no record of the decision. The ADDED requirement
|
||||||
|
(*Vendor colour-mode default is preserved*) is testable (installed-PPD
|
||||||
|
grep, `lpoptions`) and prevents future untested deviations from becoming
|
||||||
|
the default.
|
||||||
|
- **D3 — Rewrite the troubleshooting section, don't patch it.** Symptom stays;
|
||||||
|
the cause section now states the tested facts (`None` vs. vendor default: no
|
||||||
|
difference; `Vivid`: no difference; `BRPrintQuality`/`TonerSaveMode`: no
|
||||||
|
difference) and locates the gap in the conversion path; the remedy becomes
|
||||||
|
"use the local driver for colour-critical output", with the printer-menu
|
||||||
|
hints (Toner Save off, `BRMediaType` matching the media) as the only
|
||||||
|
remaining adjacent levers. The `lpoptions` check now expects `*Normal`.
|
||||||
|
- **D4 — Minimal PPD edit.** Exactly two changes: the value line back to
|
||||||
|
`Normal` and the three-line default comment removed. The presets comment
|
||||||
|
block stays, so `diff` against the vendor original shows only the presets.
|
||||||
|
- **D5 — Split verification.** Container-side checks (installed PPD default,
|
||||||
|
`BRColorMode` option list, override via `PRINTER_OPTIONS` still working) are
|
||||||
|
automated in the integration task; the colour verdict itself is physical and
|
||||||
|
stays with the user, stated as such in the tasks.
|
||||||
|
|
||||||
|
## Risks / Trade-offs
|
||||||
|
|
||||||
|
- Someone later re-attempts a "colour fix" by re-deviating the PPD →
|
||||||
|
mitigated by D2 (spec) and the honest README section (D3).
|
||||||
|
- Readers of the old README may believe the container solved washout → the
|
||||||
|
corrected sections now say explicitly that it does not; the only behavioural
|
||||||
|
change of this revert is a PPD default that prints identically.
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
# Proposal
|
||||||
|
|
||||||
|
## Why
|
||||||
|
|
||||||
|
Commit `tpypxmkn` changed the vendor PPD default `*DefaultBRColorMode:
|
||||||
|
Normal → None` on the theory that the printer's own CIE conversion washes out
|
||||||
|
colours, and the spec recorded the result as `Requirement: Colour output is
|
||||||
|
saturated by default`. A controlled before/after comparison now shows the
|
||||||
|
change had **no visible effect**: prints made after it look the same as prints
|
||||||
|
made before it, and both are clearly less saturated than the same document
|
||||||
|
printed through the Mac's local driver. The commit itself had already noted
|
||||||
|
that a second candidate (`VividNoCIE`) produced no difference from `None`; the
|
||||||
|
new comparison extends that to `None` vs. the vendor default `Normal`. The
|
||||||
|
washout originates in the server-side PostScript path, not in the printer's
|
||||||
|
`UseCIEColor` switch — so the README and the spec currently promise a fix that
|
||||||
|
does not exist, and the PPD carries a "modified by this repo" deviation for no
|
||||||
|
measurable benefit.
|
||||||
|
|
||||||
|
## What Changes
|
||||||
|
|
||||||
|
- **PPD** (`assets/Brother HL-4150CDN/ppd/BR4150_2.PPD`): restore the vendor
|
||||||
|
default `*DefaultBRColorMode: Normal` and remove the comment block that
|
||||||
|
justified the `None` deviation. The six `APPrinterPreset` entries stay —
|
||||||
|
they are a separate feature and unaffected by this finding.
|
||||||
|
- **README**: correct all three places that repeat the claim — the options
|
||||||
|
table (`Normal` is the default again), *Changes to the vendor PPD* (only the
|
||||||
|
presets remain a deviation), and the troubleshooting section *Colours are
|
||||||
|
printed pale / washed out*, rewritten from "fixed via `UseCIEColor` off" to
|
||||||
|
a documented, tested limitation: `BRColorMode`/`UseCIEColor` settings do not
|
||||||
|
measurably change saturation; for colour-critical output use the local
|
||||||
|
driver.
|
||||||
|
- **Spec** (`printserver/cups`): remove `Requirement: Colour output is
|
||||||
|
saturated by default` (its claim is disproven) and add a requirement that
|
||||||
|
the queue preserves the vendor PPD colour-mode default unless explicitly
|
||||||
|
overridden — encoding the revert and preventing another untested deviation.
|
||||||
|
|
||||||
|
## Capabilities
|
||||||
|
|
||||||
|
### New Capabilities
|
||||||
|
|
||||||
|
(none)
|
||||||
|
|
||||||
|
### Modified Capabilities
|
||||||
|
|
||||||
|
- `printserver/cups`: the requirement *Colour output is saturated by default*
|
||||||
|
is removed and replaced by a requirement that the vendor PPD colour-mode
|
||||||
|
default is preserved.
|
||||||
|
|
||||||
|
## Impact
|
||||||
|
|
||||||
|
- `assets/Brother HL-4150CDN/ppd/BR4150_2.PPD` — one value line plus its
|
||||||
|
comment restored to the vendor original.
|
||||||
|
- `README.md` — three sections (options table, vendor-PPD section,
|
||||||
|
colours troubleshooting).
|
||||||
|
- `openspec/specs/printserver/cups/spec.md` — one requirement removed, one
|
||||||
|
added (applied at archive time).
|
||||||
|
- Runtime behaviour: only the queue's `BRColorMode` default changes back
|
||||||
|
(`None` → `Normal`); per-job/per-queue overrides via `PRINTER_OPTIONS` or
|
||||||
|
`-o` are untouched, as are the presets and `PRINTER_OPTIONS` itself. No
|
||||||
|
container, entrypoint or discovery changes. Since the two defaults print
|
||||||
|
identically, no user-visible difference is expected from the revert either.
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
# Spec Delta
|
||||||
|
|
||||||
|
## REMOVED Requirements
|
||||||
|
|
||||||
|
### Requirement: Colour output is saturated by default
|
||||||
|
Disproven by before/after test prints: defaulting to `BRColorMode: None`
|
||||||
|
(`UseCIEColor` off) produced no visible difference to the vendor default, and
|
||||||
|
the saturation gap to the local driver persists (see proposal.md).
|
||||||
|
|
||||||
|
## ADDED Requirements
|
||||||
|
|
||||||
|
### Requirement: Vendor colour-mode default is preserved
|
||||||
|
Unless explicitly overridden — through `PRINTER_OPTIONS` at startup or a
|
||||||
|
per-job option — the queue SHALL use the vendor PPD's colour-mode default
|
||||||
|
(`BRColorMode: Normal`). The shipped PPD SHALL not deviate from the vendor
|
||||||
|
default in this value.
|
||||||
|
|
||||||
|
#### Scenario: Default colour mode equals the vendor PPD default
|
||||||
|
- **WHEN** a colour job is printed without any colour-mode options and `PRINTER_OPTIONS` does not set `BRColorMode`
|
||||||
|
- **THEN** the queue's colour mode is the vendor default `Normal`
|
||||||
|
|
||||||
|
#### Scenario: An explicit override still wins
|
||||||
|
- **WHEN** the container is started with `PRINTER_OPTIONS` containing `BRColorMode=None`
|
||||||
|
- **THEN** the queue default is `None` instead of the vendor default `Normal`
|
||||||
@@ -0,0 +1,58 @@
|
|||||||
|
# Tasks
|
||||||
|
|
||||||
|
## 1. PPD auf Vendor-Default zurücksetzen
|
||||||
|
|
||||||
|
- [ ] 1.1 `assets/Brother HL-4150CDN/ppd/BR4150_2.PPD`: `*DefaultBRColorMode:
|
||||||
|
None` auf den Vendor-Wert `*DefaultBRColorMode: Normal` zurücksetzen und
|
||||||
|
den dreizeiligen „Modified by this repo"-Kommentar über dem Default
|
||||||
|
entfernen. Die sechs `APPrinterPreset`-Einträge und ihr Kommentarblock
|
||||||
|
bleiben unverändert.
|
||||||
|
Verifikation: `grep -n 'DefaultBRColorMode' 'assets/Brother HL-4150CDN/ppd/BR4150_2.PPD'`
|
||||||
|
zeigt genau `*DefaultBRColorMode: Normal` ohne vorangehenden
|
||||||
|
„Modified by this repo"-Kommentar; `grep -c 'APPrinterPreset'` ergibt
|
||||||
|
weiterhin 6; `jj diff` enthält ausschließlich diese Änderungen.
|
||||||
|
|
||||||
|
## 2. README korrigieren
|
||||||
|
|
||||||
|
- [ ] 2.1 Optionstabelle („Colour mode | `BRColorMode`"): Werte auf
|
||||||
|
`Normal` (default), `Vivid`, `None` ändern.
|
||||||
|
Verifikation: `grep -n 'BRColorMode' README.md` zeigt in der Tabelle
|
||||||
|
„Normal (default)" und nirgends mehr „None (default)".
|
||||||
|
- [ ] 2.2 Abschnitt *Changes to the vendor PPD*: den ersten Aufzählungspunkt
|
||||||
|
(Default-Wechsel mit CIE-Begründung) entfernen, die Einleitung auf die
|
||||||
|
verblebende eine Abweichung (Presets) anpassen und den
|
||||||
|
Verweis auf den Troubleshooting-Abschnitt entsprechend korrigieren.
|
||||||
|
Verifikation: Abschnitt listet nur noch die Presets; `grep -n 'DefaultBRColorMode' README.md`
|
||||||
|
findet den Ausdruck nur noch in der Troubleshooting-Sektion (falls dort
|
||||||
|
referenziert).
|
||||||
|
- [ ] 2.3 Troubleshooting-Abschnitt *Colours are printed pale / washed out*
|
||||||
|
umschreiben (Design D3): Symptom bleibt, Ursache nennt die getesteten
|
||||||
|
Fakten (`None` vs. Vendor-Default ohne sichtbaren Unterschied, ebenso
|
||||||
|
`Vivid`, `BRPrintQuality`, `TonerSaveMode`), die Lücke liegt im
|
||||||
|
serverseitigen PostScript-Pfad gegenüber der Farbverwaltung des lokalen
|
||||||
|
Treibers; Abhilfe: farbkritische Ausdrucke über den lokalen Treiber,
|
||||||
|
Drucker-Menü-Hinweise (Toner Save aus, `BRMediaType`) beibehalten;
|
||||||
|
`lpoptions`-Check mit Erwartung `*Normal`; weder „produces saturated
|
||||||
|
output" noch `expect *None` stehen mehr.
|
||||||
|
Verifikation: `grep -n 'saturated output\|expect \*None' README.md`
|
||||||
|
ohne Treffer; die im Abschnitt stehenden Befehle laufen gegen den
|
||||||
|
laufenden Container aus 3.1.
|
||||||
|
|
||||||
|
## 3. Integrationstests (podman, lokal)
|
||||||
|
|
||||||
|
- [ ] 3.1 Image bauen und Container starten: installierte PPD im Image hat
|
||||||
|
`*DefaultBRColorMode: Normal`, `lpoptions -p <queue> -l | grep BRColorMode`
|
||||||
|
listet `Normal`/`Vivid`/`None`, Startup endet mit `ready`.
|
||||||
|
Verifikation: `podman exec printserver grep 'DefaultBRColorMode' /usr/share/cups/model/BR4150_2.PPD`,
|
||||||
|
`podman exec printserver lpoptions -p <queue> -l | grep BRColorMode`,
|
||||||
|
`podman logs printserver | grep 'ready'`.
|
||||||
|
- [ ] 3.2 Override-Pfad: Container mit `PRINTER_OPTIONS="BRColorMode=None"`
|
||||||
|
starten → Queue-Default ist `None`; danach Testcontainer verwerfen.
|
||||||
|
Verifikation: `podman exec printserver lpoptions -p <queue> | grep BRColorMode`
|
||||||
|
enthält `BRColorMode=None`.
|
||||||
|
- [ ] 3.3 Physischer Farbtest (durch Nutzer, kein Automationspfad): Testdruck
|
||||||
|
über die Container-Queue mit Normal-Default — erwartet: identisch zu den
|
||||||
|
Ausdrucken vor/nach tpypxmkn, also weiterhin weniger gesättigt als der
|
||||||
|
lokale Treiber (belegt die Limitation, die README und Design D3
|
||||||
|
dokumentieren).
|
||||||
|
Verifikation: Nutzerbestätigung im Review vor `/opsx-archive`.
|
||||||
Reference in new issue
Block a user