Implement an unserializable step role

Why do we restrict it to running in the planner process? Does it simplify managing dependency that depend on the unserializable role?