docs/DESIGN.md §4 grounds the re-flag correction window closing on the premise that finality is tied to value movement: "Once value has left the contract, a corrective re-flag cannot be honored... claimsStarted is a value-movement finality latch." In claimExpired, a non-staker with zero eligible stake sets claimsStarted = true during the mechanical auto-resolution (lines 549 / 575), then hits the soft-success early return at userEligible == 0 (line 584). No tokens move, yet claimsStarted is latched and every subsequent moderator flagOutcome reverts OutcomeAlreadySet. The stated "value-movement" premise is therefore not strictly true.
The practical harm is bounded: the branch claimExpired selects is fully registry-determined (§13) — PRODUCTION→SURVIVED, terminal-CORRUPTED-within-grace→revert (protecting the moderator's CORRUPTED window), else→EXPIRED. Because registry states are monotonic and terminal, there is no reachable outcome the lock-out denies the moderator that the current registry state would still legitimately permit. This is a spec-vs-behavior deviation, not an exploitable fund path.
Likelihood: Low — anyone can call claimExpired at expiry, but no economically-different outcome is actually denied.
Impact: Low — no principal or bonus impact; only the theoretical loss of a moderator re-flag that the registry state would not permit anyway.
A user with zero stake calls claimExpired after expiry. No funds are transferred, but claimsStarted becomes true, permanently blocking the moderator from calling flagOutcome.
Prefer a documentation fix: update DESIGN §4/§13 to state that mechanical auto-resolution (not only a value-moving claim) also closes the re-flag window — the auto-CORRUPTED/EXPIRED branches latch claimsStarted deliberately (lines 549/575) as an anti-override lock, so removing it is undesirable. If aligning code to the current wording is preferred, latch finality only alongside an actual payout:
(but retain the explicit claimsStarted = true in the auto-CORRUPTED/EXPIRED branches, which is the intended lock).
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.