The client describes what it expects from the API (requests and responses). The provider checks, in its own CI, that it still meets those expectations.
Result: a breaking change is caught before deployment, without spinning up all the services together.