Contract tests owned by the consumer, not by us

Our tests asserting what our API returns, which proves nothing about what a consumer depends on.

the arrangement:

  the consumer writes a test file describing the fields
  and shapes they read. it lives in their repository.
  they publish it as a fixture on release.

  our pipeline pulls the fixtures for all four named
  consumers and runs them against a live instance.

  a change that breaks one fails our build with the
  consumer's name in the message.

Owning the tests ourselves means asserting what we intended, and the whole risk is the gap between that and what somebody actually reads. Four consumers is small enough for this to be a shared directory and a scheduled fetch rather than a broker — the mechanism matters less than the fixtures being authored by the people who would be broken.