Right now, all the interesting logic in test-runner.go is in one big switch statement in RunStep. This makes it basically impossible for compound steps to call through to individual steps. For example, fullCommit could in principle call through to commit, handlePendingCommit, handleCommit, and joinGroup, but instead it replicates all the logic of those methods.