Clamp a whole allocation to the appliance: channels to caps.inputChannels, each bus to
its per-type max, then — if caps.pathPool is set — trim so Σ(paths) ≤ pathPool, keeping
the highest-priority paths (input channels + main preserved, then mix-minus / aux /
fx-return / group, matrix shed first). DCA is clamped to its per-type max but never drawn
from the pool. Pure; the Setup form and the server loader both call it so a hand- or
AI-authored allocation can never exceed the appliance.
Clamp a whole allocation to the appliance: channels to
caps.inputChannels, each bus to its per-type max, then — ifcaps.pathPoolis set — trim so Σ(paths) ≤ pathPool, keeping the highest-priority paths (input channels + main preserved, then mix-minus / aux / fx-return / group, matrix shed first). DCA is clamped to its per-type max but never drawn from the pool. Pure; the Setup form and the server loader both call it so a hand- or AI-authored allocation can never exceed the appliance.