Small thing: Obviously, between BuildPhysicsStep and ExportPhysicsStep, there is cached state. An employee on our team accidentally ran a system in-between those two, which changed entity archetypes. This lead to a strange bug where entities would swap translations. Thus, the existence of the physics world makes the Physics system not entirely "stateless", although obviously it is stateless in regards to the overall ECS flow. Recommended actionable: 1. Add a caveat inside your stateless documentation. 2. Create a sub-group inside the SimulationSystemGroup to handle the 3 physics steps. This will prevent new systems from having any chance of accidentally sitting between the three.