The LIVE context a per-instance ownership condition reads — the computed law's input. One
field per fact the console can already answer about a channel, each a plain boolean so both
sides of the wire can supply it from what they hold:
the SERVER answers FactOwnershipContext.sensCapable from the /headAmp row's
gainDb capability READABILITY (console-resources.ts's hasSensGain — readability, not
writability, per PR #558: a box that stepped out refuses the write without moving who the
fact belongs to);
the SURFACE answers it from the channel's advertised sens feature
(channel.features, re-advertised on every re-patch) — the SAME adapter declaration after
one hop over the wire, which is why the two cannot disagree without the adapter disagreeing
with itself.
The LIVE context a per-instance ownership condition reads — the computed law's input. One field per fact the console can already answer about a channel, each a plain boolean so both sides of the wire can supply it from what they hold:
/headAmprow'sgainDbcapability READABILITY (console-resources.ts'shasSensGain— readability, not writability, per PR #558: a box that stepped out refuses the write without moving who the fact belongs to);sensfeature (channel.features, re-advertised on every re-patch) — the SAME adapter declaration after one hop over the wire, which is why the two cannot disagree without the adapter disagreeing with itself.