Parsed config layers (each a {realtime:{allowedAgents:[…]}} blob or null), base first.
Optionaldynamic: RealtimeAllowedAgent[]Optional runtime/channel-registered targets, accumulated last (highest precedence).
The deduped, accumulated allowed-agent list (empty when none configured).
UNION-accumulates
realtime.allowedAgentsacross cascade layers (base first) plus optional dynamic additions. Deduped byagentId(case/whitespace-insensitive); later sources win per field (a later layer that only setsdisclosurekeeps an earlier layer'slabel).This is the deliberate exception to the array-replace merge rule — the lead co-agent should accumulate colleagues as layers add them, not have the top layer clobber the set.