/// A deliberately-wrong CPU reference used to test that the declared law set catches a targeted sabotage.
#[derive(Clone)]
pub struct Defendant {
/// Unique identifier for the defendant.
pub id: &'static str,
/// Target op id this defendant sabotages.
pub target_op_id: &'static str,
/// Human-readable description of the sabotage.
pub description: &'static str,
/// Mutation family exercised by this defendant.
pub class: DefenderClass,
/// The wrong CPU reference function.
pub broken_fn: fn(&[u8]) -> Vec<u8>,
/// Law fingerprints expected to fire when the declared law set is strong enough.
pub fails_laws: &'static [&'static str],
/// Concrete witness pair where the broken CPU reference disagrees with the target CPU reference.
pub expected_witness: &'static [(u32, u32)],
}