claimExpired() allows any caller — even one with zero stake — to mechanically auto-resolve the pool post-expiry. The function sets claimsStarted = true unconditionally on all resolution branches (line 664), which permanently blocks the moderator's flagOutcome re-flag window.
A non-staker (or bot) calling claimExpired immediately at expiry locks in the auto-determined outcome before the moderator can review it.
Likelihood:
This occurs every time claimExpired is the first post-expiry call. MEV bots or monitoring scripts calling claimExpired at the exact expiry block are common in DeFi.
Impact:
The moderator loses the ability to correct a mechanically-determined outcome that may not reflect the true scope assessment.
No direct fund loss — the auto-resolution follows the registry state faithfully.
This is documented as intended behavior (DESIGN.md §4, §13). The defense-in-depth finality is uniform across all resolution branches. If the moderator needs guaranteed priority, consider adding a brief moderator-only grace window before permissionless resolution:
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.