AntFleet

Disagreement · 1e8fb4a1-anthropic-6

StreamableFeesLocker.distributeFees state inconsistency when position.isUnlocked is set in memory but written to storage; releasing fees after unlock is impossible because position record stays

solo Opus
repo a7cc2ed7·PR #1·reviewed 1 week ago

Opus finding

StreamableFeesLocker.distributeFees state inconsistency when position.isUnlocked is set in memory but written to storage; releasing fees after unlock is impossible because position record stays

lowbugmedium
  • src/StreamableFeesLocker.sol:208-225
After unlock, the position is transferred away but `positions[tokenId]` retains data with `isUnlocked=true`. `releaseFees` only checks `position.startDate != 0` (not `isUnlocked`), so beneficiaries can still call releaseFees and the contract will attempt to call `positionManager.getPoolAndPositionInfo(tokenId)` — fine, beneficiaries can still claim accrued residual fees recorded in `beneficiariesClaims`. This is intentional. Not a bug.

Recommendation

N/A

Other reviewer

The other reviewer flagged nothing in this file/line range.

Why this didn't post

This finding didn't meet AntFleet's unanimous agreement threshold. Both frontier models review every PR independently; only findings they both flag with the same severity and category are posted to the PR. This one fell through.

read the methodology →