Expand a TargetSelection into N resolved members. The CDB is loaded
once; selectors and positionals union into a record-index set (plus literals),
de-duped, ordered by record index. Empty/unknown selection → empty: true
with a warning, never an error. A decrypt/parse failure throws (the fan-out's
outer envelope reports it).
When no CDB exists and none was requested explicitly, the expansion proceeds
over an empty registry — so a pure-literal selection (api r1 r2 …) still
fans out (mirroring single-target resolveCdb, which treats a <router> as a
literal host when no CDB is present). An explicit --cdb-file that is missing
still throws.
Expand a TargetSelection into N resolved members. The CDB is loaded once; selectors and positionals union into a record-index set (plus literals), de-duped, ordered by record index. Empty/unknown selection →
empty: truewith a warning, never an error. A decrypt/parse failure throws (the fan-out's outer envelope reports it).When no CDB exists and none was requested explicitly, the expansion proceeds over an empty registry — so a pure-literal selection (
api r1 r2 …) still fans out (mirroring single-targetresolveCdb, which treats a<router>as a literal host when no CDB is present). An explicit--cdb-filethat is missing still throws.