Optional ReadonlyaddressThe changeable facts about where this box is, keyed by name (mac, and later ip/
serial/card) — matched on by nothing, display-only. Carried alongside key
because the key is opaque: a surface wanting to SHOW the MAC reads it from here, never by
parsing the key.
Optional ReadonlyboxThe box's registry identity — the stable boxId the server minted when this box was
adopted (virtual-stagebox spec §3). Absent for a box that has never enrolled.
This is what addresses the box's rows (/stagebox/{boxId}), and what a patch names instead
of a socket. It is published on the device precisely so a surface never has to build an
address out of a MAC: a MAC survives a segment swap while meaning a different box, which is
how an S-0808's input 8 came to feed the channel that belonged to an S-1608 (2026-08-21).
Optional ReadonlycontradictionsWhere something WRITTEN DOWN about this box disagrees with what the box reports — overlaid by
the server (overlayStageboxContradictions) from the reac adapter settings and
the persistent registry. Absent (the normal case) means everything agrees, or nothing was
written down to disagree.
It rides the device rather than a channel of its own because the CARD is where it has to be seen, and the card renders this object. A second delivery path for one fact is how a disagreement ends up surfaced everywhere except where the operator is looking — which is the whole failure being fixed: the truth was on the node all evening and nothing compared it to the configuration.
Optional ReadonlyfirmwareThe box's system firmware, D.DDD (StageboxNodeView.reacBoxFirmware) — a
RECORDING of what the box last announced, never a claim. Absent exactly when the box has
not answered the identity page, or is not on the wire right now.
ReadonlyidStable device id (reac:stagebox, or reac:stagebox:<key> for a discriminated box).
Optional ReadonlyinputsThe box's inputs (its mic preamps → the desk), if a capture node is present.
Optional ReadonlykeyThe box's recognition key (StageboxKey), built from mac by stageboxKeyed. This is what every registry lookup (name, identity, presence) is keyed on — never the bare MAC, which is a wire address a third transport could coincide with. Absent exactly when mac is: a box that has declared no address has not been recognised, and there is nothing to build a key from.
Optional ReadonlylinkThe box's live link state (reac.link-state): 'probing', 'connected', or
'no-box'. Drives the stagebox card's link badge + the session-manifest presence check
(issue #154). Absent when reac-pw does not publish it (older reac-pw, non-REAC).
Optional ReadonlymacThe box's MAC (reac.discovery.devices owned peer) — how it is identified ON THE WIRE.
Absent when reac-pw publishes no discovery snapshot, or no single box is owned yet.
A MAC is an address, not an identity: it changes the moment dead metal is replaced. What a patch and a name hang off is the boxId.
Optional ReadonlymodelThe box model (reac.box-model, e.g. S-4000S) — recorded in the session manifest.
ReadonlynameHuman label, e.g. "REAC stagebox (40 in / 40 out)".
Optional ReadonlyoperatorThe raw operator name the registry restored onto this box (Build A), set by
stageboxWithOperatorName alongside the composed name. Distinct from name
(which folds in the in/out counts): this is the bare label the operator typed, so a surface
wanting a SHORT band label (the patchbay.devices crosspoint header) shows the operator's
name instead of the Roland model. Absent on a box the operator has not named — that surface
then falls back to the model / generic label as before.
Optional ReadonlyoutputsThe box's outputs (the desk → its analog outs), if a playback node is present.
Optional ReadonlypresenceWhere this box stands right now — core's one hardware rule (HardwarePresence), overlaid by the console (overlayStageboxPresence) from what the registry has enrolled and what the wire reports.
Published, not left to each surface to infer. Before this field a disconnected box and a
connected one were the same record with a different free-form linkState string, so the
patchbay read "the S-0808 is still there" while none of its channels could pass audio (rig,
2026-08-05). A surface that has to derive presence itself derives it three different ways in
three components, and the first one that gets it wrong is a desk lying about what is on stage.
absent is the state with consequences: every control backed by this box is DISABLED showing
the last value it held, and every channel patched to it is marked. The FIELD being absent
means the producer does not compute presence (an older server, the offline mock) — and
unknown disables nothing.
ReadonlyprotocolAlways 'reac' for now.
Optional ReadonlyreacThe box's REAC protocol version, D.DDD (StageboxNodeView.reacBoxReacVersion)
— a different number from firmware. Same absence rule.
Optional ReadonlysegmentThe REAC segment this box is heard on right now (reac.segment) — the interface
(untagged NIC or VLAN sub-interface) reac-pw currently carries it on
(2026-07-03-reac-stagebox-autodetect.md amendment 2026-09-11). Derived on every graph
read, same as everything else here; absent exactly when the box itself has nothing to
report (an older reac-pw, or the box is gone — a device with no segment is not on any wire
right now).
Optional ReadonlywidthThe box channel width (reac.box-width) — the expected I/O count in the manifest.
A REAC stagebox grouped as one logical device: its capture ports become the desk's inputs, its playback ports the desk's outputs. Plain serialisable data — it doubles as the wire shape the server broadcasts and the UI renders.