The usage scope validation considers usage bits at higher granularity than what the user specifies, as described in #514 (comment)
We need to specify carefully what the "shadow" usage bits are (i.e. STORAGE_READ), and how they relate to the user-visible bits.