sweepUnclaimedBonus moves the whole bonus out of the pool but is the only value-moving function that does not latch claimsStarted. A moderator who flags SURVIVED, lets the bonus sweep, and then uses the supported pre-claim window to correct the outcome to good-faith CORRUPTED snapshots a zero totalBonus, so the named whitehat's bounty entitlement is zero. The bonus has already been transferred to recoveryAddress and is no longer enforceably claimable through the pool.
Every value-moving settlement function latches claimsStarted, which closes the moderator's pre-claim re-flag window (DESIGN.md §4) once funds have moved. Good-faith CORRUPTED sets bountyEntitlement from the totalBonus snapshot taken at flag time.
sweepUnclaimedBonus deliberately does not set claimsStarted, so a dust donation cannot grief the window, but it also zeroes totalBonus. On a pool that holds bonus and no stake, the moderator can flag SURVIVED, sweep the bonus to recoveryAddress, then re-flag good-faith CORRUPTED. The correction snapshots totalBonus == 0, so bountyEntitlement == 0 and claimAttackerBounty reverts. Tracked funds therefore leave under one outcome while that outcome remains mutable.
Likelihood:
Arises on a bonus-only pool (no stake) whose Agreement is genuinely corrupted by a good-faith whitehat, when the moderator first resolves SURVIVED and the bonus is swept before the correction. The sweep is permissionless, so anyone can trigger it in the window between the two flags.
Requires a moderator outcome correction, which is an intended but uncommon path.
Likelihood is Low.
Impact:
The whitehat loses the entire enforceable sponsor-funded bounty after a valid good-faith corruption. Although the sponsor-controlled recoveryAddress can voluntarily forward the tokens, the corrected outcome gives the whitehat no on-chain claim to them.
Bounded by the bonus of a single bonus-only pool; no staker principal is involved.
Impact is Medium.
poc/SweepUnclaimedBonusFinalityPoc.t.sol passes with:
Latch claimsStarted whenever sweepUnclaimedBonus removes tracked bonus from the pool. Donation-only surplus sweeps (where no tracked bonus moves) stay exempt, so an unsolicited transfer still cannot grief the correction window.
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.