Skip to content

docs+ci: v2.26.0 -- real cybersecurity severity marking + tested/sec-tested CI gates - #107

Merged
SoundMatt merged 1 commit into
mainfrom
sec-tested-severity-tagging
Aug 18, 2026
Merged

SoundMatt merged 1 commit into
mainfrom
sec-tested-severity-tagging

Conversation

@SoundMatt

Copy link
Copy Markdown
Owner

Proactive fix, raised while investigating a c-FuSa bug that made c-RCP's own --sec-tested CI gate vacuously pass at 100% against zero real evidence the whole time (SoundMatt/c-RCP#575/#577). Checked whether cpp-RCP/go-RCP/rust-RCP had the same live problem — none do today, but cpp-RCP already has the exact precondition: CYBERSECURITY.md citing 64 real security-relevant requirement ids, with .fusa-reqs.json never populating the severity field cpp-FuSa needs to compute secTestedRequirements.

Fixed proactively:

  1. Added "severity": "cybersecurity" to the 64 CYBERSECURITY.md-cited requirement ids. All already had real test tags.
  2. Found cpp-FuSa v0.18.0's own --sec-tested flag has the identical bug class c-FuSa just fixed (gates on general test coverage, not sec-tested specifically). Filed upstream as trace --sec-tested gates on general test_coverage, not sec_tested/total (same bug class as SoundMatt/c-FuSa#147) cpp-FuSa#64 — not wired into CI here since it would be vacuous today regardless.
  3. Added two new real CI gates via cpfusa trace --format json (never the broken flag): a 100% "tested" gate (this job's own comment already claimed to enforce this but didn't), and a 17% sec-tested floor against the real CYBERSECURITY.md subset.

Verified: secTestedRequirements 0 → 64, full 53-test suite + ASan/UBSan clean, cpfusa check 0 errors.

…tested CI gates (proactive fix, mirrors SoundMatt/c-RCP#575/#577)

Raised proactively while investigating a c-FuSa bug (SoundMatt/c-FuSa#146/
147/166, fixed in c-FuSa v0.6.1) that made c-RCP's own --sec-tested CI
gate vacuously pass at 100% against zero real security-test evidence
the whole time. Checked whether cpp-RCP, go-RCP, and rust-RCP had the
same live problem: none do today (no repo runs a --sec-tested-style
gate currently), but cpp-RCP already has the exact precondition --
CYBERSECURITY.md citing 64 real security-relevant requirement ids,
with .fusa-reqs.json never populating the 'severity' field cpp-FuSa's
own trace.cpp needs to compute secTestedRequirements -- so the same
mistake would recur the moment anyone wires up cpfusa's --sec-tested
flag naively.

Fixed proactively, before that ever happens:

1. Added "severity": "cybersecurity" to exactly the 64 requirement
   ids CYBERSECURITY.md's own six security layers cite
   (REQ-TLS-001..010, REQ-AUTH-001..008, REQ-E2E-001..014,
   REQ-RL-001..008, REQ-DISC-001..009, REQ-REGMAP-001..015). All 64
   already had real //fusa:test tags (verified individually) -- cpp-FuSa's
   design derives sec-test coverage automatically from
   severity+existing-test-tag, no separate tag type needed (unlike
   c-FuSa's manual //cfusa:sec-test scheme).

2. Also found cpp-FuSa v0.18.0's own --sec-tested flag has the exact
   same bug class as c-FuSa's pre-#147 code: gates on general
   test_coverage, not sec_tested/total (confirmed by direct read of
   trace.cpp/cli.cpp). Filed upstream as SoundMatt/cpp-FuSa#64. Not
   wired into CI here -- would be vacuous today for a different reason
   even with real severity data.

3. ci.yml: added two new hard gates using cpfusa trace --format json
   (never the broken --sec-tested flag), matching SoundMatt/c-RCP#577's
   JSON-over-text-scraping choice for the identical class of problem:
   - 100% 'tested' gate (previously this job's own comment claimed to
     enforce 'traced AND tested' but --req-coverage only checks traced;
     tested happened to already be 100% by luck, never verified)
   - 17% sec-tested floor (64/376 = 17.02%) against the real
     CYBERSECURITY.md-enumerated subset

Verified: cpfusa v0.18.0 built from source, run directly against this
tree -- secTestedRequirements: 64 (was 0), testedRequirements: 376/376,
tracedRequirements: 376/376, cpfusa check 0 errors. Full 53-test suite
+ ASan/UBSan clean (-fsanitize=address,undefined per this repo's own
CI flags).

Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com>
@SoundMatt
SoundMatt merged commit 38d9667 into main Aug 18, 2026
22 checks passed
@SoundMatt
SoundMatt deleted the sec-tested-severity-tagging branch August 18, 2026 23:00
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