# 036 — The night the surface learned to speak (2026-08-29)

**Goal:** play rose_rouge on the just-arrived LCXL3, then design its visual
language live, PLN's hands on the hardware the whole way.

**What shipped** (branch `claude/lcxl3-surface`, `fa22bb8..ac8ed14`):
the driver met a live SuperCollider and needed FOUR defects fixed before one
fader passed (aconnect direction trap, port-name identity ×2, add-only
reconcile); the v3 visual language (role hue × value lightness, DJF
blue→breathing-green-zero→red at the track's BPM); driver-owned truths
(offset-64 relative values, row-E latches, paint reasserted every 2 s); OLED
context in PLN's own words ("Le Delay rose!!!", "HANDS IN THE AIR"); the
34-display-targets discovery that ended the overlay war (log 035); midiviz,
the wordless purple glyph-rain monitor (Opus worker, 999923c); the Ardour
saga — a webcam squatting the control input, then Ardour 9's silent
`config=` load gate, bindings wiped and restored twice (log-worthy on its
own); RIG UP reordered around the SuperDirt-owns-MIDI-first constraint; the
nine-press edge-button census.

**The theme, three times over:** identity bugs. A port's NAME is not the
port (aconnect client vs port name, twice in our code, once in
midi-autoconnect, once independently rediscovered by the midiviz worker), and
a device's saved identity is not the device (Ardour's control input bound to
"C922 Pro Stream Webcam"). Identity is the numeric address; names are
decoration.

**BC invariant, stated and kept:** the corpus speaks v2 forever. Everything
v3 lives in one process; unplug it and the classic LCXL still plays every
track — PLN: "we need to be BC always."
