#[non_exhaustive]pub struct FixProposal {
pub rule: RuleId,
pub source: FixSource,
pub span: Span,
pub original: Box<str>,
pub replacement: Box<str>,
pub confidence: Confidence,
pub migration_ref: Option<&'static str>,
}Expand description
A proposed fix for a diagnostic violation.
Pure data — deterministic, timestamp-free, classifier-free, safe to snapshot
in tests. A FixProposal is a suggestion until Engine::fix promotes it
to an AppliedFix when confidence.combined() >= configuration.confidence_threshold.
§Phase D: Multi-axis confidence
confidence is a Confidence record rather than a scalar. Strict-path
rules construct it via Confidence::strict; the Phase D decoder
constructs a full record with recognition, runner_up_ratio, and
feature contributions. The engine threshold gate uses
Confidence::combined so a 0.95-recognition × 0.9-rule fix that
previously would have been scalar-0.855 still gates the same way.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.rule: RuleIdThe rule that generated this proposal.
source: FixSourceProvenance: built-in rule, corrections map, migration table, or decoder posterior.
span: SpanByte range in original source to replace.
original: Box<str>The bytes currently occupying span.
replacement: Box<str>Replacement text.
confidence: ConfidenceMulti-axis confidence for this fix.
migration_ref: Option<&'static str>Reference to the CAPCO rule or migration document justifying this fix.
Implementations§
Source§impl FixProposal
impl FixProposal
Sourcepub fn new(
rule: RuleId,
source: FixSource,
span: Span,
original: impl Into<Box<str>>,
replacement: impl Into<Box<str>>,
confidence: Confidence,
migration_ref: Option<&'static str>,
) -> Self
pub fn new( rule: RuleId, source: FixSource, span: Span, original: impl Into<Box<str>>, replacement: impl Into<Box<str>>, confidence: Confidence, migration_ref: Option<&'static str>, ) -> Self
Create a new fix proposal with invariant checks.
§Panics
Panics if confidence fails Confidence::validate — i.e.,
any individual axis is out of range or NaN / non-finite. The
per-axis check is the load-bearing one: combined() = recognition × rule can land in [0.0, 1.0] for individually-
invalid axes (e.g., recognition = 2.0, rule = 0.4 ⇒
combined = 0.8), so validating only the product would let an
invalid record through. The check runs in release builds (not
just debug) because NaN silently fails every threshold
comparison and INFINITY silently bypasses every threshold —
both are correctness-impacting bugs in release.
Trait Implementations§
Source§impl Clone for FixProposal
impl Clone for FixProposal
Source§fn clone(&self) -> FixProposal
fn clone(&self) -> FixProposal
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more