the channel's kind — the contract's kinds column is consulted through
featureMatrixOf, the ONE place kind appears
what the patched input declares and can do right now; undefined for a channel
with no head stage at all (an unpatched input, a bus, a DCA)
Optionalsource: SourceWidthInstance
what the patch says about this channel's width; undefined on a console with no
crosspoint ledger — the word is then carried but never claimed KNOWN, which is the honest
answer for a desk that cannot see its own patch
the live capability state, with writable ⊆ features and known ⊆ features
THE derivation: the contract's kind-level truth intersected with the patched instance's.
Runs over CHANNEL_FEATURES — the contract's own vocabulary — so a word added to the fact table is carried here with no edit, and a word removed cannot linger. Two narrowings are per-instance, and both follow the PATCH rather than the kind:
an internal spec: "only phantom / pad / gain are box-owned; EQ, gate, comp, polarity, trim, fader, pan, sends are desk DSP and work with no box attached");GAIN is narrowed through the CONTRACT rather than by a rule of its own:
ownerOf('gain', …)answerspeer: headAmpexactly when the patched input carries an analog SENS, and the fact then rides the/headAmprow'sgainDbfield — so its writability, its known-ness and its travel are that field's. When no preamp claims it, gain is the desk's digital stage: always writable, always known, and travelling the desk's own declared span. One expression, both branches; a consumer cannot draw the knob against one owner while the write lands on another.