pub struct Technique {
pub id: &'static str,
pub name: &'static str,
pub oracle_class: OracleClass,
pub vector: Vector,
pub strength: NormativeStrength,
pub normalization_weight: Option<f32>,
pub inverted_signal_weight: Option<f32>,
pub method_relevant: bool,
pub parser_relevant: bool,
pub applicability: fn(&ResponseSurface, &ResponseSurface) -> Applicability,
pub contradiction_surface: SignalSurface,
}Expand description
Why these probes were generated and what normative basis justifies the expected differential.
Set by a strategy at probe generation time, carried through execution unchanged, and consumed by the analyzer for confidence calibration and evidence labeling.
Signal extraction is unconditional — the analyzer runs all extractors on every
DifferentialSet. Technique metadata is for attribution and confidence calibration, not for
gating which signals are extracted.
Fields§
§id: &'static strMachine-readable identifier, e.g. "if-none-match" or "get-200-404".
name: &'static strHuman-readable name, e.g. "If-None-Match conditional request".
oracle_class: OracleClassOracle class this technique probes.
vector: VectorElicitation method that produced this differential.
strength: NormativeStrengthRFC mandate level for the expected behavior.
normalization_weight: Option<f32>Weight applied when baseline and probe return the same status code (SameStatus path).
Encodes how strongly the absence of a status differential implies response normalization.
Some(w) produces StrategyOutcome::Contradictory(result, w).
None produces StrategyOutcome::NoSignal. Vectors where same-status carries
no evidential meaning (CacheProbing, ErrorMessageGranularity, RedirectDiff) use None.
inverted_signal_weight: Option<f32>Weight applied when a differential is observed in the opposite direction to the oracle hypothesis (e.g. probe rate-limited when baseline was not, or probe-only rate-limit headers).
None means the strategy has no inverted-signal semantics.
method_relevant: boolTrue when method-level rejection (405) is oracle-relevant for this technique.
Generally false — only techniques specifically probing method handling set this.
parser_relevant: boolTrue when parser/validator errors (400/422) are oracle-relevant.
Set by techniques like uniqueness, state_transition, content_type where the
parser response IS the oracle. False for techniques whose layer is downstream of parsing
(cache validators, content negotiation, etc.) — for those, same 400/422 means the
request was rejected before the oracle-bearing code path.
applicability: fn(&ResponseSurface, &ResponseSurface) -> ApplicabilityReturns confidence that the technique’s applicability marker is observed in the response pair.
Default for techniques with no specific marker is always_applicable. Techniques whose
signal depends on a specific response feature (e.g. If-None-Match requires ETag)
implement this to return Missing when the marker is absent — blocking phantom
Contradictory outcomes from techniques whose mutation never reached the oracle layer.
contradiction_surface: SignalSurfacePrimary surface this technique’s contradiction is evaluated on.
The surface_relevance modifier consults this to detect mis-surfaced contradictions —
when SameStatus fires on a Status-surface technique but the body or headers show a
significant differential, the contradiction is mis-surfaced and downgrades to Inapplicable.