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