Normal behavior: The pool's scope (a flat address[] of BattleChain accounts) is meant to be a fixed, pool-local commitment. Per docs/DESIGN.md §8, the sponsor may update scope only while the registry is in pre-attack staging (NOT_DEPLOYED / NEW_DEPLOYMENT), and the scope "locks permanently on the first interaction observing any other state"; once resolved, "the published scope is the binding audit trail."
Specific issue: setPoolScope gates only on the scopeLocked flag, never on the pool's resolution outcome. scopeLocked is only ever set as a side effect of observing the registry in a non-pre-attack state. A pool that reaches expiry while the registry never left pre-attack staging resolves to EXPIRED via the else branch of claimExpired without ever setting scopeLocked = true. The sponsor can therefore call setPoolScope(...) after the pool is fully resolved and stakers have already been paid, silently rewriting the on-chain scope commitment.
Likelihood:
Occurs whenever a pool reaches its expiry while the underlying agreement's registry state has stayed in NOT_DEPLOYED / NEW_DEPLOYMENT for the pool's entire lifetime (an agreement that is staged but never activated before the pool's deadline — a normal, non-adversarial lifecycle).
The SURVIVED and CORRUPTED resolution paths both require a terminal registry state, which is itself a non-pre-attack observation that sets scopeLocked = true; only the EXPIRED fallback leaves scopeLocked unset, so this is the one resolution path where the gap is reachable.
Impact:
The sponsor can retroactively replace the published scope after the pool has fully resolved and stakers have claimed, so the "binding audit trail" documented in §8 no longer reflects what the pool committed to insure at the time stakers deposited.
Any party relying on the immutability of a resolved pool's scope history (indexers, downstream integrators, other pools curated for the same agreement) can be misled, undermining the integrity of the on-chain confidence-mechanism commitment. No stake or bonus funds are at risk.
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.