* I'm going to list my relatively minor concerns in the meantime: - the "Rationale" section is fairly thin on actual rationale - re "Note: Signature.annotations can return multiple annotations, but they must have different names": this is done specifically so that subclasses of `Signature` (e.g. inheriting from `WishboneSignature`) can add more annotations simply by doing `return super().annotations + (...)` in their `annotations` property. this is not clearly explained, and the example should probably show it (the superclass annotations method will return `()` but that is fine) - re "add a ComponentMetadata class, inheriting from Annotation": the inheritance here should be left unspecified, since all of the behavior of the class is specified explicitly anyway - re "For example, an "org.example.serial" annotation may have only one possible schema.": I think we will inevitably end up with a mixture of schema _versions_ and the consumers will eventually have to adapt to that at least a bit - re "Using Annotation.validate() can catch some mismatches, but won't help if one forgets to add a new attribute to the JSON schema.": actually `additionalProperties: false` will catch that - re "it is possible to define multiple Annotation classes with the same .name attribute.": this should be checked by `ComponentMetadata` so that this is always an error - re module name: `lib.annotations.Annotation` is both way too long and overly specific. I'm much more happy with `lib.meta.Annotation`, and we might well end up with more metadata related functionality