Optional ReadonlychannelCap on the target channel index: ops whose channel index would exceed this are dropped and counted in StageboxAssignPlan.skipped (the box has more channels than the console — the out-of-range guard). Omit for no cap.
Optional ReadonlyclearProduce the clear plan rather than the assign plan. The op list is identical (same consecutive mapping) — the caller applies it in reverse (unpatch each channel).
Optional ReadonlycountHow many of the box's channels to assign. Defaults to the box's whole (already clamped)
width. Asking for MORE than the box declares is refused with
stagebox.assign.exceeds-box-width — a partial-width box must never be handed slots it
does not have, and truncating silently is how that went unnoticed (issue #332).
Optional ReadonlydirectionMap the box's inputs (default) or its outputs.
Optional ReadonlyfabricThe box's 0-based first slot in the 40-slot AUDIO fabric — from
planStageboxFabric, which places every detected box the way the wire packs
them. When given, a placement running past slot 39 is refused with
stagebox.assign.exceeds-audio-fabric rather than planning channels the frame cannot
carry. Omit only when the caller genuinely has no fabric context (an offline fixture).
This is the AUDIO bound. Never pass a head-amp CH here: that space is 48 wide and an
S-1608 legitimately reaches CH 47 (see reac-slots.ts).
Readonlystart1-based first console channel/bus the box maps onto.
Optional ReadonlytargetThe channel kind the box maps onto. Default 'input' for inputs (mic → input
channel) and 'main' for outputs (a bus/main → the box's analog out).
Options for planStageboxAssign.