Skip to content

IEEE register generated

15. Legacy Interop (normative rules, informative mapping)#

15.1 Text-protocol edges as synthetic sessions (normative)#

A hub MAY continue to accept legacy text-protocol ingest (TCode over serial, BLE-NUS, a raw-text socket, an outbound bridge client, a radio dongle chain). Where it does, the hub MUST wrap each active legacy edge in a synthetic session: an internal session object with its own client_kind, capability scoped to that edge's arbiter source only, ownership per §11.4, and a deadman equal to the edge's stream-quiet timeout (hub-configurable within §11.3's clamp).

Effect: legacy clients appear in the session roster, their motion obeys the same deadman, ownership and safety rules as native sessions, and there is no unmonitored path to motion. They receive no Valence frames; the synthesis is entirely hub-side bookkeeping.

TCode passthrough is one of the three sanctioned motion input modes (§9.6-1), named there so it is understood as a planned part of a closed surface rather than a future fourth mode.

15.2 Predecessor-protocol migration (informative)#

The reference implementation's legacy binary UI protocol is Valence's direct ancestor; every concept maps:

Legacy Valence successor
HELLO {proto_ver, cfg_gen} HELLO/WELCOME (§6.2–6.3) — adds identity, tiers, grants, etag, boot_id, readiness
Telemetry frame: fixed header + n samples STREAM bundle (§5.4) on a catalog-declared channel; flag bits become safety and status STATE channels
Periodic status frame hub-status STATE plus power/link STATE channels
CLOCK t0/t1/t2 CLOCK (§7.1) — byte-identical exchange, new frame type id
Interpolator/stats frames device-defined STATE channels
Anomaly event ring an EVENT channel plus a latched summary STATE channel (§9.4 duality)
Command frame + id + JSON INTENT channels (§9.3) — ids become intent_id, JSON becomes schema'd CBOR, op codes become channel ids
Echo frame {id, ok, cfg_gen, JSON} ECHO {intent_id, applied, cfg_gen} — same idempotency ring semantics, now specified
Full-snapshot config fetch retained STATE push (§9.1) — the resync is the connect path now
cfg_gen threading unchanged in meaning; formalized in §4.2 and tightened in both directions
per-client 32-deep idempotency ring unchanged; normative in §9.3
HTTP diagnostic endpoints (log, capabilities, clients, settings) in-band: the log EVENT channel (§16.2), WELCOME identity (§6.3), the roster and admin channels (§12.7), and the settings metamodel (§8.8)

Cutover: a hub serves both protocols during migration on different endpoints or subprotocols; the legacy plane is retired when nothing speaks it. No flag day.