Non-blocking manual jobs that would report failure, not warning
<!--IssueSummary start-->
<details>
<summary>
Everyone can contribute. [Help move this issue forward](https://handbook.gitlab.com/handbook/marketing/developer-relations/contributor-success/community-contributors-workflows/#contributor-links) while earning points, leveling up and collecting rewards.
</summary>
- [Close this issue](https://contributors.gitlab.com/manage-issue?action=close&projectId=278964&issueIid=28036)
</details>
<!--IssueSummary end-->
### Problem to solve
This is what I would like to achieve:
1. Pipeline with stages `build`, `test`, `stage`, `deploy`
2. `build` and `test` are executed automatically on push
3. `stage` and `deploy` are manual jobs
4. When `build` and `test` stages pass, the whole pipeline is reported as `passed`
5. When a manual job is triggered _and it fails_, the pipeline will be reported as `failed`
In order to achieve `4.`, the manual jobs must have `allow_failure: true` (set by default). But that breaks `5.`, because that marks the job as `warning`, not `failed`.
In order to achieve `5.`, the manual jobs must have `allow_failure: false`. But that breaks `4.`, because the pipeline status after the automatic jobs finish will be `blocked`, not `passed`.
Currently there does not seem to be a way to have a pipeline such that:
- it has an optional manual job (e.g. for deploy so that when the non-manual jobs finish, the pipeline's status is `passed`)
- when the manual job fails, it is reported as `failed`, not just `warning`
This issue is somewhat related to !60334
issue