Polarity Veto Signal Scorer
Vetoes a merge when two propositions share an entity but assert opposite polarity about it — one states something, the other negates it ("works at Acme" vs "no longer works at Acme" / "left Acme").
This is a veto-only signal: it never contributes a positive score to the blend. When it fires it returns a zero-weight veto so CollectorEdgeAggregator flips vetoed = true without dragging the blended aggregateScore down — a vetoed edge's score should still reflect the real corroborating signals; the edge is excluded from merging by vetoed, not by its score. When it doesn't fire, it abstains (there's nothing else for this signal to say).
Limits worth knowing:
It only fires when the mention sets actually overlap; propositions with no mentions never trigger it, since there's no shared-subject evidence.
It is a lexical negation-cue scan, not a semantic model — it can misfire on cues used non-negatively ("left a message") and miss negation phrased without a cue word. It's a guard rail for opposite-polarity merges, not an NLI classifier.