Repository navigation
Ecosystem-wide: ASIL-scaled rigor (MC/DC, independence enforcement, complexity, TCL) is missing across the x-FuSa family #105
Description
Summary
Filed while scoping SoundMatt/c-FuSa#103 (an initiative to make c-FuSa scale its rigor by ISO 26262 ASIL, not just DO-178C DAL). Before filing that as a c-FuSa-only gap, I read the master spec (docs/x-fusa-spec.md) in full and FuSaOps' own Go implementation (vv/, mcdc/, comp/, trace/, qualify/) — the same gaps exist at the spec/orchestrator level, not just in one language port:
- MC/DC-by-ASIL: the canonical
coverageschema only carriesdal?, noasil?.mcdc/mcdc.go:4-7mentions ASIL-D in a doc comment but the actual gate (GateMCDC,cmd/fusaops/cmd_coverage.go) is DAL-only. - Independence-by-ASIL is computed but never enforced:
vv.AchievableASIL(d Declaration)(vv/vv.go:62-79) correctly derives an ASIL ceiling from independent-reviewer/independent-test-executor declarations — genuinely good logic — but every call site (cmd/fusaops/cmd_vv.go:183,server/server.go,qualify/qualify.go) only displays it. Nothing incheck/conformcompares it against a project's declared ASIL and fails the gate on a mismatch. - Complexity-by-ASIL:
comp/comp.go:78-98'sDALThreshold()is DAL-only, noASILThresholdequivalent. - TCL (Tool Confidence Level, ISO 26262-8 Tables 4-5): zero hits for "TCL"/"ToolConfidence" anywhere in the Go source.
docs/qualification.mddocuments FuSaOps' own static, hand-written TCL classification (TI2×TD2⇒TCL2) as prose — there's no programmatic determination for a consumer project's tools/target ASIL.
The one good pattern that already exists: trace.SeverityForDecomposition(enforce, dal, asil) (trace/decomp.go:174-205) — an --enforce auto|error|warn|off flag where auto derives gate severity from declared DAL and ASIL, wired into check's HLR/LLR decomposition gate. This is the right shape; it just hasn't been applied anywhere else yet.
Why file this on FuSaOps specifically
Several of the gaps above are most efficiently fixed at the schema/spec level, since FuSaOps' canonical schemas are what every per-language tool (go-FuSa, c-FuSa, cpp-FuSa, rust-FuSa, py-FuSa, java-FuSa, ada-FuSa) is expected to converge on. If asil fields and the enforce auto convention only get added inside c-FuSa, every other language port re-invents its own incompatible flavor later. Doing this once at the spec/orchestrator level lets every language tool (including c-FuSa, tracked separately at SoundMatt/c-FuSa#103) adopt the same shape.
Sub-issues
- Extend canonical coverage/comp schemas with an optional asil field alongside dal #106 — extend canonical
coverage/compschemas with an optionalasilfield alongside the existingdalfield; document ASIL-scaled MC/DC (ISO 26262-6 Table 12) and complexity guidance in the spec, same as the existing DAL guidance - Enforce (not just display) vv.AchievableASIL() against a project's declared ASIL in check/conform #107 — FuSaOps: enforce (not just display)
vv.AchievableASIL()against a project's declared ASIL incheck/conform - Document/promote the enforce=auto|error|warn|off DAL/ASIL severity pattern as canonical spec implementation guidance #108 — document/promote
trace.SeverityForDecomposition'senforce auto|error|warn|offpattern as canonical spec implementation guidance, so per-language tools converge on one flag shape instead of inventing their own - Track TCL (Tool Confidence Level, ISO 26262-8 Tables 4-5) determination as open ecosystem work #109 — track TCL (ISO 26262-8 Tables 4-5) determination as explicit open ecosystem work — currently absent from the spec and every implementation
Related
- Sibling initiative in c-FuSa: SoundMatt/c-FuSa#103 and its sub-issues (fix: v1.148.0 — ISO 26262 Table 4 ASIL bug + unauth arbitrary-file-read + 13 other audit findings #104-Track TCL (Tool Confidence Level, ISO 26262-8 Tables 4-5) determination as open ecosystem work #109 there) — those are the c-FuSa-local implementations; this issue is about making the same shapes available/canonical at the spec/orchestrator level so other language ports (and c-FuSa itself, eventually) can converge on them instead of diverging.
Activity
docs: add docs/standards/iso26262.md (#109) (#115)