Skip to main content

soothfast_spec/probe/
mod.rs

1//! Live-response data quality: does the running server actually populate
2//! what its spec declares?
3//!
4//! Spec reconciliation ([`crate::reconcile`]) proves the *surface* — every
5//! operation exists on both sides. Nothing there notices an endpoint that
6//! answers 200 with half its fields silently null, which is exactly how
7//! serde key mismatches and hand-copied structs fail. This module closes
8//! that gap with four checks over one probe pass:
9//!
10//! - **population** — which response fields carry data, diffed against a
11//!   committed baseline so a field going null fails the gate
12//!   ([`population`], [`baseline`])
13//! - **coverage** — every field the spec declares, so a field that never
14//!   populates at all is locked as visible debt instead of staying
15//!   invisible to the learned baseline ([`coverage`])
16//! - **shape** — the response validated structurally against the spec's
17//!   own response schema ([`shape`])
18//! - **assertions** — per-probe sanity bounds on values ([`assert`])
19//!
20//! The engine here is pure: it takes JSON in and produces findings. The
21//! CLI half (manifest parsing, server launch, HTTP) lives in
22//! `cargo-soothfast`.
23
24pub mod assert;
25pub mod baseline;
26pub mod coverage;
27pub mod population;
28pub mod shape;