Until the introduction of Unconstrained in o1js, we had to inject the state record and state services behind the scenes to the prover. This is a ambiguous side effect making the circuits prone to hidden errors.
As a refactoring, we should use this new primitive to use the starting states as unconstrained parameters to the protocol circuits, where a new state service gets created with those values and pushed onto the state service stack.