GovernedSafeDiamondCutLib Constants
GOVERNED_SAFE_DIAMOND_CUT_STORAGE_SLOT
keccak256(abi.encode(uint256(keccak256("lattice.storage.GovernedSafeDiamondCut")) - 1)) & ~bytes32(uint256(0xff)).
Verify with: cast index-erc7201 "lattice.storage.GovernedSafeDiamondCut".
bytes32 constant GOVERNED_SAFE_DIAMOND_CUT_STORAGE_SLOT =
0x67b04bedb2ce49892ef6d6cc51adf679ddefc544b7aca2da8ae73f02694ff300;GOVERNED_SAFE_DIAMOND_CUT_ERC165_STORAGE_LOCATION
ERC-165 storage location (same across all Lattice/diamond-lib modules).
keccak256(abi.encode(uint256(keccak256("diamond.lib.storage.ERC165")) - 1)) & ~bytes32(uint256(0xff)).
bytes32 constant GOVERNED_SAFE_DIAMOND_CUT_ERC165_STORAGE_LOCATION =
0x9ca7f3e2e2bfb15fdf072b85dde92837cddacee6cf2f6b38cd06c9457c1c4200;ERC165_MAP_IGOVERNEDSAFEDIAMONDCUT_SLOT
0xacb1aeb6 is type(IGovernedSafeDiamondCut).interfaceId. Unlike SafeDiamondCut, this module
does NOT serve the canonical cut selector 0x1f931c1c (every cut is delayed via the timelock),
so its scheduling surface (scheduleCut/executeCut/cancelCut + views) is a genuinely NEW
interface that must mint its own ERC-165 map slot:
keccak256(abi.encode(bytes4(0xacb1aeb6), 0x9ca7f3e2e2bfb15fdf072b85dde92837cddacee6cf2f6b38cd06c9457c1c4200))
= 0xe71618ea5c7977b34866901ace6d6c6585c16253798f12024e30133e7fb7b675.
Verify with: cast keccak $(cast abi-encode 'f(bytes4,bytes32)' 0xacb1aeb6 0x9ca7f3e2e2bfb15fdf072b85dde92837cddacee6cf2f6b38cd06c9457c1c4200).
bytes32 constant ERC165_MAP_IGOVERNEDSAFEDIAMONDCUT_SLOT =
0xe71618ea5c7977b34866901ace6d6c6585c16253798f12024e30133e7fb7b675;