Skip to main content

Entry

Struct Entry 

Source
pub struct Entry {
    pub tool: String,
    pub stratum: String,
    pub verdict: Option<String>,
    pub note: String,
    pub k1: Option<bool>,
    pub k2: Option<bool>,
    pub k3: Option<bool>,
    pub include_reason: Option<String>,
}
Expand description

One entry in a verdict file: a sampled tool, its drawn stratum, and — once reviewed — a verdict plus an optional note. verdict: None is the “pending” state; every command that touches the file treats absence of a verdict as “not yet reviewed”, never as an implicit skip.

Fields§

§tool: String

The tool name as found on PATH (or supplied via --tools).

§stratum: String

The parse-status label this tool had when it was drawn — recorded at draw time, not recomputed later, so a tool whose parse changes between sample and review (a grammar fix landing mid-session) still reports against the stratum it was actually drawn from.

§verdict: Option<String>

"correct" / "incomplete" / "wrong" / "skip", or absent while pending. Stored as a plain string (not an enum) so a hand-edited verdict file with an unrecognized word fails loudly at the point of use (parse_verdict_word) rather than silently at deserialization.

§note: String

The reviewer’s free-text note. Becomes an [xfail] reason for a wrong/incomplete fixture (xtask::audit::cmd_fixtures).

§k1: Option<bool>

K1 pre-tag: the GCC-family single-dash-long-option parser defect (short.is_some() && long.is_none() && value_name.is_some()). Computed once, at sample time, by xtask::audit::k1_signature; displayed and overridden here (k1=true/k1=false anywhere in a verdict line or note, via extract_tag_override) exactly the same way regardless of whether the reviewing tool is xtask audit review or mandible --review. Some(true) when the tool’s tree contains at least one matching flag, None when it contains none — never Some(false), since there is no “confirmed not K1” state worth asserting for a tool that never exhibited the shape at all.

§k2: Option<bool>

K2 pre-tag: the existence detector’s own tokenizer gap (xtask::existence’s line_start_words only considers each line’s first token, so a multi-column or comma-separated applet/subcommand list reports every column after the first as “fabricated” even though it’s right there in the raw text). Computed once, at sample time, by xtask::audit::k2_signature. Some(true) when every subcommand-kind existence fabrication for this tool is explained by the known tokenizer gap, Some(false) when at least one is not (worth a real look), None when the tool has no subcommand-kind fabrications to judge at all.

§k3: Option<bool>

K3 pre-tag: “subcommand help was never fetched, so this node is a bare stub.” Two distinct causes produce it, both computed once at sample time by xtask::audit::k3_signature from the same single-pass snapshot K1/K2 use, and both should tag:

  • the attestation gate refused to probe a subcommand because its name came from a native/cobra artifact rather than a recognized --help heading (git-lfs: 36 nodes, 34 suspects, status suspicious, every subcommand a cobra stub — and, unlike an ordinary un-recursed node that just hasn’t been fetched yet, this shape is structurally permanent: the gate refuses it live, in the TUI, exactly as it does here);
  • the tool’s subcommands simply carry no flags because their own help was never fetched (openssl: 151 subcommands, zero flags anywhere in the extracted tree, root included).

Without this, a reviewer re-derives the same “still empty, still not this tool’s fault” verdict once per subcommand. Some(true) when the tool’s snapshot shows at least one of the two shapes, None otherwise — the same “no Some(false)” convention as K1, since there is nothing to assert-not for a tool that shows neither shape.

§include_reason: Option<String>

Some(reason) when this entry was force-included in the sample outside the normal stratified draw (see xtask::audit::cmd_sample’s force_include parameter). None for an entry drawn by the ordinary stratified sample.

Implementations§

Source§

impl Entry

Source

pub fn missing_required_note(&self) -> bool

True when this entry’s note is obligatory but missing or blank — a wrong/incomplete verdict with nothing recorded about what was wrong. See verdict_requires_note.

Source

pub fn needs_attention(&self) -> bool

True when a review session should still stop at this entry: no verdict yet, or a verdict whose obligatory note never got written.

Trait Implementations§

Source§

impl Clone for Entry

Source§

fn clone(&self) -> Entry

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Entry

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'de> Deserialize<'de> for Entry

Source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
Source§

impl Serialize for Entry

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

§

impl Freeze for Entry

§

impl RefUnwindSafe for Entry

§

impl Send for Entry

§

impl Sync for Entry

§

impl Unpin for Entry

§

impl UnsafeUnpin for Entry

§

impl UnwindSafe for Entry

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.