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,
}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.