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.
Appeals are being carefully reviewed by our judges.
The contest is complete and the rewards are being distributed.