git reset --hard prints 'HEAD is now at …' to stdout, which polluted read -r previous_sha target_sha < <(git_fetch_and_checkout) and wrote invalid values into .evo-deploy/state.json. Redirect git stdout to stderr inside git_fetch_and_checkout and rollback; validate SHAs before write_state and rollback. Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: cynarAI <cynarAI@users.noreply.github.com>