I'm doing some go implementation work, and a couple notes on the specs:
- might be worth noting that the overall meta object can not be empty (zero bytes). this can be inferred by the required
$typefield and being CBOR, but doesn't hurt to say it separately - the meta
$typestring must exist, but it seems like it can be empty string? should it be required that it is non-empty-string? - does it really need to be a "MUST" to verify that the varints are canonical for readers, or could it be "SHOULD"? I think it is nice to use stdlib implementations for basic stuff like this, and at least the golang one does not do this check, so need to re-implement from scratch or find an additional dependency
- the semantics of a pair with both empty key and empty value are kind of weird, should that be disallowed? I guess that constraint might be unexpected in some situations
I've got a golang implementation here: https://tangled.org/bnewbold.net/cobalt/blob/main/star/doc.go