refactor: [closure] add closure interface

- add basic test runner
- fix infinite loop bug with revision
- add closure interface