//! Drift watch: catch schema and behavioral drift on a watched MCP server.
//!
//! Schema drift is the new dependency hell: a third-party server renames a
//! parameter or starts returning nothing, and the agent confidently papers
//! over it. `mcptest diff` already classifies schema drift between two
//! `tools/list` snapshots; this module adds the second half a scheduled
//! watch needs: golden behavioral canaries. A [`DriftState`] captures the tool
//! catalog plus the responses to a set of canary calls; [`compare()`] diffs a
//! current capture against a saved baseline and classifies both schema drift
//! (via the catalog diff) and behavioral drift (via value-tolerant response
//! fingerprints), so a renamed param or an empty-result regression fails the
//! run with a classified diff.
//!
//! The engine is deterministic and offline. The OSS surface ships the diff
//! engine, the canary capture, and a file/exit-code gate; scheduling and
//! hosted alerting stay in the enterprise tier (ADR-019).

pub mod compare;
pub mod state;

pub use compare::{compare, report_envelope, DriftReport};
pub use state::{CanarySample, DriftState};
