A minor note: while the third line is syntactically a valid descriptor as per Bitcoin Core, it isn’t semantically. For example, wsh(sortedmulti(2,keyA/*,keyB/*))#checksum
describes the list [wsh(sortedmulti(2,keyA/0,keyB/0)), wsh(sortedmulti(2,keyA/1,keyB/1))], wsh(sortedmulti(2,keyA/2,keyB/2)), ...]
, which is very different from what it represents in the context of BSMS. Therefore, calling that a descriptor might generate confusion, as it has already happened in the discussion.
The idea of separating the valid derivation paths from the output descriptors is great, as it works well for any multisig scenario, and as far as I understand it seamlessly generalizes to miniscript policies).
Therefore, I think it might be worth finding a new term (for example descriptor template; or wallet descriptor) and have a short paragraph in the introduction to explain how the descriptor template is expanded with the possible derivation paths to obtain the full list of output script descriptors, which would harmonize the naming with Core.
Such descriptor template, as it currently stands, would be exactly like a descriptor, except it redefines the meaning of the *
symbol.