Normally, a good-faith CORRUPTED resolution pays the named whitehat the entire pool (principal + bonus) as bounty (DESIGN.md §12), and resolution finality is protected by the invariant "claimsStarted == true ⇒ value has moved, so a corrective re-flag is only safe until then" (§4) — every value-moving entrypoint latches claimsStarted.
sweepUnclaimedBonus deliberately does not latch claimsStarted (to defeat 1-wei donation griefing), but in the riskWindowStart == 0 branch it also performs a genuine, irreversible value movement: it exports the entire bonus to recoveryAddress and zeroes totalBonus. Because finality is never latched, the outcome stays re-flaggable after the bonus has left the pool; a subsequent good-faith CORRUPTED re-flag re-snapshots the bounty against a totalBonus that has already been drained to 0, so the bounty silently excludes the bonus.
Likelihood:
Occurs whenever the registry reaches terminal CORRUPTED without the pool ever observing an active-risk state (no pokeRiskWindow and no gated call during the UNDER_ATTACK/PROMOTION_REQUESTED interval), leaving riskWindowStart == 0.
Occurs when the moderator first flags SURVIVED on that CORRUPTED registry — an explicitly valid "out-of-scope breach" judgement that does not latch claimsStarted — and later uses the documented pre-claim re-flag (§4) to correct to good-faith CORRUPTED.
Occurs on the interleaving permissionless sweepUnclaimedBonus call, which the recoveryAddress beneficiary (the bonus sponsor) is directly incentivized to make; no malicious moderator and no special privilege are required.
Impact:
The named whitehat is underpaid by exactly the bonus amount: the bounty is re-snapshotted as principal-only, violating the DESIGN §12 guarantee that the whole pool is the bounty.
The entire bonus is permanently stranded at recoveryAddress (the sponsor) with no recovery path, and the resolution-finality invariant (§4) is broken because value moved while the outcome remained re-flaggable.
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.