You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
engine: delete verdict.conf, not wire it to the floor
A verdict carried a confidence that nothing read. Five sites wrote it and
none consumed it: the only readers of a stored verdict are same_verdict(),
comparing target, kind and origin, and evidence_resolve(), reading kind and
target. It looked like the floor gate for curation, and a rule author would
reasonably have believed it was one.
No such gate belongs there, for the reason that already makes constraint
rules sound. resolve_evidence() gates observations and coverings before
curate_to_fixpoint() runs and again after every round; a verdict_fn is
handed the evidence set and nothing else; and all seven curation rules skip
invalid observations. In a floored run there is no sub-floor evidence for a
curation rule to see, so every verdict it emits is derived purely from
at-or-above-floor inputs by construction. The two windows do not share
rulings either, the caller clearing n_verdicts between them. Gating
coverings closed the last hole in that chain.
The field was also incoherent. Most writers set it to the confidence of the
observation being invalidated, firmware_memmap_holes to that of the
evidence justifying the retraction, and only the second reading would make
a floor test mean anything -- so wiring it up as written would have
produced arbitrary results. A future curation kind wanting a strength value
would have had to redefine it across every writer regardless, which is no
cheaper than adding a defined field then.
derived_from and lineage_count stay, but not because they work: three of
the four rules set derived_from[0] to the target's own id, duplicating
observation_id, and only x86_64_vmalloc_vmemmap_invariant records the other
side of the comparison that justified the drop. Nothing consumes them, so
the gap is inert. They are kept as a data field with an obvious meaning
rather than a mechanism something could mistake for enforcing soundness,
and the comment now states what a future consumer has to fix first. origin
stays because dedup compares it.
0 commit comments