Repository navigation
v0.5.52
cfusa v0.5.52
ASIL-scaling initiative (issue #103, sub-issues #104-#109). c-FuSa correctly
derived ASIL but didn't scale the rigor ISO 26262 actually escalates at
higher ASIL levels — MC/DC coverage, independent review/test, and
complexity/rule strictness were either DO-178C-DAL-only or inert metadata.
Checked against both the x-FuSa master spec and its Go reference
implementation (FuSaOps) before starting: neither mandates or implements
this either, so this is c-FuSa leading the tool family, not catching up
to a spec requirement.
Added
- Shared ASIL/DAL severity helper (
include/cfusa/severity.h,
src/severity.c, #104):cfusa_dal_rank(),cfusa_asil_rank(), and
cfusa_required_severity(enforce, dal, asil, &sev)— one canonical
"how strict should this gate be" derivation (an--enforce auto|error|warn|offconvention), modeled on FuSaOps'
trace.SeverityForDecomposition.cmd_safety_rules.c's local
asil_rank()(HARA005) migrated onto it as a proof of the API shape. cfusa qualify --project-asil/--enforce(#105):achievableAsil
is now computed from--implementation-author/--independent-reviewer/
--independent-test-executor(ISO 26262-8 §11 ceiling logic: no
independent reviewer → ASIL-B, reviewer only → ASIL-C, reviewer +
test executor → ASIL-D; self-attestation doesn't count) instead of
accepted as a free-input string, and the command now fails when the
computed ceiling is below a declared--project-asil. Breaking:
removes the previously-inert--achievable-asilflag.cfusa coverage --asil QM|ASIL-A|ASIL-B|ASIL-C|ASIL-D(#106):
ISO 26262-6 Table 12 structural-coverage/MC/DC gate, mirroring--dal's
four-tier shape (ASIL-D requires MC/DC, ASIL-C requires full branch
coverage, ASIL-A/B require full line coverage, QM has no requirement).
When both--daland--asilare given, the stricter of the two
applies to each of line/branch/MC/DC independently.CFUSA-L011/CFUSA-L012lint rules (#108): octal constants
(MISRA-C 2012 Rule 7.1) and macros named the same as a C keyword
(Rule 20.4).cfusa misra's accredited-third-party-tool recommendation
now escalates toREQUIRED(notRECOMMENDED) when the project
declares ISO 26262 ASIL-C/D — the recommendation itself is unchanged,
only its stated strength scales with declared criticality.docs/standards/iso26262.md(#109): command mapping, ASIL
derivation, what scales by ASIL today, and an explicit statement of
what doesn't — no programmatic Tool Confidence Level (TCL, ISO 26262-8
Tables 4-5) determination exists anywhere in c-FuSa (or the wider
x-FuSa family) yet. Every command in its workflow example was run
against a real build before being written down.
Fixed
check's automaticCOMP001gate now recognizes ISO 26262 ASIL
(#107): previously only DO-178C DAL tags in.fusa.json's
standards[]were recognized, so an ISO-26262-only project silently
got the unscaled default complexity threshold instead of the
ASIL-appropriate one (matchingcfusa comp --asil-d/c/b/a's existing
table), unless it separately rancfusa compby hand. When both a DAL
and an ASIL are declared, the stricter threshold wins.
Installation
# Linux (amd64)
curl -Lo cfusa https://github.com/SoundMatt/c-FuSa/releases/download/v0.5.52/cfusa-linux-amd64
chmod +x cfusa && sudo mv cfusa /usr/local/bin/
# macOS (arm64)
curl -Lo cfusa https://github.com/SoundMatt/c-FuSa/releases/download/v0.5.52/cfusa-darwin-arm64
chmod +x cfusa && sudo mv cfusa /usr/local/bin/
# From source
cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --install buildVerify
cfusa version
cfusa qualifyWhat's Changed
- feat: add shared ASIL/DAL required-severity helper by @SoundMatt in #110
- feat: cfusa qualify computes and enforces achievable ASIL from V&V independence by @SoundMatt in #111
- feat: add ASIL-aware MC/DC coverage gate to cfusa coverage by @SoundMatt in #112
- feat: unify complexity threshold between cfusa comp and check's COMP001 by @SoundMatt in #113
- feat: expand MISRA-C rule coverage; ASIL-scale the accredited-tool note by @SoundMatt in #114
- docs: add docs/standards/iso26262.md by @SoundMatt in #115
- chore: bump v0.5.51 -> v0.5.52 by @SoundMatt in #116
Full Changelog: v0.5.51...v0.5.52