Repository navigation
[cpp-RCP-parity-B] CI reliability: cpfusa gating gaps (#59/#60/#61/#62 + cyber --strict) #123
Copy link
Copy link
Closed
Labels
Description
Background
Part of the same 2026-08-21 parity audit against c-RCP. This tracker is specifically the cpfusa-integration CI-reliability surface: several jobs don't actually gate/verify what their names or intent claim. It folds in three already-open issues (re-verified against current main, not left as stale assumptions) plus one newly-found gap of the same class.
Findings (verified against current main)
- cpp-FuSa dependency pulled via unpinned git clone — non-reproducible CI/release, stale toolVersion in v2.18.0 artifacts #59 (unpinned cpp-FuSa dependency) — confirmed fixed.
ci.yml:340andrelease.yml:30both now readgit clone --depth=1 --branch v0.18.0 https://github.com/SoundMatt/cpp-FuSa, landed inb618f0b(ci: pin cpp-FuSa to v0.18.0 instead of floating on default branch #97). Recommend closing cpp-FuSa dependency pulled via unpinned git clone — non-reproducible CI/release, stale toolVersion in v2.18.0 artifacts #59 directly (see comment posted there). - cpfusa analyze CI job uses "|| true", silently swallowing 22 ERROR-severity findings (violates §20.1.2) #60 (
cpfusa analyze || trueswallowing ERROR findings) — confirmed still open,ci.yml:445unchanged. Re-rancpfusa analyzelocally (pinned v0.18.0, clean checkout): 26 ERROR-severity findings today, but all 26 are noise from vendored third-party source —cpfusa's cppcheck integration scans the whole project directory includingbuild/_deps/catch2-src(pulled in by CMakeFetchContent), and cppcheck flags Catch2's own macros (SECTION,GIVEN,CATCH_REGISTER_LISTENER) asunknownMacroerrors. Scoping cppcheck to justinclude/ cli/ tests/(excludingbuild/) gives zero ERROR findings against cpp-RCP's own code. Fix is a scope/exclude change, not a defect-fixing sprint — much smaller than it looks from the raw count. - cpfusa-verify job: .fusa-evidence.json upload silently fails to find the file it just wrote #61 (cpfusa-verify evidence-upload silently fails) — confirmed still open,
ci.yml:592-596'supload-artifactstep for.fusa-evidence.jsonstill has noif-no-files-found: error. - README's TC18 wire-codec table entries omit the wire-conformance-not-claimed caveat (and byte_bus_id width vs TC18 needs verifying) #62 (README TC18 wire-codec caveat + byte_bus_id width) — half-fixed. The width half is done:
ByteBusIdwideneduint8_t→uint16_tat v2.19.0 (include/rcp/avtp.hpp:191, explained at lines 184-189). The README-caveat half is still open —README.md:24-25's rows for<rcp/avtp.hpp>/<rcp/acf.hpp>still carry no "wire conformance not claimed" caveat. Recommend narrowing README's TC18 wire-codec table entries omit the wire-conformance-not-claimed caveat (and byte_bus_id width vs TC18 needs verifying) #62's scope to just the remaining half (see comment posted there). - New finding: the
cpfusa-cyberjob is named"cpfusa cyber --strict"(ci.yml:394) but itsrun:step (ci.yml:408) invokes plaincpfusa cyber— no--strictflag, so WARNING-severity cybersecurity findings never fail the job despite the name. Scoped to cpp-RCP's own tree (nobuild/artifacts, matching real CI): 273 WARNING findings exist today (mostlyCYBER009/CWE-190 integer-narrowing in test files; oneCYBER017/CWE-798 hardcoded-IP-in-test-fixtures class worth a real risk review), 0 ERROR findings — so the job's actual pass/fail behavior is currently correct by accident, but the name overstates what it enforces. - Also found in passing:
cpfusa's cppcheck-sourcedANAL002findings never get a file/line attached (analyze.cpp:275-296's regex only captures the<error>tag's own attributes, never the nested<location>element) — worth filing upstream againstcpp-FuSaitself once cpfusa analyze CI job uses "|| true", silently swallowing 22 ERROR-severity findings (violates §20.1.2) #60 is otherwise fixed, since it'll make future triage harder.
Checklist
- Close cpp-FuSa dependency pulled via unpinned git clone — non-reproducible CI/release, stale toolVersion in v2.18.0 artifacts #59 (already fixed, evidence posted)
- Fix cpfusa analyze CI job uses "|| true", silently swallowing 22 ERROR-severity findings (violates §20.1.2) #60 — scope
cpfusa analyze's cppcheck invocation away frombuild/_depsvendor tree, then drop|| true - Fix cpfusa-verify job: .fusa-evidence.json upload silently fails to find the file it just wrote #61 — add
if-no-files-found: errorto the.fusa-evidence.jsonupload step - Narrow README's TC18 wire-codec table entries omit the wire-conformance-not-claimed caveat (and byte_bus_id width vs TC18 needs verifying) #62 to the remaining README-caveat half (width fix already landed)
- Add the missing
--strictflag to thecpfusa-cyberjob, then triage the 273 newly-gated WARNING findings - Consider filing the
ANAL002missing-location regex bug upstream againstcpp-FuSa
Not in scope here
#58 (cs-bit polarity bug) is a real, already-open, already-well-evidenced functional defect unrelated to CI-tooling reliability — left as-is, not folded into this tracker. #23 (tooling-package parity with go-RCP) is a distinct, already-correctly-scoped architectural decision — no overlap found.
Reactions are currently unavailable
Activity
SoundMatt commentedon Aug 21, 2026
Superseded by #129: rather than incrementally patch this gap, cpp-RCP is being fully rewritten from scratch, using c-RCP's current (RC5-conformant, atomicity-audited, ASIL-D-hardened) implementation as the content source of truth. This work is subsumed into that rewrite's phased checklist. Closing.