Inconsistent / Incorrect job level if behavior

I’ve got an action set up with the following sort of setup:

linting: run unless skipci exists in commit message
testing: run unless skipci exists in commit message
build: needs testing, run if success() or skipci does NOT exist in commit message
deploy: needs build

The problem comes in with the fact that when I pass my skipci message, linting and testing both properly skip, build runs and successfully completes, and then deploy never gets run.

I’m trying to do this as opposed to having to add an if condition to every single step in testing, but it seems like, unless the testing completes successfully, even if build does complete successfully, deploy will never run even though it only depends on build.

Hey can you share out the workflow file for this?