"I'm going to list my relatively..." <- > <@whitequark:matrix.org> 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 > 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 should the version appear somewhere in the name ? > 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 right > 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 agreed > 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 agreed