Needing to import this much feels wrong. I haven't looked at the details of what actually uses it yet, so I may be off base here. But my gut feeling is that we'd be better served with a report object that had methods corresponding to the step and state transitions so we don't have so much bleeding over from one module into another.

Seeing as this is all still very much a work in progress, that may have been your end game anyway and just haven't applied that level of polish yet. In which case, consider me +1 for that approach.