Lack of storage gaps in SelectivePausableUpgradable contract for future upgrades
SelectivePausableUpgradable is upgradeable but lacks reserved storage gaps; new variables added in future upgrades may collide with derived-contract state.
Description
The SelectivePausableUpgradable contract is designed to be upgradeable but currently lacks storage gaps. Storage gaps are unused storage slots that can be reserved for future state variables. Without these gaps, any new variables added in future upgrades will collide with existing storage variables in the parent contract.
Impact
The absence of storage gaps in the SelectivePausableUpgradable contract can lead to storage collisions with the parent contract if new state variables are added in future upgrades.
Recommendation
Introduce storage gaps in the SelectivePausableUpgradable contract to reserve space for future state variables. This will ensure that new variables can be added safely without causing storage collisions. The implementation can be updated as follows:
abstract contract SelectivePausableUpgradable is Initializable, ContextUpgradeable {...// Reserved storage slots to allow for layout changes in the future.uint256[50] private __gap;}
Resolution
Acknowledged.

