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