Fail-fast seems to run forever

I have a pipeline that should run from dev → qa → prod and if it fails in any of the stages it should fail straight away.

You should never be able to run qa before dev etc.

You can see how I have tried to solve this bellow, I have removed a bunch of code that isn’t needed.

But running this it looks like the jobs that never got started is running forever.
My guess is that github action don’t see them as steps but instead as something else. And since I force max-parallel: 1it never continues to the next step and cancels it.

To me this seems like a bug but it seems to be quicker to ask here then creating a github issue in general ^^

      matrix: ${{ steps.set-matrix.outputs.matrix }}
    runs-on: ${{fromJSON(inputs.runs-on)}}
      - name: Set matrix for environment
        id: set-matrix
        run: |
          set -e
          echo '${{ inputs.ENVIRONMENTS }}' | jq .
          MATRIX=$(echo '${{ inputs.ENVIRONMENTS }}' | jq -c .)
          echo "::set-output name=matrix::${MATRIX}"

    needs: [set_env_matrix, terraform_plan]
      fail-fast: true
      max-parallel: 1
      matrix: ${{fromJson(needs.set_env_matrix.outputs.matrix)}}
    if: github.event_name != 'pull_request'
    runs-on: ${{fromJSON(inputs.runs-on)}}
      - name: Something
        run: |
          echo "something

This is how my job looks after faling in dev.
And the timer keeps on increasing so I’m rather sure it’s still waiting for something.