Skip to content

fix(ci): stop masking release.yml's safety-evidence pipeline with || true - #66

Merged
SoundMatt merged 1 commit into
mainfrom
fix/release-yml-unmask-safety-pipeline
Jul 29, 2026
Merged

fix(ci): stop masking release.yml's safety-evidence pipeline with || true#66
SoundMatt merged 1 commit into
mainfrom
fix/release-yml-unmask-safety-pipeline

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

What

`release.yml`'s entire safety-evidence regeneration pipeline was masked with `|| true` on every step — `gofusa check/cyber/tara/verify/coverage/boundary/sci`, plain `go test`, and `govulncheck` — so none of them could fail the workflow before their output was committed to `main` at every tagged release.

Root cause

Only `gofusa iec61508/iso26262/iec62443` have a legitimate, previously-documented reason to tolerate a non-zero exit: they exit 1 when compliance gaps are found, which is expected for a SEOOC (Safety Element Out Of Context) that doesn't claim full standalone conformance. Commit `23e2407` (PR #23) masked exactly these three, deliberately, with a clear commit message explaining why.

A later commit (`9af80ce`, the RELAY v1.10 conformance PR) broadened the masking to every other step in the file with no corresponding justification. That overreach — not a genuinely flaky check — is what this fixes.

Fix

Remove `|| true` from every step except the three compliance gap-report commands, which keep it with a comment explaining why (`iec62443` currently has 1 real, pre-existing, unrelated gap and correctly exits 1 — that job step must not fail the workflow on it).

Verification

Ran the pinned v0.47.0 `gofusa` binary locally, simulating the exact release.yml step sequence with `set -e` (so any failure would abort immediately): `fmea`, `check`, `cyber`, `tara`, `verify`, `go test`, `coverage`, `boundary`, `sci`, `safety-case`, `release`, `govulncheck` — all exit 0 cleanly against the current tree. The three gap-report commands were run separately: `iec61508`/`iso26262` exit 0 (0 gaps), `iec62443` exits 1 (1 gap, as expected — this is why it keeps `|| true`).

`release.yml` only runs on tag push so this PR's own CI won't exercise it directly; verification was done by replicating its steps locally against the pinned tool version.

Closes #53

…true

release.yml's entire safety-evidence regeneration pipeline was masked
with `|| true` on every step — gofusa check/cyber/tara/verify/
coverage/boundary/sci, plain `go test`, and govulncheck — so none of
them could fail the workflow before their output was committed to
main at every tagged release. A tool crash, malformed evidence file,
or genuine coverage/compliance regression would silently commit
stale or broken evidence under a new version tag while the release
still looked green.

Root cause: only gofusa iec61508/iso26262/iec62443 have a legitimate,
previously-documented reason to tolerate a non-zero exit (they exit 1
when compliance gaps are found, which is expected for a SEOOC —
commit 23e2407 / PR #23 masked exactly these three, deliberately).
A later commit (9af80ce, the v1.10 conformance PR) broadened the
masking to every other step in the file with no corresponding
justification — that overreach is what this fixes.

Verified locally with the pinned v0.47.0 gofusa binary that every
now-unmasked command exits 0 cleanly against the current tree: fmea,
check, cyber, tara, verify, go test, coverage, boundary, sci,
safety-case, release, govulncheck. Left `|| true` in place only on
the three compliance gap-report commands, with a comment explaining
why (iec62443 currently has 1 real, unrelated gap and correctly
exits 1 — the job must not fail on that).

Closes #53

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit f6c552e into main Jul 29, 2026
14 checks passed
@SoundMatt
SoundMatt deleted the fix/release-yml-unmask-safety-pipeline branch July 29, 2026 15:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

release.yml masks entire safety-evidence pipeline with || true, cannot fail before committing to main

1 participant