What this module does not do¶
Each is a decision rather than a gap, and each is recorded in spec 0001.
It does not own a server¶
go/transport provides HTTP, gRPC and gateway servers with
TLS, body limits, security headers, health endpoints and go/controls lifecycle. This module
supplies handlers; schema/serve mounts them.
A registry that reimplemented those would be a second answer to a question the estate has answered once, and the second answer is always the one that falls behind.
It does not check compatibility¶
Deliberately, and with a shaped gap so the check lands as an addition.
It does not own the URN grammar¶
That lives in go/cloudevents/urn and is
cited here. The two modules are coupled by the format and by nothing else, and writing it in one
place is what stops the first divergence producing a message whose schema nobody can resolve.
The grammar is also not tested here, for the same reason. Two test suites over two copies would both stay green while the copies drifted.
It is not content-addressed¶
A hash would make "changed" unrepresentable, which is stronger than refusing to change it. It would also make every identifier unreadable in a log line, and the identifier is read far more often than it is verified. See Why a published URN cannot change.
It does not generate or lint schemas¶
Other tools do those. A registry that also generated code would be two products, and the second one would be worse than the tool that only does that.
And it is not obviously needed yet¶
Worth being honest about. A registry earns its keep when producers and consumers deploy independently and schemas evolve underneath each other; today the estate's services largely publish to themselves.
It exists now because the decisions it constrains — the URN, the immutability refusal — are
permanent from the moment a message carries one, and those decisions were being made in
go/cloudevents regardless. The implementation could have waited for a second consumer. The
format could not.
A dataschema can point at a wiki page in the meantime and become a registry URN later, without the
message shape changing.