Message versioning, and the field added five years ago

An additive-only message policy, and an optional field from 2021 that every consumer now requires.

{
  "type": "order.placed",
  "version": 2,
  "order_id": "01H8...",
  "channel": "web"        // added 2021 as optional
}

// five years on, all four consumers read it and two of
// them fail without it. it is required in practice and
// optional in the schema.

An optional field that everybody depends on is a required field with no enforcement, and the schema is now describing a compatibility that no longer exists. Making it required is a version bump for a field that has been present in every message for five years, which is a formality and is the only way the schema stays true.