Skip to content

Rig-gated — the OSC bindings move to /rlx/v1

Not iGPU-gated and not runnable at the desk either. It needs the lighting rig — Arena, the TouchDesigner patch and whatever show file the set runs from. Extracted from Plan 0152 at that plan’s close (2026-09-05) so the plan could close on its four completed dev phases without waiting on a rig session, exactly as every item above was.

The break is silent, and this check is its only detector. ADR-0164 moved the OSC address root from /lmv/v1 to /rlx/v1 in one clean break — no transition period, no dual-emit. OSC has no negotiation and no error channel, so a binding left on the old root simply stops firing: the fixture holds its last value, nothing in the app, the console or the protocol reports it, and from front of house that is indistinguishable from a fixture that happens not to be moving. Nothing in CI, and no synthetic run, can see the binding half.

  • Re-point every OSC binding from /lmv/v1/… to /rlx/v1/…. Fourteen addresses; the table in Configuration is the roster. Only the root changes — no payload, argument type tag, address suffix, vocabulary or send cadence moved, so /v1 stays and a binding that re-points its root and changes nothing else is correct. Report each of the fourteen driving what it drove before, confirmed against a playing track with ritmolux --osc <host:port>. A “looks fine” reading does not discharge this — a missed binding is invisible until the moment the show needs it. Keep the old show file until every address is confirmed: a build from before Plan 0152 and a build after it cannot drive the same bindings, and /v1 deliberately does not distinguish them on the wire. (Plan 0152 Phase 5, extracted at that plan’s close 2026-09-05.)

What is already known, and what it does not cover. A synthetic acceptance run on 2026-09-05 took the app side of the break: the shipped sink aimed at a local UDP receiver, a throwaway decoder self-tested against three known-good encoded messages first, 1450 sets over ~24 s against a live loopback track. It establishes that all fourteen addresses publish under /rlx/v1, none on the old root and none outside it; that every argument type tag matches ADR-0144; that every datagram is a multiple of 4 bytes; and that n was equal across all fourteen, so no partial set was sent. The reading is in the plan’s ## Implementation log. It reaches everything on the app side of the socket and nothing on the binding side, which is the half this item exists for.

Built from a8ce055 at version 0.115.0. This site tracks main and is not versioned per release.