claimExpired() grants a full MODERATOR_CORRUPTED_GRACE (180 days) before forcing bad-faith CORRUPTED only when riskWindowStart != 0. When riskWindowStart == 0, the same CORRUPTED registry state falls straight into the else branch and resolves EXPIRED immediately at expiry, with no grace period at all.
Impact: Any staker can call claimExpired() the instant the pool expires and permanently lock in EXPIRED via the claimsStarted latch, before the moderator has any chance to flag the correct in-scope CORRUPTED outcome — collapsing what should be a 180-day moderator review window down to zero. This is already acknowledged and accepted as an intended conservative default in DESIGN.md §5 ("the no-risk-window CORRUPTED race"), so this is submitted to surface the specific 0-day vs. 180-day asymmetry, not as a fund-loss claim.
Likelihood: Low
Requires the registry to transition directly to CORRUPTED without anyone ever observing an active-risk state first (no pokeRiskWindow() call, no pool interaction during UNDER_ATTACK/PROMOTION_REQUESTED) — a narrow precondition on top of an already rare event.
Requires a caller to act at or after the exact expiry timestamp, before the moderator flags the correct outcome.
Impact: Medium
Reduces the moderator's documented 180-day review window to zero for the same underlying CORRUPTED event, purely based on whether a risk window happened to be observed.
Lets any single caller foreclose a correct in-scope CORRUPTED resolution by being first, with no privilege required.
The PoC forces the registry to CORRUPTED without any prior risk-window observation, then warps to exactly expiry and calls claimExpired() in the same block — showing the pool resolves EXPIRED with zero grace elapsed, versus the 180-day wait required when a risk window was observed.
This applies the same 180-day grace to the unobserved-risk CORRUPTED case as the observed-risk case already gets, so the moderator's review window no longer depends on whether a risk window happened to be sealed.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
View preliminary resultsAppeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.