Skip to content

fix: pin cpp-FuSa checkout to v0.18.0 in CI workflows - #51

Merged
SoundMatt merged 1 commit into
mainfrom
chore/bump-cpfusa-v0.18.0
Jul 30, 2026
Merged

fix: pin cpp-FuSa checkout to v0.18.0 in CI workflows#51
SoundMatt merged 1 commit into
mainfrom
chore/bump-cpfusa-v0.18.0

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Summary

Version-jump verification (done for real, not skipped)

Built cpp-FuSa v0.18.0 locally the same way CI does (cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -G Ninja && cmake --build build --parallel) and ran the full fusa-asil-b gating sequence — init, check, lint, trace, cyber, qualify, hara init, iso26262, iec61508, boundary, tara, fmea, safety-case, sas, sci, badge, vuln, metrics record, report — plus the sarif job's check --format sarif, against cpp-LIN's own tree.

No new ERROR-level findings. check/lint/cyber/qualify all pass clean (0 errors), matching v0.15.0's clean-pass status on the same tree; qualify's 8/8 case suite still passes.

One notable behavior difference, investigated and confirmed benign: cyber's scanned-file count dropped from 28 (v0.15.0) to 16 (v0.18.0), findings 43 → 33. Traced to upstream commit 8564bf0 (landed between v0.15.0 and v0.18.0), which fixed every source-walking command (check, trace, fmea, coupling, boundary, cyber, vuln) to honour .fusa.json's sourceDirs (cpp-LIN declares ["src", "include"]) per x-FuSa spec §1.2.1's MUST. v0.15.0 was over-scanning cli/ and tests/, outside this project's declared source scope; v0.18.0 correctly excludes them. This is an upstream bug fix that narrows scope to match cpp-LIN's own declared config — not a suppression of real findings.

iso26262/iec61508 gap-report commands still exit 1 (gaps > 0, expected — this project doesn't carry full formal ISO 26262 process documentation), but both calls in ci.yml are already wrapped in || true, unchanged from v0.15.0's behavior.

Full local suite (re-run before pushing)

  • cmake/ninja Release build + ctest: 171/171 passed
  • ASan+UBSan (Debug, -fsanitize=address,undefined): 171/171 passed
  • ThreadSanitizer: not exercised locally — this sandbox's arm64 toolchain (c++ from an Alire GNAT install) lacks a linkable libtsan runtime for arm64 (___tsan_init undefined at link time). CI runs tsan natively on ubuntu-22.04/gcc-12, where TSan is supported and unaffected by this change.

Version bump

None. No library code, headers, or test vectors changed, and the tool-version jump surfaced no new findings — pure CI-pin fix, same category as #16 and #50 (neither of which bumped the version or touched CHANGELOG.md).

Test plan

  • cpp-FuSa v0.18.0 built locally the same way CI does.
  • Full fusa-asil-b gating sequence run against cpp-LIN's tree — 0 errors, qualify 8/8.
  • sarif job's check --format sarif run against cpp-LIN's tree — 0 errors.
  • Full ctest suite (Release) — 171/171 green.
  • ASan+UBSan ctest suite — 171/171 green.
  • CI (this PR) — pending.

Both the fusa-asil-b and sarif jobs in .github/workflows/ci.yml were
pinned to cpp-FuSa v0.15.0 (#16), three releases behind the current
v0.18.0. Bump both checkouts.

Built cpp-FuSa v0.18.0 locally the same way CI does and ran the full
fusa-asil-b gating sequence (init, check, lint, trace, cyber, qualify,
hara init, iso26262, iec61508, boundary, tara, fmea, safety-case, sas,
sci, badge, vuln, metrics, report) plus the sarif job's check --format
sarif against cpp-LIN's own tree, for real, before pushing. No new
ERROR-level findings: check/lint/cyber/qualify all pass clean (0
errors), identical to v0.15.0's clean-pass status; qualify's 8/8 case
suite still passes.

cyber's scanned-file count dropped from 28 to 16 (findings 43 -> 33)
between the two binaries — traced to upstream commit 8564bf0 (part of
the v0.16-v0.18 range), which fixed source-walking commands to honour
.fusa.json's sourceDirs (["src", "include"]) per x-FuSa spec S1.2.1.
v0.15.0 was over-scanning cli/ and tests/, outside this project's
declared source scope; v0.18.0 correctly excludes them. This is a
upstream bug fix, not a suppression of real findings.

iso26262/iec61508 gap-report commands still exit 1 (gaps > 0, expected
for a project without full formal ISO 26262 documentation) but both
calls in ci.yml are already wrapped in `|| true`, unchanged from
v0.15.0's behavior.

Full local suite re-run clean: cmake/ninja Release build (171/171
ctest), ASan+UBSan Debug build (171/171 ctest). ThreadSanitizer could
not be exercised locally (this sandbox's arm64 toolchain lacks a
linkable libtsan runtime); CI runs it natively on ubuntu-22.04/gcc-12
where TSan is supported, unaffected by this change.

No version bump: pure CI-tool-pin fix with no behavior change and no
new findings, same category as #16 and #50 (neither bumped the
version or touched CHANGELOG.md).

Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit f7006b2 into main Jul 30, 2026
15 checks passed
@SoundMatt
SoundMatt deleted the chore/bump-cpfusa-v0.18.0 branch July 30, 2026 23:09
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.

1 participant