Capability-aware physical booths
The virtual booth and physical adapters share typed command and event contracts. They do not promise identical observability, control coverage, or timing precision.
An adapter advertises readable fields, writable controls, supported ranges, scheduling precision, observation freshness, and confirmation behavior per device and operating mode. Reject unsupported commands before dispatch and show the reason in the UI.
Keep desired, dispatched, and observed state separate. A fader movement seen on a device may arrive without an actor identity. Record its physical source and apply the configured human-takeover policy rather than attributing it to the most recent AI command.
A conceptual booth port offers a snapshot, capability query, command submission returning a receipt, and an ordered event subscription. The engine owns arbitration and sequence assignment. A future Rust trait must resolve asynchronous receipts, backpressure, and object safety before becoming a public API.
Integration ladder
- Offline packet/MIDI fixtures and parser tests.
- Passive hardware observation with firmware and operating mode recorded.
- Shadow actors whose proposals cannot reach output adapters.
- Explicitly enabled control of individually verified capabilities.
PRO DJ LINK visibility does not establish arbitrary remote transport or mixer control. MIDI input mappings do not establish device output mappings. Validate each direction separately.
Compatibility matrix tracks evidence. Ownership defines control arbitration.