Repository navigation
ci: pin cpp-FuSa to v0.18.0 instead of floating on default branch - #97
Merged
Merged
Conversation
Both workflow files that build the cpfusa safety-tooling binary from source cloned it with `git clone --depth=1 https://github.com/SoundMatt/cpp-FuSa /tmp/cpfusa` — no --branch/tag, so every CI run built whatever commit happened to be on cpp-FuSa's default branch at that moment. This is a floating-dependency policy violation (standing decision, confirmed 2026-07-28: pin every repo, every language): an unpinned checkout means CI pass/fail can change with no cpp-RCP-side change at all, which isn't reproducible and isn't something a reviewer can audit from the diff. Pins both occurrences to v0.18.0 (cpp-FuSa's latest release): - ci.yml's cpfusa-build job (shared by all cpfusa-* jobs via upload/download-artifact) - release.yml's regenerate-safety-artifacts job (tag-triggered, builds its own cpfusa independently rather than reusing ci.yml's artifact) Verified locally before pushing, building cpfusa v0.18.0 from source the same way CI now will and running every cpfusa subcommand either workflow invokes against cpp-RCP's own tree: - ci.yml set: check, lint, cyber, trace (incl. --req-coverage 100), qualify, vuln, verify, analyze, impact, metrics, report — all exit 0, 0 errors. - release.yml set: fmea --cyber, safety-case, tara, release (SBOM/ provenance), sas, sci, audit-pack, badge, report — all exit 0. iso26262/iec61508/do178 gap-report commands exit 1 as already documented in release.yml's comments (non-gating `|| true`, pre-existing stub-bridge gaps against ASIL-B/SIL-2/DAL-B thresholds, not new). - hara (display) — 0 issues. No new or different ERROR-level findings vs. whatever was floating before this pin: this is a clean, no-op-for-findings version lock. (One local-only false alarm caught and ruled out along the way: an initial `cpfusa lint` run showed 5 errors, all inside build/_deps/catch2-src — a FetchContent-vendored dependency that only existed because a full cmake build had been run in that checkout first. CI's actual cpfusa-lint job never runs cmake, so it never sees that path; re-running against a clean checkout with no build/ directory confirmed 0 errors.) Also ran this repo's full local build/test suite against the pin: cmake+ninja build (213/213 targets, twice in separate checkouts), ctest (52/52 passed, twice), and clang-tidy scoped to tests/*.cpp (clean aside from the same pre-existing bugprone-infinite-loop false positive in test_request.cpp already documented in commit 181e6e2/#96 as a newer-local-clang-tidy-vs-CI's-pinned-clang-14 artifact — this change touches no C++ source, so it cannot be the cause). No behavior change and no conformance gap found, so no version bump (cpp-rcp stays at 2.19.0): CI-workflow-only change, consistent with this repo's convention of reserving version bumps for commits that touch library code or behavior. Signed-off-by: Matt <47545907+SoundMatt@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes a floating-dependency policy violation, not just a version bump.
Both workflows that build the
cpfusasafety-tooling binary from source cloned it with:No
--branch/tag — so every CI run built whatever commit happened to be on cpp-FuSa's default branch at that moment. Per the project's standing decision (confirmed 2026-07-28: "pin every repo, every language — floating is worse than a stale pin"), this means CI pass/fail could change with no cpp-RCP-side change at all, which isn't reproducible and isn't something a reviewer can audit from the diff.This pins both occurrences to
v0.18.0(cpp-FuSa's latest release):ci.yml'scpfusa-buildjob (shared by allcpfusa-*jobs via upload/download-artifact)release.yml'sregenerate-safety-artifactsjob (tag-triggered; builds its owncpfusaindependently rather than reusingci.yml's artifact)All other
cpfusa-*jobs inci.ymlconsume the shared build artifact, so there was no third occurrence to fix.Verification
Built
cpfusa v0.18.0from source locally the same way CI now will, and ran everycpfusasubcommand either workflow invokes, against cpp-RCP's own tree:check,lint,cyber,trace(incl.--req-coverage 100),qualify,vuln,verify,analyze,impact,metrics,report— all exit 0, 0 errors.fmea --cyber,safety-case,tara,release(SBOM/provenance),sas,sci,audit-pack,badge,report— all exit 0.iso26262/iec61508/do178gap-report commands exit 1 as already documented inrelease.yml's comments (non-gating|| true, pre-existing stub-bridge gaps against ASIL-B/SIL-2/DAL-B thresholds — not new).hara(display) — 0 issues.No new or different ERROR-level findings vs. whatever was floating before this pin — a clean, no-op-for-findings version lock.
One local-only false alarm caught and ruled out along the way: an initial
cpfusa lintrun showed 5 errors, all insidebuild/_deps/catch2-src— a FetchContent-vendored dependency that only existed because a full cmake build had been run in that checkout first. CI's actualcpfusa-lintjob never runs cmake, so it never sees that path; re-running against a clean checkout with nobuild/directory confirmed 0 errors.Also ran this repo's full local build/test suite against the pin:
tests/*.cpp: clean aside from the same pre-existingbugprone-infinite-loopfalse positive intest_request.cppalready documented in commit 181e6e2 (ci: bump pinned RELAY conformance validator to v2.0.4 #96) as a newer-local-clang-tidy-vs-CI's-pinned-clang-14 artifact — this change touches no C++ source, so it cannot be the cause.No behavior change and no conformance gap found, so no version bump (cpp-rcp stays at 2.19.0): CI-workflow-only change, consistent with this repo's convention of reserving version bumps for commits that touch library code or behavior.
Test plan
cpfusa v0.18.0built from source and confirmed viacpfusa versionci.ymlcpfusa-* subcommand set run against cpp-RCP tree — 0 errorsrelease.ymlcpfusa subcommand set run against cpp-RCP tree — 0 errors (gap reports exit 1 as documented/expected)