Thanks for everyone's feedback. I've pushed out a few changes:
1- Regular slice instead of timestamp-keyed map. That didn't make sense in retrospect.
2- Better benchmarks.
3- Non-exported current state and transitions. Mutexed getters to avoid concurrency issues.
4- Variadic rule parameters.
5- Better example.
Thank you. The focus was on simplicity and handling less complex scenarios. In my current projects the business logic lends itself to sitting outside the FSM/State Trooper. The logic dictates the transitions at arms length to the FSM. The FSM does not carry on any particular business logic, it just enforces the transition rules from one state to any number of possible states - hence why I've included the metadata aspect to embed info about the reason for a transition.
Re the visualization, I think that would be cool. I might give that a shot.