The motivation here is to push further with our "correct by construction" tenet: provide ways to encode more of the intention when creating keyrings ("I want all my data keys to be generated by THIS keyring") and therefore catch more misconfigurations at initialization time instead of runtime ("so raise an error if I provide it as a non-generating keyring in a multi-keyring, since by definition that must always fail")
Tightly coupled with decryption contracts (#131), since what we really want is a way to introspect on the nature of the contracts written or fulfilled by a keyring, to make conclusions about whether a given keyring can ever succeed.
Extracted as an independent concern from #114
The motivation here is to push further with our "correct by construction" tenet: provide ways to encode more of the intention when creating keyrings ("I want all my data keys to be generated by THIS keyring") and therefore catch more misconfigurations at initialization time instead of runtime ("so raise an error if I provide it as a non-generating keyring in a multi-keyring, since by definition that must always fail")
Tightly coupled with decryption contracts (#131), since what we really want is a way to introspect on the nature of the contracts written or fulfilled by a keyring, to make conclusions about whether a given keyring can ever succeed.