My dependency graph was wrong. I needed the install step of my release step to depend on the test step to prevent the install step from running unless my test step succeeded.
Bad:
step_release -> install
step_release -> step_test
Good:
step_release -> install -> step_test
Another time I could really use a Visual Build Graph