The AttackerBountyClaimed event should track actual bounty transfers so off-chain indexers can rely on it.
The emit sits outside the if (payout > 0) block, so a bounty call that transfers nothing still emits AttackerBountyClaimed(attacker, 0, ...), and claimsStarted is not set on that branch — the event and the state transition are inconsistent.
Likelihood:
Occurs on a bounty call that resolves to payout == 0 (practically reachable only via a defective stake token, since the pool balance equals the entitlement at flag time).
Impact:
Off-chain indexers may record a spurious zero-value bounty-claim event; the event is emitted without the corresponding state change. Cosmetic; no funds affected.
test/fuzz/ConfidencePool.qa.t.sol asserts the event args on a real full claim; the residual is that the
same emit also runs on the payout == 0 path:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.