Retval

- add some spec annotations
- change
  - return value of `step/2`
  - how `try_then_commit/2` behaves