feat(sim+engine): lock alteration calibration + fix psychedelic dark grade
Tuning the look by eye in the simulator (design §8) surfaced that the dark mood pole rendered a full-frame hue-rotate(-200deg) — rock orange, trees purple: the disorienting look rejected in session 0008, not the peaceful POC dark_frame. Replace it with darken + slight desaturate on the video filter plus a multiply-blended deep-blue wash (#tint, below the SVG HUD so the overlay stays legible). Dark now reads cool/somber with natural greens, like the approved POC look; light/left/right unchanged and confirmed peaceful. With full tilt now tasteful on every axis, LOCK DEFAULT_CALIBRATION to unity gains + linear variant map as a deliberate by-eye choice (not placeholders), closing the open session-0006 knob->strength decision: knobs run 0=off..4=max, equal Dark/Light = identity, the 5 notches map 1:1 to the 5 discrete Right bakes. Guard the locked constants with test_default_calibration_is_locked. Resolves design §8 open questions (calibration curve shape; grade-vs-overlay ordering) and records the dark-grade fix. Full suite 193 passed / 2 skipped. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -273,12 +273,26 @@ calibration. The re-bake is a later offline-pipeline task.
|
||||
|
||||
## 8. Open questions (for the plan, not blockers)
|
||||
|
||||
- **Calibration curve shape** — the panel exposes the params; the final
|
||||
`DEFAULT_CALIBRATION` values are settled by eye, not fixed here.
|
||||
- **Grade vs. Left overlay interaction** — with a runtime overlay the grade need *not*
|
||||
tint the HUD (unlike the baked path); decide in the renderer whether the Left overlay
|
||||
sits above or below the grade. Default: **above** (HUD stays legible regardless of
|
||||
mood). Revisit by eye.
|
||||
- **Calibration curve shape** — **RESOLVED (session 0010, by eye).**
|
||||
`DEFAULT_CALIBRATION` is **locked** to unity gains + a linear variant map
|
||||
(`mood_gain=1.0`, `overlay_gain=1.0`, `right_variant_map=(0,1,2,3,4)`), as a
|
||||
deliberate choice: with the dark-grade fix below, full knob is peaceful on
|
||||
every axis (POC + sim), so full tilt = full look and the 5 notches map 1:1 to
|
||||
the 5 discrete Right bakes. This also closes the **session-0006** convention
|
||||
question — knobs run 0=off..4=max, equal Dark/Light = identity; no
|
||||
"centered at 2 = no push." Guarded by `test_default_calibration_is_locked`.
|
||||
- **Grade vs. Left overlay interaction** — **RESOLVED: overlay above the grade.**
|
||||
The simulator composites the Left HUD (SVG) above the mood grade and the cool
|
||||
tint, so the HUD stays legible regardless of mood. The Pi renderer should do
|
||||
the same.
|
||||
- **Dark-pole grade look** — **FIXED (session 0010).** The first by-eye pass found
|
||||
the sim's dark grade used a full-frame `hue-rotate(-200deg)`, which turned the
|
||||
rock orange and trees purple — the disorienting look rejected in 0008, not the
|
||||
peaceful POC `dark_frame`. Replaced with darken + slight desaturate on the video
|
||||
filter plus a `multiply`-blended deep-blue wash (`#tint`) that lifts shadows
|
||||
toward blue while preserving natural greens. The Pi renderer (later slice) will
|
||||
do proper grading; this matches the approved POC dark look closely enough to tune
|
||||
by eye in the sim.
|
||||
- **Crossfade timing in the browser** — a simple opacity crossfade is enough for tuning;
|
||||
the real timing engine is a later slice.
|
||||
- **Placeholder fidelity** — how close the strength-1–3 placeholders should look to real
|
||||
|
||||
Reference in New Issue
Block a user