I can't reproduce this anymore on 28.1 either:
> (defun +ivy--always-return-zero-exit-code-a (fn &rest args)
> (let ((process-exit-status-orig
> (symbol-function 'process-exit-status)))
> (cl-letf* (((symbol-function 'process-exit-status)
> (lambda (_proc)
> (let ((code (funcall process-exit-status-orig _proc)))
> (if (/= code 0) 0 code)))))
> (apply fn args))))
> (defun my-test-exit-status-advised ()
> (my-test-exit-status))
> (defun my-test-exit-status ()
> (let ((proc (start-process "my-test-exit-status" nil "false")))
> (while (not (eq (process-status proc) 'exit))
> (sit-for 0.05))
> (process-exit-status proc)))
> (advice-add #'my-test-exit-status-advised :around #'+ivy--always-return-zero-exit-code-a)
> (my-test-exit-status-advised) ; => 0
> (my-test-exit-status) ; => 1
So let's close this.