A held panic latch, as the pure composition model sees it. scope: null means no panic
is held (the neutral value panicEngaged always reads false against). mains and
allMutesInputs mirror the session's declared panic targets (PanicTargetsJson in
session.ts) — this module does not read the session; the caller resolves them once and
passes the resolved values in, exactly as it already resolves a mute group's membership.
A held panic latch, as the pure composition model sees it.
scope: nullmeans no panic is held (the neutral value panicEngaged always readsfalseagainst).mainsandallMutesInputsmirror the session's declared panic targets (PanicTargetsJsoninsession.ts) — this module does not read the session; the caller resolves them once and passes the resolved values in, exactly as it already resolves a mute group's membership.