setPoolScope() does not persist the post-staging scope lockThe pool documentation states that scope becomes immutable once the registry first leaves pre-attack staging (NOT_DEPLOYED / NEW_DEPLOYMENT).
setPoolScope() calls _observePoolState() before checking scopeLocked.
When the registry is already in ATTACK_REQUESTED, _observePoolState() sets scopeLocked = true, but the function then immediately reverts ScopePostLockImmutable(). That revert rolls back the lock write as well.
As a result, the pool can observe a post-staging state without permanently latching scopeLocked.
If the upstream registry later rewinds to NOT_DEPLOYED through a normal lifecycle transition such as rejecting an attack request, the sponsor can still mutate scope even though the pool already observed ATTACK_REQUESTED once.
This breaks the documented immutability boundary for the pool scope. Sponsors can change the covered account set after stakers have already deposited and after the pool has already seen a post-staging state once.
The impact is weaker than a direct fund-loss bug because users still retain the normal pre-risk withdrawal path after the rewind, but the pool's advertised one-way scope commitment is not actually one-way.
PoC flow:
The owner attempts setPoolScope() while the registry is already in ATTACK_REQUESTED.
_observePoolState() sets scopeLocked = true.
The function reverts, so the write is rolled back.
The registry later returns to NOT_DEPLOYED.
The owner can successfully call setPoolScope() and expand the scope even though the pool already observed a post-staging state.
Do not rely on a lock written inside a transaction that is expected to revert as the durable source of truth for scope immutability.
One fix is to gate scope updates on a direct registry-state check before any reverting observation path:
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.