parlov-elicit 0.5.0

Elicitation engine: strategy selection and probe plan generation for parlov.
Documentation
//! Existence oracle strategies.
//!
//! Each submodule groups strategies by detection vector.
//! `default_chain_registry` combines all per-vector registries.

pub mod cache_probing;
pub mod error_message_granularity;
pub mod redirect_diff;
pub mod status_code_diff;

/// Builds the full producer/consumer `ChainRegistry` for all existence vectors.
///
/// Combines cache-probing (7 edges), redirect-diff (8 edges), and
/// status-code-diff (6 edges) registries — 21 edges total.
#[must_use]
pub fn default_chain_registry() -> crate::chain::ChainRegistry {
    let mut reg = cache_probing::cp_chain_registry();
    reg.extend(redirect_diff::rd_chain_registry());
    reg.extend(status_code_diff::scd_chain_registry());
    reg
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn default_chain_registry_has_twenty_one_edges() {
        assert_eq!(default_chain_registry().len(), 21);
    }
}