Appearance
Forward compatibility
SOM's compatibility policy lets a 1.x producer add optional payload fields and enum values, and requires consumers to tolerate them. The bus is strict on the envelope and generous on the payload:
- A message that says
som_version: "1.0.0"claims to conform to 1.0, and is held to the 1.0 schema in full. - A message from a newer 1.x producer (for example
1.1.0) may carry payload fields and enum values that 1.0 doesn't know. The bus accepts it and lists them undertolerated, with the same rule ids a1.0.0message would be refused with:<family>.additionalPropertiesand<family>.enum. - The envelope is never relaxed, whatever the version.
- A message from before 1.0 is refused (
som_version.pre_1_0), and so is one from 2.0 or later (som_version.unsupported_major). - A
message_typewith no 1.0 schema is accepted with the envelope checked and the payload passed through (payload.unvalidated).
Consumers must ignore message types and extensions they don't recognise, and must not branch on som_version.