pub struct LlmFunnel {
pub evidence: u64,
pub proposed: u64,
pub cited: u64,
pub dropped_uncited: u64,
pub dropped_target: u64,
pub grounded: u64,
pub ground_verdicts: u64,
pub ground_call_failed: bool,
pub kept: u64,
pub stored: u64,
pub advisory_thin_evidence: u64,
pub dropped_near_duplicate: u64,
}Expand description
The DISCOVER pipeline’s attrition, counted.
“The model contributed nothing” has at least five distinct causes, and they call for opposite responses: an empty bundle is a capture problem, a model that abstained may need better evidence or a better prompt, drafts dying at GROUND suggest fabrication, drafts dying at VERIFY suggest they were vague, and drafts dying at the floor were merely unconfident. Without this they are indistinguishable from the outside — every one of them renders as an empty ledger and reads like a clean null. That ambiguity cost a six-cell measurement run before it was noticed.
Fields§
§evidence: u64Grains offered to the model as evidence. Zero means nothing to reflect on.
proposed: u64Drafts the model returned.
cited: u64Survived the cite-check and target-class filter.
dropped_uncited: u64Dropped for citing a hash the bundle does not hold. Its own counter because the fix is specific: models copy long hex badly, and that is a different problem from one aiming at a surface it may not touch.
dropped_target: u64Dropped for targeting a class the vocabulary may not reach — a prompt, host config, or its own grader.
grounded: u64Survived GROUND — their premises were found in the cited evidence.
ground_verdicts: u64Verdicts GROUND actually returned. grounded = 0 with verdicts > 0 is
the gate refusing every draft; grounded = 0 with verdicts = 0 is a
grader that answered with nothing usable, which is a backend problem
wearing a gate’s clothes.
ground_call_failed: boolThe GROUND call itself failed — no response at all. The engine fail-softs here by design, so without this the run looks like a model that had nothing to say.
kept: u64Survived VERIFY’s adversarial pass.
stored: u64Cleared the confidence floor and reached the queue.
advisory_thin_evidence: u64Kept, but demoted to advisory for citing fewer distinct evidence
grains than Policy::min_evidence. Omitted when zero, so a run under
the default policy reads exactly as before.
dropped_near_duplicate: u64Kept, but dropped before the queue for restating a live lesson on the
same entity in other words (Policy::near_duplicate = suppress). Its
own counter beside dropped_uncited and dropped_target, so “the
model contributed nothing” keeps its distinct causes. Omitted when
zero.