Kind() is a durable public identifier. Keep it stable. Implement Versioned with
Version() and Upcast() when deployed payloads evolve, and set Envelope.SchemaVersion
explicitly. Matching versions use JSON decoding; other nonzero versions use Upcast.
Without Versioned, missing fields may silently decode to zero values.