A failed call is only the obvious case
When two services cannot connect, we know where to begin: credentials, routes, schemas, timeouts. Those are real integration problems. Fixing them can restore service quickly, and a clear interface is worth the effort.
Yet an interface can return 200 OK while the larger system does something wrong. It might deliver another person’s private memory, render an old plan as a current fact, or ask the governor to approve words the consumer has already generated and displayed. The request succeeded; the intended boundary did not.
The quiet failure can look successful
Suppose an outside game asks PHS for a persona’s reply. The consumer sends the right persona ID but omits the recent exchange and the player’s permission to use it. PHS may produce a grammatical answer to a thinner situation. Every API call can pass while the encounter loses its context or exceeds its audience.
The Governor Consumer Contract design therefore separates who orchestrates the activity from who generates the governed reply and persists its consequences. Its concern is what crosses that seam, when, and under whose authority. A historical PHS contract-gap document also recorded ways that a registry definition and a handler could diverge; that was a dated warning, not a live failure report.
Pause here: What would you inspect after a successful response that nevertheless told the wrong person a private fact?
Test meaning as well as transport
Good tests should follow an event end to end. Did the correct owner’s record arrive? Was its status preserved? Was a refusal or uncertainty displayed honestly? Did a denied action remain denied after retries? A contract-validation plan can check these questions, but the plan itself is not a passing test result.
If the transport works and the meaning fails, the repair may involve data, timing, policy or the consumer’s assumptions. Calling every such fault ‘an API problem’ is like blaming the envelope after reading the wrong letter.
My answer: Integration includes transport, shared meaning, authority, temporal context and verified consequences. API health is necessary, but end-to-end behavior decides whether the systems worked together.