Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
0578d2a
fix(TimelockPolicy): enforce timelock for ERC-1271 signatures
leekt Feb 2, 2026
b2f5abc
fix(TimelockPolicy): invalidate stale proposals on reinstall
leekt Feb 2, 2026
14cb24f
Fix dead proposal creation code
leekt Feb 2, 2026
2f88be1
test: add BTT tests for TimelockEpochValidation
leekt Feb 2, 2026
d6c7871
test: add BTT tests for TimelockSignaturePolicy
leekt Feb 2, 2026
baa9fa6
test: add comprehensive BTT tests for TOB-KERNEL-1 fix
leekt Feb 2, 2026
ca7137b
update
leekt Feb 2, 2026
97ded5e
fix: timelockpolicy does not accept erc1271
leekt Feb 2, 2026
27ec844
Merge pull request #37 from zerodevapp/fix/tob-kernel-2
leekt Feb 6, 2026
c2381b0
Merge pull request #42 from zerodevapp/fix/tob-kernel-20
leekt Feb 6, 2026
37da3aa
fix(TimelockPolicy): add upper bounds for delay and expirationPeriod
leekt Feb 6, 2026
ecb7630
fix(TimelockPolicy): correct ERC-7579 no-op detection encoding
leekt Feb 6, 2026
d4c3302
Merge pull request #48 from zerodevapp/fix/tob-kernel-18
leekt Feb 6, 2026
6d864e5
Merge pull request #47 from zerodevapp/fix/tob-kernel-5
leekt Feb 6, 2026
df553e7
fix(TimelockPolicy): add grace period to prevent race conditions
leekt Feb 2, 2026
7709731
test: add BTT tests for TimelockCancellationRace
leekt Feb 2, 2026
17f78f7
fix(TimelockPolicy): make permissionless proposals inert until sessio…
leekt Feb 9, 2026
4b66879
feat(TimelockPolicy): add proposer to ProposalCreated event
leekt Feb 9, 2026
17d950e
fix(TimelockPolicy): remove createProposal, proposals only via no-op …
leekt Feb 9, 2026
28ee229
fix(TimelockPolicy): remove dead code and add callDataLength overflow…
leekt Feb 9, 2026
3705223
Merge pull request #44 from zerodevapp/fix/tob-kernel-21
leekt Feb 9, 2026
351b99e
Merge fix/tob-kernel-21 (grace period) into fix/tob-kernel-1
leekt Feb 9, 2026
4a83f3f
fix(TimelockPolicy): add mode check and fix executeUserOp offset in n…
leekt Feb 9, 2026
810bc68
fix(TimelockPolicy): correct ERC-7579 no-op detection encoding
leekt Feb 9, 2026
d0bbbb1
test: add EntryPoint integration tests for TimelockPolicy
leekt Feb 11, 2026
52dac36
Merge pull request #49 from zerodevapp/fix/delete_createProposal
leekt Feb 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
272 changes: 91 additions & 181 deletions src/policies/TimelockPolicy.sol

Large diffs are not rendered by default.

279 changes: 247 additions & 32 deletions test/TimelockPolicy.t.sol

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion test/base/PolicyTestBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ abstract contract PolicyTestBase is ModuleTestBase {
assertFalse(validationResult == 0);
}

function testPolicyCheckSignaturePolicySuccess() public payable {
function testPolicyCheckSignaturePolicySuccess() public payable virtual {
IPolicy policyModule = IPolicy(address(module));
vm.startPrank(WALLET);
policyModule.onInstall(abi.encodePacked(policyId(), installData()));
Expand Down
2 changes: 1 addition & 1 deletion test/base/StatelessValidatorTestBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ abstract contract StatelessValidatorTestBase is ModuleTestBase {
assertTrue(result);
}

function testStatelessValidatorSuccess() external {
function testStatelessValidatorSuccess() external virtual {
IStatelessValidator validatorModule = IStatelessValidator(address(module));

bytes32 message = keccak256(abi.encodePacked("TEST_MESSAGE"));
Expand Down
2 changes: 1 addition & 1 deletion test/base/StatelessValidatorWithSenderTestBase.sol
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ abstract contract StatelessValidatorWithSenderTestBase is ModuleTestBase {
assertTrue(result);
}

function testStatelessValidatorWithSenderSuccess() external {
function testStatelessValidatorWithSenderSuccess() external virtual {
IStatelessValidatorWithSender validatorModule = IStatelessValidatorWithSender(address(module));

bytes32 message = keccak256(abi.encodePacked("TEST_MESSAGE"));
Expand Down
Loading