From 981579c3a7cb2f9bca5a0afe24cf32e61fc3ef68 Mon Sep 17 00:00:00 2001 From: Matt Jones <47545907+SoundMatt@users.noreply.github.com> Date: Tue, 28 Jul 2026 15:03:04 -0700 Subject: [PATCH] =?UTF-8?q?fix(fmea,tara):=20v0.40.0=20=E2=80=94=20project?= =?UTF-8?q?-relative=20paths,=20coveragePct=20clamp,=20wider=20templates?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit x-FuSa spec §4 requires every Finding.Location.File (and the equivalent fmea entries[].file) to be project-relative with forward slashes. Under the common `--dir`-omitted invocation, fmea.Scan's entries[].file and CYBER's own Finding.Location.File (which tara.Scan sources threats[].location/sourceFile directly from) both carried the raw, absolute walked path — reproduced exactly as described against this repo's own source tree (go-FuSa#59). fmea.Scan now relativizes every entry's File against projectRoot; cyber.location now does the same relativization lint/analyze already applied to their own findings (REQ-LOC-REL001), which transitively fixes tara.json too since it had no bug of its own — it only ever inherited an absolute path from the CYBER finding it was built from. x-FuSa spec §9.2 (spec v1.15.0) states coveragePct MUST NOT exceed 100. Both fmea.buildSummary and tara.buildSummary already guaranteed this mathematically via their componentsInProject/assetsInProject >= componentsAnalyzed/assetsAnalyzed fallback, but add an explicit defensive clamp anyway — cheap insurance against a future change to that fallback silently reintroducing the overflow. New regression tests use a fixture with a non-trivial test-source tree (many _test.go files) since a fixture with no such tree can't exercise the exclusion logic the bug depends on. Separately, this repo's own committed fmea.json failed its own new FUSA-STUB002 content-quality gate: deriveAnalysis bucketed every scanned function into one of only 6 fixed template strings, reducing a 461-function codebase to a ~0.013 distinct-value ratio — exactly the "hundreds of FMEA rows sharing identical boilerplate text" pattern §1.6.1 rule B exists to catch (go-FuSa#60). Every template now weaves in the function's own component (a genuine per-function signal) plus, for the dominant no-signal-matched bucket, whether the function has a receiver and how many parameters it takes. Regenerated fmea.json/ fmea.csv: distinct-value ratios are now ~0.28-0.29, well clear of 0.1. Also (x-FuSa spec §1.6 rule 4, SHOULD, non-binding): extracted the vendor/testdata/dot-directory exclusion check duplicated across trace.ScanTags/ScanFuncCoverage/ScanFuncTagCoverage, fmea.CountProjectFunctions, and tara.CountProjectFiles into one shared trace.IsExcludedDir, so the coverage-denominator scanners this issue was actually about stop maintaining an independently-drifting copy. Regenerated tara.json/tara.md for the path fix; tara's own pre-existing FUSA-STUB002 gap (threats[].threat vocabulary, unrelated to this PR) is addressed separately. Signed-off-by: Matt Jones Signed-off-by: Matt Jones <47545907+SoundMatt@users.noreply.github.com> --- .fusa-reqs.json | 30 + CHANGELOG.md | 42 + README.md | 2 +- cmd/gofusa/cmd_pathrel_test.go | 118 + cyber/cyber.go | 42 +- cyber/cyber_gosec.go | 26 +- cyber/cyber_test.go | 25 + docs/tool-safety-manual.md | 2 +- fmea.csv | 923 ++--- fmea.json | 6499 ++++++++++++++++---------------- fmea/fmea.go | 115 +- fmea/fmea_test.go | 66 + fusa.go | 2 +- tara.json | 1918 +++++----- tara.md | 146 +- tara/tara.go | 19 +- tara/tara_test.go | 39 + trace/trace.go | 22 +- trace/trace_test.go | 23 + 19 files changed, 5301 insertions(+), 4758 deletions(-) create mode 100644 cmd/gofusa/cmd_pathrel_test.go diff --git a/.fusa-reqs.json b/.fusa-reqs.json index 2983d83..280a8f0 100644 --- a/.fusa-reqs.json +++ b/.fusa-reqs.json @@ -1284,6 +1284,18 @@ "text": "All Finding.Location.File values produced by lint and analyze rules shall be paths relative to projectRoot using forward-slash separators. Absolute paths are prohibited. This ensures fingerprints (§4.2) are portable across environments.", "standard": "x-FuSa" }, + { + "id": "REQ-LOC-REL002", + "title": "cyber.location.file is project-relative", + "text": "All Finding.Location.File values produced by CYBER rules shall be paths relative to projectRoot using forward-slash separators, matching lint/analyze's existing REQ-LOC-REL001 behaviour; this also fixes tara.Scan's ThreatEntry.Location/SourceFile, which is sourced directly from a CYBER finding.", + "standard": "x-FuSa spec section 4" + }, + { + "id": "REQ-LOC-REL003", + "title": "fmea entries[].file is project-relative", + "text": "fmea.Scan shall relativize each Entry.File against projectRoot with forward-slash separators before returning the report, per x-FuSa spec section 4's project-relative MUST.", + "standard": "x-FuSa spec section 4" + }, { "id": "REQ-CAP-STD001", "title": "capabilities Standards array uses canonical IDs", @@ -1597,6 +1609,12 @@ "standard": "x-FuSa", "level": "1.4.1" }, + { + "id": "REQ-TRACE012", + "title": "IsExcludedDir is the shared test-tree exclusion predicate", + "text": "trace.IsExcludedDir shall report whether a directory is vendor/, testdata/, or a dot-directory, and shall be the single implementation ScanTags/ScanFuncCoverage/ScanFuncTagCoverage and every coverage-denominator scanner (fmea.CountProjectFunctions, tara.CountProjectFiles) apply, per x-FuSa spec section 1.6 rule 4 (SHOULD).", + "standard": "x-FuSa spec section 1.6" + }, { "id": "REQ-DOC001", "title": "ResolveDoc falls back to the docs/safety/ scaffold path", @@ -2484,6 +2502,12 @@ "text": "gofusa fmea shall support --min-coverage N (exit 1 if summary.coveragePct < N), and --strict/--require-attestation (exit 1 on an unsuppressed FUSA-STUB002 finding).", "standard": "x-FuSa spec section 1.6.2 / section 9.2" }, + { + "id": "REQ-FMEA012", + "title": "fmea summary.coveragePct never exceeds 100", + "text": "fmea.buildSummary shall clamp summary.coveragePct to a maximum of 100, defensively, in addition to the componentsInProject >= componentsAnalyzed fallback that already guarantees this, per x-FuSa spec section 9.2 MUST.", + "standard": "x-FuSa spec section 9.2" + }, { "id": "REQ-HARA016", "title": "SafetyGoal.FSSRRefs replaces the singular FSSRRef field", @@ -2687,6 +2711,12 @@ "title": "tara --min-coverage / --strict / --require-attestation flags", "text": "gofusa tara shall support --min-coverage N (exit 1 if summary.coveragePct < N), and --strict/--require-attestation (exit 1 on an unsuppressed FUSA-STUB002 finding).", "standard": "x-FuSa spec section 1.6.2 / section 9.2" + }, + { + "id": "REQ-TARA011", + "title": "tara summary.coveragePct never exceeds 100", + "text": "tara.buildSummary shall clamp summary.coveragePct to a maximum of 100, defensively, in addition to the assetsInProject >= assetsAnalyzed fallback that already guarantees this, per x-FuSa spec section 9.2 MUST.", + "standard": "x-FuSa spec section 9.2" } ] } diff --git a/CHANGELOG.md b/CHANGELOG.md index a927977..84e61fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -34,6 +34,48 @@ Dates reference the merged commit timestamp. continues to be suppressed only by a valid §1.6.2 attestation, never by disposition. +## v0.40.0 — 2026-07-28 (fmea/tara: project-relative paths, coveragePct clamp, wider FMEA templates) + +### Fixed +- **fmea.json/tara.json no longer emit absolute file paths** under the + common `--dir`-omitted invocation (x-FuSa spec §4 MUST — project-relative, + forward-slash paths). `fmea.Scan`'s `entries[].file` and CYBER's own + `Finding.Location.File` (which `tara.Scan` sources `threats[].location`/ + `sourceFile` directly from) both carried the raw, often-absolute walked + path. `fmea.Scan` now relativizes every entry's `File` against + `projectRoot` before returning; `cyber.location` now does the same thing + lint/analyze already did (§REQ-LOC-REL001), which transitively fixes + `tara.json` too since it never had its own bug — it just inherited an + absolute path from the CYBER finding it was built from (go-FuSa#59). +- **`coveragePct` now has a defensive `<= 100` clamp** in both + `fmea.buildSummary` and `tara.buildSummary` (x-FuSa spec §9.2 MUST, spec + v1.15.0). The existing `componentsInProject`/`assetsInProject` fallback + already made this mathematically unreachable today, but the clamp is + cheap insurance against a future change to that fallback silently + reintroducing the overflow the spec calls out. New regression tests use a + fixture with a non-trivial test-source tree (many `_test.go` files) to + actually exercise the exclusion logic the bug depends on. +- **fmea's own committed `fmea.json` no longer fails its own + `FUSA-STUB002` content-quality gate.** `deriveAnalysis` bucketed every + scanned function into one of only 6 fixed template strings, so a + 461-function codebase like go-FuSa's own reduced to a ~0.013 distinct- + value ratio — reproducing exactly the "hundreds of FMEA rows sharing + identical boilerplate text" pattern §1.6.1 rule B exists to catch + (go-FuSa#60). Every template now weaves in the function's own component + (package/directory — a genuine per-function signal) plus, for the + dominant no-other-signal-matched bucket, whether the function has a + receiver and how many parameters it takes. Regenerated `fmea.json`/ + `fmea.csv`: failureMode/effect/cause distinct-value ratios are now + ~0.29/0.28/0.29 (up from ~0.013), comfortably clear of the 0.1 threshold. + +### Changed +- **Coverage-denominator scanners reuse a shared test-tree exclusion + predicate** (x-FuSa spec §1.6 rule 4 SHOULD, non-binding implementer + guidance): new `trace.IsExcludedDir` is now the single implementation of + the vendor/testdata/dot-directory check `trace.ScanTags`/ + `ScanFuncCoverage`/`ScanFuncTagCoverage`, `fmea.CountProjectFunctions`, + and `tara.CountProjectFiles` all previously re-implemented independently. + ## v0.36.0 — 2026-07-28 (x-FuSa spec v1.13.0/v1.14.0 — evidence-artifact schema conformance + content-quality baseline) ### Added diff --git a/README.md b/README.md index b9a6490..1593ecc 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ docker build -t go-fusa . docker run --rm -v "$(pwd)":/project go-fusa check ``` -Published tags: `latest`, `0.37`, `0.37.0` (and matching semver for every release). +Published tags: `latest`, `0.40`, `0.40.0` (and matching semver for every release). ## Standards coverage diff --git a/cmd/gofusa/cmd_pathrel_test.go b/cmd/gofusa/cmd_pathrel_test.go new file mode 100644 index 0000000..745869c --- /dev/null +++ b/cmd/gofusa/cmd_pathrel_test.go @@ -0,0 +1,118 @@ +package main + +// cmd_pathrel_test.go covers x-FuSa spec §4's project-relative MUST for +// fmea.json/tara.json under the common, day-to-day invocation shape: +// `gofusa fmea`/`gofusa tara` run from the project root with --dir omitted +// (which resolves to os.Getwd(), an absolute path) — exactly the case that +// previously produced absolute entries[].file / threats[].location.file +// (go-FuSa#59). + +import ( + "bytes" + "encoding/json" + "os" + "path/filepath" + "strings" + "testing" + + fusa "github.com/SoundMatt/go-FuSa" +) + +//fusa:test REQ-LOC-REL003 +func TestRunFmea_DirOmitted_EntryFileIsRelative(t *testing.T) { + dir := t.TempDir() + src := "package main\n\n//fusa:req REQ-001\nfunc SafetyFunc() error { return nil }\n" + if err := os.WriteFile(filepath.Join(dir, "main.go"), []byte(src), 0o644); err != nil { + t.Fatal(err) + } + + cwd, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + defer func() { _ = os.Chdir(cwd) }() + if chErr := os.Chdir(dir); chErr != nil { + t.Fatal(chErr) + } + + var out, errBuf bytes.Buffer + // --dir intentionally omitted: this is the common invocation shape the + // bug reproduced under. + if code := runFmea(nil, &out, &errBuf); code != fusa.ExitOK { + t.Fatalf("runFmea: exit %d, stderr: %s", code, errBuf.String()) + } + + data, err := os.ReadFile(filepath.Join(dir, "fmea.json")) + if err != nil { + t.Fatalf("read fmea.json: %v", err) + } + var report struct { + Entries []struct { + File string `json:"file"` + } `json:"entries"` + } + if err := json.Unmarshal(data, &report); err != nil { + t.Fatalf("unmarshal fmea.json: %v", err) + } + if len(report.Entries) == 0 { + t.Fatal("expected at least one entry") + } + for _, e := range report.Entries { + if filepath.IsAbs(e.File) { + t.Errorf("entries[].file = %q, want project-relative (§4 MUST)", e.File) + } + } +} + +//fusa:test REQ-LOC-REL002 +func TestRunTara_DirOmitted_ThreatLocationIsRelative(t *testing.T) { + dir := t.TempDir() + src := "package main\n\nimport \"crypto/md5\"\n\nfunc Hash(b []byte) [16]byte { return md5.Sum(b) }\n" + if err := os.WriteFile(filepath.Join(dir, "weak.go"), []byte(src), 0o644); err != nil { + t.Fatal(err) + } + + cwd, err := os.Getwd() + if err != nil { + t.Fatal(err) + } + defer func() { _ = os.Chdir(cwd) }() + if chErr := os.Chdir(dir); chErr != nil { + t.Fatal(chErr) + } + + var out, errBuf bytes.Buffer + if code := runTara(nil, &out, &errBuf); code != fusa.ExitOK { + t.Fatalf("runTara: exit %d, stderr: %s", code, errBuf.String()) + } + + data, err := os.ReadFile(filepath.Join(dir, "tara.json")) + if err != nil { + t.Fatalf("read tara.json: %v", err) + } + var report struct { + Threats []struct { + Location struct { + File string `json:"file"` + } `json:"location"` + SourceFile string `json:"sourceFile"` + } `json:"threats"` + } + if err := json.Unmarshal(data, &report); err != nil { + t.Fatalf("unmarshal tara.json: %v", err) + } + if len(report.Threats) == 0 { + t.Fatal("expected at least one threat") + } + for _, th := range report.Threats { + if filepath.IsAbs(th.Location.File) { + t.Errorf("threats[].location.file = %q, want project-relative (§4 MUST)", th.Location.File) + } + if filepath.IsAbs(th.SourceFile) { + t.Errorf("threats[].sourceFile = %q, want project-relative (§4 MUST)", th.SourceFile) + } + if strings.Contains(th.Location.File, "\\") { + t.Errorf("threats[].location.file = %q, want forward-slash separators", th.Location.File) + } + } +} diff --git a/cyber/cyber.go b/cyber/cyber.go index bb5d31c..5e207be 100644 --- a/cyber/cyber.go +++ b/cyber/cyber.go @@ -115,9 +115,21 @@ func isNolinted(pf parsedFile, pos token.Pos, ruleID string) bool { return false } -func location(fset *token.FileSet, pos token.Pos) fusa.Location { +// location builds a fusa.Location with a projectRoot-relative, forward-slash +// File path (§4 MUST), mirroring lint.locationEnd/analyze's equivalent +// helper, so CYBER findings' fingerprints (§4.2) are portable across +// environments and downstream consumers (e.g. tara.Scan, which sources +// ThreatEntry.Location/SourceFile straight from a CYBER finding) don't +// inherit an absolute path. +// +//fusa:req REQ-LOC-REL002 +func location(fset *token.FileSet, pos token.Pos, projectRoot string) fusa.Location { p := fset.Position(pos) - return fusa.Location{File: p.Filename, Line: p.Line, Column: p.Column} + rel, err := filepath.Rel(projectRoot, p.Filename) + if err != nil { + rel = p.Filename + } + return fusa.Location{File: filepath.ToSlash(rel), Line: p.Line, Column: p.Column} } // hasImport reports whether the file imports the given path. @@ -206,7 +218,7 @@ func (r *ruleWeakHash) Run(_ context.Context, projectRoot string, _ *config.Conf Severity: fusa.SeverityWarning, Message: "import of " + path + " — MD5 and SHA-1 are cryptographically broken" + " and must not be used for security-sensitive hashing", - Location: location(pf.fset, pos), + Location: location(pf.fset, pos, projectRoot), Remediation: "replace with crypto/sha256, crypto/sha512, or golang.org/x/crypto/blake2b", }) } @@ -238,7 +250,7 @@ func (r *ruleWeakCipher) Run(_ context.Context, projectRoot string, _ *config.Co RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "import of " + path + " — DES, 3DES, and RC4 are broken symmetric ciphers", - Location: location(pf.fset, pos), + Location: location(pf.fset, pos, projectRoot), Remediation: "use crypto/aes with GCM or ChaCha20-Poly1305 (golang.org/x/crypto/chacha20poly1305)", }) } @@ -270,7 +282,7 @@ func (r *ruleInsecureRandom) Run(_ context.Context, projectRoot string, _ *confi RuleID: r.ID(), Severity: fusa.SeverityInfo, Message: "import of " + path + " — use crypto/rand for security-sensitive random values", - Location: location(pf.fset, pos), + Location: location(pf.fset, pos, projectRoot), Remediation: "use crypto/rand.Read or crypto/rand.Int for tokens, nonces, and keys", }) } @@ -301,7 +313,7 @@ func (r *ruleUnsafePointer) Run(_ context.Context, projectRoot string, _ *config RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "import of \"unsafe\" bypasses Go type safety and memory safety guarantees", - Location: location(pf.fset, pos), + Location: location(pf.fset, pos, projectRoot), Remediation: "remove unsafe usage; if required for syscall interop, document the invariant with a //nolint:CYBER004 comment", }) } @@ -338,7 +350,7 @@ func (r *ruleCmdInjection) Run(_ context.Context, projectRoot string, _ *config. RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "exec.Command called with a non-literal command name — verify the value cannot be influenced by untrusted input", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use a fixed command name string literal; pass variable data only as arguments, never as the command name", }) } @@ -350,7 +362,7 @@ func (r *ruleCmdInjection) Run(_ context.Context, projectRoot string, _ *config. RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "exec.CommandContext called with a non-literal command name — verify the value cannot be influenced by untrusted input", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use a fixed command name string literal; pass variable data only as arguments, never as the command name", }) } @@ -397,7 +409,7 @@ func (r *ruleHardcodedCredential) Run(_ context.Context, projectRoot string, _ * RuleID: r.ID(), Severity: fusa.SeverityError, Message: "hardcoded credential: " + name.Name + " is assigned a string literal — secrets must not be embedded in source code", - Location: location(pf.fset, name.Pos()), + Location: location(pf.fset, name.Pos(), projectRoot), Remediation: "load credentials from environment variables, a secrets manager, or a configuration file excluded from version control", }) } @@ -420,7 +432,7 @@ func (r *ruleHardcodedCredential) Run(_ context.Context, projectRoot string, _ * RuleID: r.ID(), Severity: fusa.SeverityError, Message: "hardcoded credential: " + ident.Name + " is assigned a string literal — secrets must not be embedded in source code", - Location: location(pf.fset, ident.Pos()), + Location: location(pf.fset, ident.Pos(), projectRoot), Remediation: "load credentials from environment variables, a secrets manager, or a configuration file excluded from version control", }) } @@ -470,7 +482,7 @@ func (r *ruleTLSInsecureSkipVerify) Run(_ context.Context, projectRoot string, _ RuleID: r.ID(), Severity: fusa.SeverityError, Message: "InsecureSkipVerify: true disables TLS certificate verification — enables man-in-the-middle attacks", - Location: location(pf.fset, key.Pos()), + Location: location(pf.fset, key.Pos(), projectRoot), Remediation: "remove InsecureSkipVerify or set it to false; use a proper CA bundle for self-signed certificates", }) } @@ -515,7 +527,7 @@ func (r *ruleHTTPServerNoTimeout) Run(_ context.Context, projectRoot string, _ * RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "http." + fnName + " uses the default http.Server which has no read/write timeouts", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use &http.Server{ReadTimeout: ..., WriteTimeout: ..., IdleTimeout: ...}.ListenAndServe(addr)", }) } @@ -575,7 +587,7 @@ func (r *ruleIntegerNarrowing) Run(_ context.Context, projectRoot string, _ *con Severity: fusa.SeverityInfo, Message: ident.Name + "(x) — explicit narrowing conversion may silently truncate" + " bits if x exceeds the target type's range", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "add an explicit range check before the conversion, or use math/bits or saturating arithmetic", }) return true @@ -642,7 +654,7 @@ func (r *ruleStringConcatInAPI) Run(_ context.Context, projectRoot string, _ *co RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: pair[0] + "." + pair[1] + " called with string-concatenated path — potential path traversal", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use filepath.Join and validate the result with filepath.Clean; reject paths containing \"..\"", }) } @@ -657,7 +669,7 @@ func (r *ruleStringConcatInAPI) Run(_ context.Context, projectRoot string, _ *co RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "." + pair[1] + "() called with string-concatenated query — potential SQL injection", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use parameterised queries: db.Query(\"SELECT ... WHERE id = $1\", id)", }) } diff --git a/cyber/cyber_gosec.go b/cyber/cyber_gosec.go index a475906..1505d07 100644 --- a/cyber/cyber_gosec.go +++ b/cyber/cyber_gosec.go @@ -70,7 +70,7 @@ func (r *ruleSSRF) Run(_ context.Context, projectRoot string, _ *config.Config) RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "http." + pair[1] + " called with non-literal URL — potential SSRF", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "validate the URL against an allowlist or use a fixed URL", }) return true @@ -82,7 +82,7 @@ func (r *ruleSSRF) Run(_ context.Context, projectRoot string, _ *config.Config) RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "http.NewRequest called with non-literal URL — potential SSRF", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "validate the URL against an allowlist or use a fixed URL", }) } @@ -114,7 +114,7 @@ func (r *rulePprofExposed) Run(_ context.Context, projectRoot string, _ *config. RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: `import "net/http/pprof" registers profiling HTTP endpoints — must not be present in production builds`, - Location: location(pf.fset, pos), + Location: location(pf.fset, pos, projectRoot), Remediation: "remove the pprof import; enable profiling only in debug builds via a build tag", }) } @@ -161,7 +161,7 @@ func (r *ruleZipSlip) Run(_ context.Context, projectRoot string, _ *config.Confi RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "zip archive entry Name used in file path operation without sanitisation — potential path traversal", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: `sanitise entry names: reject paths containing ".." and ensure result stays within the target directory`, }) return true @@ -217,7 +217,7 @@ func (r *ruleTLSMinVersion) Run(_ context.Context, projectRoot string, _ *config RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "tls.Config MinVersion set to TLS 1.0 or 1.1 — minimum recommended version is TLS 1.2", - Location: location(pf.fset, kv.Pos()), + Location: location(pf.fset, kv.Pos(), projectRoot), Remediation: "set MinVersion: tls.VersionTLS12 or higher", }) } @@ -277,7 +277,7 @@ func (r *ruleSQLSprintf) Run(_ context.Context, projectRoot string, _ *config.Co RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "." + sel.Sel.Name + "() called with fmt.Sprintf query — potential SQL injection", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use parameterised queries: db.Query(\"SELECT ... WHERE id = $1\", id)", }) } @@ -324,7 +324,7 @@ func (r *rulePermissiveDir) Run(_ context.Context, projectRoot string, _ *config RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "directory created with mode more permissive than 0750", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use mode 0750 (owner+group rwx) or stricter", }) } @@ -364,7 +364,7 @@ func (r *rulePermissiveFile) Run(_ context.Context, projectRoot string, _ *confi RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "os.OpenFile called with mode more permissive than 0640", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use mode 0640 (owner rw, group r) or stricter", }) } @@ -376,7 +376,7 @@ func (r *rulePermissiveFile) Run(_ context.Context, projectRoot string, _ *confi RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "os.WriteFile called with mode more permissive than 0640", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "use mode 0640 (owner rw, group r) or stricter", }) } @@ -426,7 +426,7 @@ func (r *rulePathFromRequest) Run(_ context.Context, projectRoot string, _ *conf RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "http.ServeFile path derived from HTTP request — potential path traversal", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "sanitise path with filepath.Clean; ensure it remains within the allowed root", }) } @@ -439,7 +439,7 @@ func (r *rulePathFromRequest) Run(_ context.Context, projectRoot string, _ *conf RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: fn[0] + "." + fn[1] + " path derived from HTTP request — potential path traversal", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "sanitise path with filepath.Clean; ensure it remains within the allowed root", }) } @@ -522,7 +522,7 @@ func (r *ruleTOCTOU) Run(_ context.Context, projectRoot string, _ *config.Config RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: fn.Name.Name + ": os.Stat followed by file operation — TOCTOU race; another process may modify the file between check and use", - Location: location(pf.fset, statPos), + Location: location(pf.fset, statPos, projectRoot), Remediation: "open the file directly and handle ENOENT/EEXIST; avoid stat-then-open patterns", }) } @@ -565,7 +565,7 @@ func (r *ruleInsecureTempFile) Run(_ context.Context, projectRoot string, _ *con RuleID: r.ID(), Severity: fusa.SeverityWarning, Message: "file created in temp directory with predictable name — use os.CreateTemp for secure temp files", - Location: location(pf.fset, call.Pos()), + Location: location(pf.fset, call.Pos(), projectRoot), Remediation: "replace with os.CreateTemp(\"\", \"prefix-*\") which creates a uniquely-named temp file", }) } diff --git a/cyber/cyber_test.go b/cyber/cyber_test.go index 8327579..145bb63 100644 --- a/cyber/cyber_test.go +++ b/cyber/cyber_test.go @@ -66,6 +66,31 @@ func findingsForRule(findings []fusa.Finding, ruleID string) []fusa.Finding { return out } +// ─── §4 project-relative file paths ──────────────────────────────────────────── + +//fusa:test REQ-LOC-REL002 +func TestCyberFindings_LocationFileIsProjectRelative(t *testing.T) { + findings := runCyber(t, `package pkg +import "crypto/md5" +func HashIt(data []byte) []byte { return md5.New().Sum(data) } +`) + matches := findingsForRule(findings, "CYBER001") + if len(matches) == 0 { + t.Fatal("expected at least one CYBER001 finding") + } + for _, f := range matches { + if filepath.IsAbs(f.Location.File) { + t.Errorf("Location.File = %q, want a project-relative path (§4 MUST)", f.Location.File) + } + if strings.Contains(f.Location.File, "\\") { + t.Errorf("Location.File = %q, want forward-slash separators", f.Location.File) + } + } + if matches[0].Location.File != "pkg/code.go" { + t.Errorf("Location.File = %q, want %q", matches[0].Location.File, "pkg/code.go") + } +} + // ─── CYBER001: weak hash ────────────────────────────────────────────────────── //fusa:test REQ-CYBER001 diff --git a/docs/tool-safety-manual.md b/docs/tool-safety-manual.md index 2123275..d114963 100644 --- a/docs/tool-safety-manual.md +++ b/docs/tool-safety-manual.md @@ -1,6 +1,6 @@ # go-FuSa Tool Safety Manual -**Version:** 0.37.0 +**Version:** 0.40.0 **Module:** `github.com/SoundMatt/go-FuSa` **License:** Mozilla Public License 2.0 **Standards addressed:** ISO 26262, IEC 61508, ISO 21434, DO-178C diff --git a/fmea.csv b/fmea.csv index 0f22741..a6e7d51 100644 --- a/fmea.csv +++ b/fmea.csv @@ -1,462 +1,463 @@ Component,Function,FailureModes,Effects,Severity,DetectionControl,RequirementIDs,CyberRisks -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA002, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA004, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA003, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA009, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA006, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA007, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA005, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA008, -analyze,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ANA001, -auditpack,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -auditpack,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -auditpack,Pack,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-AUDIT001; REQ-AUDIT002; REQ-AUDIT004, -auditpack,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-AUDIT003, -badge,New,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-BADGE001, -badge,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-BADGE002, -boundary,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -boundary,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -boundary,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-BOUNDARY003; REQ-BOUNDARY004, -boundary,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-BOUNDARY005, -boundary,Scan,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-BOUNDARY001; REQ-BOUNDARY002, -comp,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-COMP-ASSESS002, -comp,Complexity,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-COMP001, -comp,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -comp,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -comp,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-COMP001, -comp,ThresholdForDAL,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-COMP-ASSESS001, -config,Default,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-CFG005, -config,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-CFG001, -config,Save,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-CFG006; REQ-CFG009, -config,UnmarshalJSON,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-CFG009, -config,Validate,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-CFG003, -coupling,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -coupling,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -coupling,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -coupling,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -coupling,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -coupling,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -coupling,NewControlCouplingRule,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-COUPLING002, -coupling,NewDataCouplingRule,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-COUPLING001, -coupling,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-COUP002, -coupling,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-COUPLING003, -coupling,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-COUP001, -coupling,SaveReport,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-COUPLING003, -coverage,Analyse,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-COV001, -coverage,BuildFromFile,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-COV002, -coverage,IsCovered,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-COV015, -coverage,Parse,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-COV002, -coverage,ParseMCDC,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-COV015, -coverage,ParseMCDCFile,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-COV015, -coverage,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-COV003, -coverage,RunMutation,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-COV016, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER013, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER014, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER011, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER001, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER017, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER012, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER010, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER004, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER019, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER009, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER005, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER006, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER002, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER018, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER015, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER008, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER020, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER016, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER007, -cyber,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-CYBER003, -cyber,Scan,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-CYBER001, -diff,Compare,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-DIFF001, -diff,LoadReport,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-DIFF002, -diff,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-DIFF003, -disposition,Add,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-DISP006, -disposition,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -disposition,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -disposition,IsDispositioned,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-DISP007, -disposition,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-DISP004, -disposition,RenderEntries,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-DISP009, -disposition,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-DISP008, -disposition,Save,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-DISP005, -do178,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-DO178-001, -do178,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-DO178-003, -engine,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,HasErrors,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-ENG003, -engine,HasWarnings,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-ENG010, -engine,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -engine,MustRegister,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-ENG004, -engine,NewRegistry,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-ENG001, -engine,Register,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-ENG008, -engine,Rules,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-ENG009, -engine,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-FUSA005, -engine,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ENG011, -engine,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-FUSA002, -engine,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-FUSA004, -engine,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-FUSA003, -engine,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-FUSA001, -engine,RunFilter,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ENG007, -fmea,CountProjectFunctions,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-FMEA009, -fmea,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -fmea,EnrichWithCyber,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-FMEA006, -fmea,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -fmea,LoadReport,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-FMEA010, -fmea,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-FMEA004, -fmea,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-FMEA005, -fmea,Scan,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-FMEA001; REQ-FMEA002; REQ-FMEA003, -gapreport,AddObjective,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-GAPREPORT004, -gapreport,New,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-GAPREPORT003, -gapreport,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-GAPREPORT002, -go-FuSa (fusa),AttestationContentHash,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-ATT003, -go-FuSa (fusa),AttestationValid,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-ATT002, -go-FuSa (fusa),CanonicalizeJSON,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-ATT004, -go-FuSa (fusa),ComputeFingerprint,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-FP001, -go-FuSa (fusa),DeriveCategory,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-CAT001, -go-FuSa (fusa),NowRFC3339,Incorrect output,Incorrect system behavior,low,unit tests,, -go-FuSa (fusa),ResolveDoc,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-DOC001, -go-FuSa (fusa),SchemaVersion,Incorrect output,Incorrect system behavior,low,unit tests,, -go-FuSa (fusa),String,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,BuildCompleteness,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-HARA017, -hara,BuildReport,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-HARA021, -hara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,DetermineASIL,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-HARA006, -hara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -hara,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-HARA007, -hara,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-HARA010, -hara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-HARA014, -hara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-HARA020, -hara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-HARA012, -hara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-HARA015, -hara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-HARA011, -hara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-HARA013, -hara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-HARA019, -hara,Save,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-HARA008, -hara,Validate,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-HARA009, -hara,ValidateReqRefs,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-HARA018, -iec61508,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-IEC61508-001, -iec61508,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iec61508,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iec61508,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-IEC61508-003, -iec61508,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-IEC61508-004, -iec62443,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-IEC62443-ASSESS003, -iec62443,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iec62443,LoadConfig,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-IEC62443-001, -iec62443,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-IEC62443-ASSESS004, -iec62443,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-IEC62443-002, -iec62443,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-IEC62443-003, -iec62443,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-IEC62443-004, -iec62443,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-IEC62443-001, -impact,Analyse,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-IMPACT001, -impact,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-IMPACT005, -iso21434,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-ISO21434-002, -iso21434,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iso21434,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iso21434,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-ISO21434-003, -iso21434,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ISO21434-001, -iso26262,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-ISO26262-001, -iso26262,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iso26262,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iso26262,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -iso26262,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iso26262,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iso26262,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -iso26262,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-ISO26262-003, -iso26262,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ISO26262-006, -iso26262,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ISO26262-005, -iso26262,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-ISO26262-004, -lint,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -lint,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-LINT002, -lint,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-LINT005, -lint,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-LINT003, -lint,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-LINT001, -lint,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-LINT006, -lint,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-LINT004, -metrics,Append,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-METRICS005, -metrics,Collect,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-METRICS006, -metrics,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-METRICS003, -metrics,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-METRICS007, -metrics,Save,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-METRICS004, -misra,Assess,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-MISRA004, -misra,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-MISRA005, -pr,Add,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-PR003, -pr,Close,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-PR004, -pr,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -pr,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -pr,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-PR001, -pr,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-PR003, -pr,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-PR001, -pr,Save,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-PR002, -qualify,BuiltinCases,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-QUALIFY006, -qualify,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -qualify,HasFailures,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-QUALIFY009, -qualify,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -qualify,IndependenceStatus,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-QUALIFY008, -qualify,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-QUALIFY005, -qualify,QualificationBadge,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-QUALIFY007, -qualify,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-QUALIFY001, -qualify,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-QUALIFY001, -qualify,Save,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-QUALIFY004, -release,BuildManifest,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-RELEASE008, -release,BuildProvenance,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-RELEASE005, -release,BuildSBOM,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-RELEASE003, -release,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -release,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -release,DetectBuilder,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RELEASE010, -release,HashFiles,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-RELEASE007, -release,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -release,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -release,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-RELEASE001, -release,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-RELEASE002, -release,SaveJSON,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-RELEASE006, -release,ToSPDX22,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RELEASE009, -release,ToSPDX23,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RELEASE009, -release,ToSPDX31,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RELEASE008, -report,New,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RPT003; REQ-NF002, -report,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REPORT001, -report,RenderEvidenceHTML,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-HTML004, -report,RenderHTML,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-HTML001; REQ-HTML003, -report,RenderToFile,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REPORT002, -runtime,Beat,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME012, -runtime,Clear,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME018, -runtime,Count,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME021, -runtime,Count,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME019, -runtime,Diagnostics,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME017, -runtime,IsRunning,Uncontrolled execution,Resource exhaustion,high,requirement testing + unit tests,REQ-RUNTIME009, -runtime,IsRunning,Uncontrolled execution,Resource exhaustion,high,requirement testing + unit tests,REQ-RUNTIME013, -runtime,Kick,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME008, -runtime,NewDiagManager,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME004, -runtime,NewFaultMonitor,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME005, -runtime,NewHeartbeat,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME002, -runtime,NewStateManager,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME003, -runtime,NewWatchdog,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME001, -runtime,Record,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME015, -runtime,Record,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME016, -runtime,Reset,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME020, -runtime,SetThreshold,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME014, -runtime,Start,Returns unexpected error; Goroutine not terminated,Silent failure propagated to caller; Memory leak or deadlock,high,requirement testing + unit tests,REQ-RUNTIME010, -runtime,Start,Returns unexpected error; Goroutine not terminated,Silent failure propagated to caller; Memory leak or deadlock,high,requirement testing + unit tests,REQ-RUNTIME006, -runtime,State,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME022, -runtime,Stop,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME007, -runtime,Stop,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-RUNTIME011, -runtime,String,Incorrect output,Incorrect system behavior,low,unit tests,, -runtime,String,Incorrect output,Incorrect system behavior,low,unit tests,, -runtime,Transition,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-RUNTIME023, -safetycase,Build,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SC001, -safetycase,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -safetycase,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -safetycase,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SC009, -safetycase,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SC003, -safetycase,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-SAFETYCASE001, -sarif,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SARIF001; REQ-SARIF002, -sas,Build,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SAS001, -sas,LoadReport,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SAS006, -sas,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SAS003, -sci,Build,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SCI001, -sci,LoadReport,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SCI005, -sci,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SCI003, -sci,SaveJSON,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-SCI002, -slsa,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SLSA-ASSESS003, -slsa,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -slsa,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -slsa,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -slsa,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -slsa,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -slsa,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -slsa,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-SLSA-ASSESS004, -slsa,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-SLSA001, -slsa,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-SLSA002, -slsa,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-SLSA003, -stubcheck,AttestationSuppresses,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB012, -stubcheck,BlanketFallbackFinding,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB004, -stubcheck,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -stubcheck,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -stubcheck,FmeaFields,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB006, -stubcheck,HaraFields,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB005, -stubcheck,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -stubcheck,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -stubcheck,PlaceholderFinding,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB003, -stubcheck,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-STUB011, -stubcheck,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-STUB010, -stubcheck,SafetyCaseFields,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB008, -stubcheck,SasFields,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB009, -stubcheck,ScanBlanketFallback,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB002, -stubcheck,ScanPlaceholders,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB001, -stubcheck,TaraFields,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-STUB007, -tara,CountProjectFiles,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TARA008, -tara,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -tara,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -tara,LoadReport,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TARA009, -tara,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TARA004, -tara,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TARA005, -tara,Scan,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TARA003, -template,Generate,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-CLI010, -testutil,GoSource,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-TESTUTIL003, -testutil,MinimalProject,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-TESTUTIL002, -testutil,ProjectDir,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-TESTUTIL001, -trace,Build,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TRACE002, -trace,ComputeHLRLLR,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-TRACE008, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ExportCodebeamer,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML004, -trace,ExportDOORS,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML002, -trace,ExportJama,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML006, -trace,ExportPolarion,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML008, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -trace,LoadRequirements,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TRACE001, -trace,ParseCodebeamer,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML003, -trace,ParseDOORS,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML001, -trace,ParseJama,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML005, -trace,ParsePolarion,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-REQXML007, -trace,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TRACE006, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TRACE010, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TRACE001, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TRACE006, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-REQQ003, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TRACE005, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TRACE007, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-REQQ002, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TRACE008, -trace,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-TRACE002, -trace,SaveRequirements,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-TRACE001, -trace,ScanFuncCoverage,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TRACE007, -trace,ScanFuncTagCoverage,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TRACE009, -trace,ScanTags,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-TRACE011, -unece,Assess,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-UNECE-002, -unece,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -unece,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -unece,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-UNECE-003, -unece,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-UNECE-001, -verify,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -verify,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -verify,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -verify,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -verify,Load,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-VERIFY007, -verify,New,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-VERIFY003, -verify,Parse,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-VERIFY004, -verify,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-VERIFY002, -verify,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-VERIFY001, -verify,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-VERIFY005, -verify,Save,Returns unexpected error; Partial write / data corruption,Silent failure propagated to caller; Incorrect system state,high,requirement testing + unit tests,REQ-VERIFY006, -verify,Summarise,Incorrect output,Incorrect system behavior,high,requirement testing + unit tests,REQ-VERIFY004, -vuln,Description,Incorrect output,Incorrect system behavior,low,unit tests,, -vuln,ID,Incorrect output,Incorrect system behavior,low,unit tests,, -vuln,ParseGoMod,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-VULN001, -vuln,Render,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-VULN005, -vuln,Run,Returns unexpected error; Uncontrolled execution,Silent failure propagated to caller; Resource exhaustion,high,requirement testing + unit tests,REQ-VULN003, -vuln,Scan,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-VULN001; REQ-VULN002, -vuln,ScanWithGovulncheck,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-VULN006, -vuln,ScanWithURL,Returns unexpected error,Silent failure propagated to caller,high,requirement testing + unit tests,REQ-VULN004, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Description,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,ID,analyze returns stale or inconsistent receiver state,caller of analyze observes state that no longer reflects a concurrent mutation,low,unit tests,, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA002, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA004, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA003, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA009, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA006, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA007, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA005, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA008, +analyze,Run,analyze returns an unexpected error; uncontrolled execution in analyze,silent failure propagated to analyze's caller; resource exhaustion triggered from analyze,high,requirement testing + unit tests,REQ-ANA001, +auditpack,Description,auditpack returns stale or inconsistent receiver state,caller of auditpack observes state that no longer reflects a concurrent mutation,low,unit tests,, +auditpack,ID,auditpack returns stale or inconsistent receiver state,caller of auditpack observes state that no longer reflects a concurrent mutation,low,unit tests,, +auditpack,Pack,auditpack returns an unexpected error,silent failure propagated to auditpack's caller,high,requirement testing + unit tests,REQ-AUDIT001; REQ-AUDIT002; REQ-AUDIT004, +auditpack,Run,auditpack returns an unexpected error; uncontrolled execution in auditpack,silent failure propagated to auditpack's caller; resource exhaustion triggered from auditpack,high,requirement testing + unit tests,REQ-AUDIT003, +badge,New,badge produces incorrect output for a given input combination,incorrect system behavior from badge,high,requirement testing + unit tests,REQ-BADGE001, +badge,Render,badge returns an unexpected error,silent failure propagated to badge's caller,high,requirement testing + unit tests,REQ-BADGE002, +boundary,Description,boundary returns stale or inconsistent receiver state,caller of boundary observes state that no longer reflects a concurrent mutation,low,unit tests,, +boundary,ID,boundary returns stale or inconsistent receiver state,caller of boundary observes state that no longer reflects a concurrent mutation,low,unit tests,, +boundary,Render,boundary returns an unexpected error,silent failure propagated to boundary's caller,high,requirement testing + unit tests,REQ-BOUNDARY003; REQ-BOUNDARY004, +boundary,Run,boundary returns an unexpected error; uncontrolled execution in boundary,silent failure propagated to boundary's caller; resource exhaustion triggered from boundary,high,requirement testing + unit tests,REQ-BOUNDARY005, +boundary,Scan,boundary returns an unexpected error,silent failure propagated to boundary's caller,high,requirement testing + unit tests,REQ-BOUNDARY001; REQ-BOUNDARY002, +comp,Assess,comp returns an unexpected error,silent failure propagated to comp's caller,high,requirement testing + unit tests,REQ-COMP-ASSESS002, +comp,Complexity,comp produces incorrect output for a given input combination,incorrect system behavior from comp,high,requirement testing + unit tests,REQ-COMP001, +comp,Description,comp returns stale or inconsistent receiver state,caller of comp observes state that no longer reflects a concurrent mutation,low,unit tests,, +comp,ID,comp returns stale or inconsistent receiver state,caller of comp observes state that no longer reflects a concurrent mutation,low,unit tests,, +comp,Run,comp returns an unexpected error; uncontrolled execution in comp,silent failure propagated to comp's caller; resource exhaustion triggered from comp,high,requirement testing + unit tests,REQ-COMP001, +comp,ThresholdForDAL,comp produces incorrect output for a given input combination,incorrect system behavior from comp,high,requirement testing + unit tests,REQ-COMP-ASSESS001, +config,Default,config produces incorrect output for a given input combination,incorrect system behavior from config,high,requirement testing + unit tests,REQ-CFG005, +config,Load,config returns an unexpected error,silent failure propagated to config's caller,high,requirement testing + unit tests,REQ-CFG001, +config,Save,config returns an unexpected error; partial write / data corruption in config,silent failure propagated to config's caller; incorrect persisted state for config,high,requirement testing + unit tests,REQ-CFG006; REQ-CFG009, +config,UnmarshalJSON,config returns an unexpected error,silent failure propagated to config's caller,high,requirement testing + unit tests,REQ-CFG009, +config,Validate,config returns an unexpected error,silent failure propagated to config's caller,high,requirement testing + unit tests,REQ-CFG003, +coupling,Description,coupling returns stale or inconsistent receiver state,caller of coupling observes state that no longer reflects a concurrent mutation,low,unit tests,, +coupling,Description,coupling returns stale or inconsistent receiver state,caller of coupling observes state that no longer reflects a concurrent mutation,low,unit tests,, +coupling,Description,coupling returns stale or inconsistent receiver state,caller of coupling observes state that no longer reflects a concurrent mutation,low,unit tests,, +coupling,ID,coupling returns stale or inconsistent receiver state,caller of coupling observes state that no longer reflects a concurrent mutation,low,unit tests,, +coupling,ID,coupling returns stale or inconsistent receiver state,caller of coupling observes state that no longer reflects a concurrent mutation,low,unit tests,, +coupling,ID,coupling returns stale or inconsistent receiver state,caller of coupling observes state that no longer reflects a concurrent mutation,low,unit tests,, +coupling,NewControlCouplingRule,coupling produces incorrect output with no input to validate against,incorrect system behavior from coupling,high,requirement testing + unit tests,REQ-COUPLING002, +coupling,NewDataCouplingRule,coupling produces incorrect output with no input to validate against,incorrect system behavior from coupling,high,requirement testing + unit tests,REQ-COUPLING001, +coupling,Run,coupling returns an unexpected error; uncontrolled execution in coupling,silent failure propagated to coupling's caller; resource exhaustion triggered from coupling,high,requirement testing + unit tests,REQ-COUP002, +coupling,Run,coupling returns an unexpected error; uncontrolled execution in coupling,silent failure propagated to coupling's caller; resource exhaustion triggered from coupling,high,requirement testing + unit tests,REQ-COUPLING003, +coupling,Run,coupling returns an unexpected error; uncontrolled execution in coupling,silent failure propagated to coupling's caller; resource exhaustion triggered from coupling,high,requirement testing + unit tests,REQ-COUP001, +coupling,SaveReport,coupling returns an unexpected error; partial write / data corruption in coupling,silent failure propagated to coupling's caller; incorrect persisted state for coupling,high,requirement testing + unit tests,REQ-COUPLING003, +coverage,Analyse,coverage produces incorrect output for a given input combination,incorrect system behavior from coverage,high,requirement testing + unit tests,REQ-COV001, +coverage,BuildFromFile,coverage returns an unexpected error,silent failure propagated to coverage's caller,high,requirement testing + unit tests,REQ-COV002, +coverage,IsCovered,coverage returns stale or inconsistent receiver state,caller of coverage observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-COV015, +coverage,Parse,coverage returns an unexpected error,silent failure propagated to coverage's caller,high,requirement testing + unit tests,REQ-COV002, +coverage,ParseMCDC,coverage returns an unexpected error,silent failure propagated to coverage's caller,high,requirement testing + unit tests,REQ-COV015, +coverage,ParseMCDCFile,coverage returns an unexpected error,silent failure propagated to coverage's caller,high,requirement testing + unit tests,REQ-COV015, +coverage,Render,coverage returns an unexpected error,silent failure propagated to coverage's caller,high,requirement testing + unit tests,REQ-COV003, +coverage,RunMutation,coverage returns an unexpected error; uncontrolled execution in coverage,silent failure propagated to coverage's caller; resource exhaustion triggered from coverage,high,requirement testing + unit tests,REQ-COV016, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Description,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,ID,cyber returns stale or inconsistent receiver state,caller of cyber observes state that no longer reflects a concurrent mutation,low,unit tests,, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER013, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER014, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER011, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER001, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER017, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER012, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER010, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER004, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER019, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER009, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER005, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER006, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER002, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER018, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER015, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER008, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER020, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER016, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER007, +cyber,Run,cyber returns an unexpected error; uncontrolled execution in cyber,silent failure propagated to cyber's caller; resource exhaustion triggered from cyber,high,requirement testing + unit tests,REQ-CYBER003, +cyber,Scan,cyber returns an unexpected error,silent failure propagated to cyber's caller,high,requirement testing + unit tests,REQ-CYBER001, +diff,Compare,diff produces incorrect output for a given input combination,incorrect system behavior from diff,high,requirement testing + unit tests,REQ-DIFF001, +diff,LoadReport,diff returns an unexpected error,silent failure propagated to diff's caller,high,requirement testing + unit tests,REQ-DIFF002, +diff,Render,diff returns an unexpected error,silent failure propagated to diff's caller,high,requirement testing + unit tests,REQ-DIFF003, +disposition,Add,disposition produces incorrect output for a given input combination,incorrect system behavior from disposition,high,requirement testing + unit tests,REQ-DISP006, +disposition,Description,disposition returns stale or inconsistent receiver state,caller of disposition observes state that no longer reflects a concurrent mutation,low,unit tests,, +disposition,ID,disposition returns stale or inconsistent receiver state,caller of disposition observes state that no longer reflects a concurrent mutation,low,unit tests,, +disposition,IsDispositioned,disposition produces incorrect output for a given input combination,incorrect system behavior from disposition,high,requirement testing + unit tests,REQ-DISP007, +disposition,Load,disposition returns an unexpected error,silent failure propagated to disposition's caller,high,requirement testing + unit tests,REQ-DISP004, +disposition,RenderEntries,disposition returns an unexpected error,silent failure propagated to disposition's caller,high,requirement testing + unit tests,REQ-DISP009, +disposition,Run,disposition returns an unexpected error; uncontrolled execution in disposition,silent failure propagated to disposition's caller; resource exhaustion triggered from disposition,high,requirement testing + unit tests,REQ-DISP008, +disposition,Save,disposition returns an unexpected error; partial write / data corruption in disposition,silent failure propagated to disposition's caller; incorrect persisted state for disposition,high,requirement testing + unit tests,REQ-DISP005, +do178,Assess,do178 returns an unexpected error,silent failure propagated to do178's caller,high,requirement testing + unit tests,REQ-DO178-001, +do178,Render,do178 returns an unexpected error,silent failure propagated to do178's caller,high,requirement testing + unit tests,REQ-DO178-003, +engine,Description,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,Description,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,Description,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,Description,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,Description,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,HasErrors,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-ENG003, +engine,HasWarnings,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-ENG010, +engine,ID,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,ID,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,ID,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,ID,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,ID,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,low,unit tests,, +engine,MustRegister,engine derives incorrect output from receiver and argument state,incorrect system behavior from engine,high,requirement testing + unit tests,REQ-ENG004, +engine,NewRegistry,engine produces incorrect output with no input to validate against,incorrect system behavior from engine,high,requirement testing + unit tests,REQ-ENG001, +engine,Register,engine returns an unexpected error,silent failure propagated to engine's caller,high,requirement testing + unit tests,REQ-ENG008, +engine,Rules,engine returns stale or inconsistent receiver state,caller of engine observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-ENG009, +engine,Run,engine returns an unexpected error; uncontrolled execution in engine,silent failure propagated to engine's caller; resource exhaustion triggered from engine,high,requirement testing + unit tests,REQ-FUSA005, +engine,Run,engine returns an unexpected error; uncontrolled execution in engine,silent failure propagated to engine's caller; resource exhaustion triggered from engine,high,requirement testing + unit tests,REQ-ENG011, +engine,Run,engine returns an unexpected error; uncontrolled execution in engine,silent failure propagated to engine's caller; resource exhaustion triggered from engine,high,requirement testing + unit tests,REQ-FUSA002, +engine,Run,engine returns an unexpected error; uncontrolled execution in engine,silent failure propagated to engine's caller; resource exhaustion triggered from engine,high,requirement testing + unit tests,REQ-FUSA004, +engine,Run,engine returns an unexpected error; uncontrolled execution in engine,silent failure propagated to engine's caller; resource exhaustion triggered from engine,high,requirement testing + unit tests,REQ-FUSA003, +engine,Run,engine returns an unexpected error; uncontrolled execution in engine,silent failure propagated to engine's caller; resource exhaustion triggered from engine,high,requirement testing + unit tests,REQ-FUSA001, +engine,RunFilter,engine returns an unexpected error; uncontrolled execution in engine,silent failure propagated to engine's caller; resource exhaustion triggered from engine,high,requirement testing + unit tests,REQ-ENG007, +fmea,CountProjectFunctions,fmea returns an unexpected error,silent failure propagated to fmea's caller,high,requirement testing + unit tests,REQ-FMEA009, +fmea,Description,fmea returns stale or inconsistent receiver state,caller of fmea observes state that no longer reflects a concurrent mutation,low,unit tests,, +fmea,EnrichWithCyber,fmea produces incorrect output for a given input combination,incorrect system behavior from fmea,high,requirement testing + unit tests,REQ-FMEA006, +fmea,ID,fmea returns stale or inconsistent receiver state,caller of fmea observes state that no longer reflects a concurrent mutation,low,unit tests,, +fmea,LoadReport,fmea returns an unexpected error,silent failure propagated to fmea's caller,high,requirement testing + unit tests,REQ-FMEA010, +fmea,Render,fmea returns an unexpected error,silent failure propagated to fmea's caller,high,requirement testing + unit tests,REQ-FMEA004, +fmea,Run,fmea returns an unexpected error; uncontrolled execution in fmea,silent failure propagated to fmea's caller; resource exhaustion triggered from fmea,high,requirement testing + unit tests,REQ-FMEA005, +fmea,Scan,fmea returns an unexpected error,silent failure propagated to fmea's caller,high,requirement testing + unit tests,REQ-FMEA001; REQ-FMEA002; REQ-FMEA003, +gapreport,AddObjective,gapreport derives incorrect output from receiver and argument state,incorrect system behavior from gapreport,high,requirement testing + unit tests,REQ-GAPREPORT004, +gapreport,New,gapreport produces incorrect output for a given input combination,incorrect system behavior from gapreport,high,requirement testing + unit tests,REQ-GAPREPORT003, +gapreport,Render,gapreport returns an unexpected error,silent failure propagated to gapreport's caller,high,requirement testing + unit tests,REQ-GAPREPORT002, +go-FuSa (fusa),AttestationContentHash,go-FuSa (fusa) returns an unexpected error,silent failure propagated to go-FuSa (fusa)'s caller,high,requirement testing + unit tests,REQ-ATT003, +go-FuSa (fusa),AttestationValid,go-FuSa (fusa) produces incorrect output for a given input combination,incorrect system behavior from go-FuSa (fusa),high,requirement testing + unit tests,REQ-ATT002, +go-FuSa (fusa),CanonicalizeJSON,go-FuSa (fusa) returns an unexpected error,silent failure propagated to go-FuSa (fusa)'s caller,high,requirement testing + unit tests,REQ-ATT004, +go-FuSa (fusa),ComputeFingerprint,go-FuSa (fusa) produces incorrect output for a given input combination,incorrect system behavior from go-FuSa (fusa),high,requirement testing + unit tests,REQ-FP001, +go-FuSa (fusa),DeriveCategory,go-FuSa (fusa) produces incorrect output for a given input combination,incorrect system behavior from go-FuSa (fusa),high,requirement testing + unit tests,REQ-CAT001, +go-FuSa (fusa),NowRFC3339,go-FuSa (fusa) produces incorrect output with no input to validate against,incorrect system behavior from go-FuSa (fusa),low,unit tests,, +go-FuSa (fusa),ResolveDoc,go-FuSa (fusa) produces incorrect output for a given input combination,incorrect system behavior from go-FuSa (fusa),high,requirement testing + unit tests,REQ-DOC001, +go-FuSa (fusa),SchemaVersion,go-FuSa (fusa) produces incorrect output with no input to validate against,incorrect system behavior from go-FuSa (fusa),low,unit tests,, +go-FuSa (fusa),String,go-FuSa (fusa) returns stale or inconsistent receiver state,caller of go-FuSa (fusa) observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,BuildCompleteness,hara produces incorrect output for a given input combination,incorrect system behavior from hara,high,requirement testing + unit tests,REQ-HARA017, +hara,BuildReport,hara produces incorrect output for a given input combination,incorrect system behavior from hara,high,requirement testing + unit tests,REQ-HARA021, +hara,Description,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,Description,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,Description,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,Description,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,Description,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,Description,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,Description,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,DetermineASIL,hara produces incorrect output for a given input combination,incorrect system behavior from hara,high,requirement testing + unit tests,REQ-HARA006, +hara,ID,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,ID,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,ID,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,ID,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,ID,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,ID,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,ID,hara returns stale or inconsistent receiver state,caller of hara observes state that no longer reflects a concurrent mutation,low,unit tests,, +hara,Load,hara returns an unexpected error,silent failure propagated to hara's caller,high,requirement testing + unit tests,REQ-HARA007, +hara,Render,hara returns an unexpected error,silent failure propagated to hara's caller,high,requirement testing + unit tests,REQ-HARA010, +hara,Run,hara returns an unexpected error; uncontrolled execution in hara,silent failure propagated to hara's caller; resource exhaustion triggered from hara,high,requirement testing + unit tests,REQ-HARA014, +hara,Run,hara returns an unexpected error; uncontrolled execution in hara,silent failure propagated to hara's caller; resource exhaustion triggered from hara,high,requirement testing + unit tests,REQ-HARA020, +hara,Run,hara returns an unexpected error; uncontrolled execution in hara,silent failure propagated to hara's caller; resource exhaustion triggered from hara,high,requirement testing + unit tests,REQ-HARA012, +hara,Run,hara returns an unexpected error; uncontrolled execution in hara,silent failure propagated to hara's caller; resource exhaustion triggered from hara,high,requirement testing + unit tests,REQ-HARA015, +hara,Run,hara returns an unexpected error; uncontrolled execution in hara,silent failure propagated to hara's caller; resource exhaustion triggered from hara,high,requirement testing + unit tests,REQ-HARA011, +hara,Run,hara returns an unexpected error; uncontrolled execution in hara,silent failure propagated to hara's caller; resource exhaustion triggered from hara,high,requirement testing + unit tests,REQ-HARA013, +hara,Run,hara returns an unexpected error; uncontrolled execution in hara,silent failure propagated to hara's caller; resource exhaustion triggered from hara,high,requirement testing + unit tests,REQ-HARA019, +hara,Save,hara returns an unexpected error; partial write / data corruption in hara,silent failure propagated to hara's caller; incorrect persisted state for hara,high,requirement testing + unit tests,REQ-HARA008, +hara,Validate,hara produces incorrect output for a given input combination,incorrect system behavior from hara,high,requirement testing + unit tests,REQ-HARA009, +hara,ValidateReqRefs,hara produces incorrect output for a given input combination,incorrect system behavior from hara,high,requirement testing + unit tests,REQ-HARA018, +iec61508,Assess,iec61508 returns an unexpected error,silent failure propagated to iec61508's caller,high,requirement testing + unit tests,REQ-IEC61508-001, +iec61508,Description,iec61508 returns stale or inconsistent receiver state,caller of iec61508 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec61508,ID,iec61508 returns stale or inconsistent receiver state,caller of iec61508 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec61508,Render,iec61508 returns an unexpected error,silent failure propagated to iec61508's caller,high,requirement testing + unit tests,REQ-IEC61508-003, +iec61508,Run,iec61508 returns an unexpected error; uncontrolled execution in iec61508,silent failure propagated to iec61508's caller; resource exhaustion triggered from iec61508,high,requirement testing + unit tests,REQ-IEC61508-004, +iec62443,Assess,iec62443 returns an unexpected error,silent failure propagated to iec62443's caller,high,requirement testing + unit tests,REQ-IEC62443-ASSESS003, +iec62443,Description,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,Description,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,Description,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,Description,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,ID,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,ID,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,ID,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,ID,iec62443 returns stale or inconsistent receiver state,caller of iec62443 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iec62443,LoadConfig,iec62443 returns an unexpected error,silent failure propagated to iec62443's caller,high,requirement testing + unit tests,REQ-IEC62443-001, +iec62443,Render,iec62443 returns an unexpected error,silent failure propagated to iec62443's caller,high,requirement testing + unit tests,REQ-IEC62443-ASSESS004, +iec62443,Run,iec62443 returns an unexpected error; uncontrolled execution in iec62443,silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443,high,requirement testing + unit tests,REQ-IEC62443-002, +iec62443,Run,iec62443 returns an unexpected error; uncontrolled execution in iec62443,silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443,high,requirement testing + unit tests,REQ-IEC62443-003, +iec62443,Run,iec62443 returns an unexpected error; uncontrolled execution in iec62443,silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443,high,requirement testing + unit tests,REQ-IEC62443-004, +iec62443,Run,iec62443 returns an unexpected error; uncontrolled execution in iec62443,silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443,high,requirement testing + unit tests,REQ-IEC62443-001, +impact,Analyse,impact returns an unexpected error,silent failure propagated to impact's caller,high,requirement testing + unit tests,REQ-IMPACT001, +impact,Render,impact returns an unexpected error,silent failure propagated to impact's caller,high,requirement testing + unit tests,REQ-IMPACT005, +iso21434,Assess,iso21434 returns an unexpected error,silent failure propagated to iso21434's caller,high,requirement testing + unit tests,REQ-ISO21434-002, +iso21434,Description,iso21434 returns stale or inconsistent receiver state,caller of iso21434 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso21434,ID,iso21434 returns stale or inconsistent receiver state,caller of iso21434 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso21434,Render,iso21434 returns an unexpected error,silent failure propagated to iso21434's caller,high,requirement testing + unit tests,REQ-ISO21434-003, +iso21434,Run,iso21434 returns an unexpected error; uncontrolled execution in iso21434,silent failure propagated to iso21434's caller; resource exhaustion triggered from iso21434,high,requirement testing + unit tests,REQ-ISO21434-001, +iso26262,Assess,iso26262 returns an unexpected error,silent failure propagated to iso26262's caller,high,requirement testing + unit tests,REQ-ISO26262-001, +iso26262,Description,iso26262 returns stale or inconsistent receiver state,caller of iso26262 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso26262,Description,iso26262 returns stale or inconsistent receiver state,caller of iso26262 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso26262,Description,iso26262 returns stale or inconsistent receiver state,caller of iso26262 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso26262,ID,iso26262 returns stale or inconsistent receiver state,caller of iso26262 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso26262,ID,iso26262 returns stale or inconsistent receiver state,caller of iso26262 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso26262,ID,iso26262 returns stale or inconsistent receiver state,caller of iso26262 observes state that no longer reflects a concurrent mutation,low,unit tests,, +iso26262,Render,iso26262 returns an unexpected error,silent failure propagated to iso26262's caller,high,requirement testing + unit tests,REQ-ISO26262-003, +iso26262,Run,iso26262 returns an unexpected error; uncontrolled execution in iso26262,silent failure propagated to iso26262's caller; resource exhaustion triggered from iso26262,high,requirement testing + unit tests,REQ-ISO26262-006, +iso26262,Run,iso26262 returns an unexpected error; uncontrolled execution in iso26262,silent failure propagated to iso26262's caller; resource exhaustion triggered from iso26262,high,requirement testing + unit tests,REQ-ISO26262-005, +iso26262,Run,iso26262 returns an unexpected error; uncontrolled execution in iso26262,silent failure propagated to iso26262's caller; resource exhaustion triggered from iso26262,high,requirement testing + unit tests,REQ-ISO26262-004, +lint,Description,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,Description,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,Description,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,Description,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,Description,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,Description,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,ID,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,ID,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,ID,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,ID,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,ID,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,ID,lint returns stale or inconsistent receiver state,caller of lint observes state that no longer reflects a concurrent mutation,low,unit tests,, +lint,Run,lint returns an unexpected error; uncontrolled execution in lint,silent failure propagated to lint's caller; resource exhaustion triggered from lint,high,requirement testing + unit tests,REQ-LINT002, +lint,Run,lint returns an unexpected error; uncontrolled execution in lint,silent failure propagated to lint's caller; resource exhaustion triggered from lint,high,requirement testing + unit tests,REQ-LINT005, +lint,Run,lint returns an unexpected error; uncontrolled execution in lint,silent failure propagated to lint's caller; resource exhaustion triggered from lint,high,requirement testing + unit tests,REQ-LINT003, +lint,Run,lint returns an unexpected error; uncontrolled execution in lint,silent failure propagated to lint's caller; resource exhaustion triggered from lint,high,requirement testing + unit tests,REQ-LINT001, +lint,Run,lint returns an unexpected error; uncontrolled execution in lint,silent failure propagated to lint's caller; resource exhaustion triggered from lint,high,requirement testing + unit tests,REQ-LINT006, +lint,Run,lint returns an unexpected error; uncontrolled execution in lint,silent failure propagated to lint's caller; resource exhaustion triggered from lint,high,requirement testing + unit tests,REQ-LINT004, +metrics,Append,metrics produces incorrect output for a given input combination,incorrect system behavior from metrics,high,requirement testing + unit tests,REQ-METRICS005, +metrics,Collect,metrics returns an unexpected error,silent failure propagated to metrics's caller,high,requirement testing + unit tests,REQ-METRICS006, +metrics,Load,metrics returns an unexpected error,silent failure propagated to metrics's caller,high,requirement testing + unit tests,REQ-METRICS003, +metrics,Render,metrics returns an unexpected error,silent failure propagated to metrics's caller,high,requirement testing + unit tests,REQ-METRICS007, +metrics,Save,metrics returns an unexpected error; partial write / data corruption in metrics,silent failure propagated to metrics's caller; incorrect persisted state for metrics,high,requirement testing + unit tests,REQ-METRICS004, +misra,Assess,misra produces incorrect output with no input to validate against,incorrect system behavior from misra,high,requirement testing + unit tests,REQ-MISRA004, +misra,Render,misra returns an unexpected error,silent failure propagated to misra's caller,high,requirement testing + unit tests,REQ-MISRA005, +pr,Add,pr returns an unexpected error,silent failure propagated to pr's caller,high,requirement testing + unit tests,REQ-PR003, +pr,Close,pr returns an unexpected error,silent failure propagated to pr's caller,high,requirement testing + unit tests,REQ-PR004, +pr,Description,pr returns stale or inconsistent receiver state,caller of pr observes state that no longer reflects a concurrent mutation,low,unit tests,, +pr,ID,pr returns stale or inconsistent receiver state,caller of pr observes state that no longer reflects a concurrent mutation,low,unit tests,, +pr,Load,pr returns an unexpected error,silent failure propagated to pr's caller,high,requirement testing + unit tests,REQ-PR001, +pr,Render,pr returns an unexpected error,silent failure propagated to pr's caller,high,requirement testing + unit tests,REQ-PR003, +pr,Run,pr returns an unexpected error; uncontrolled execution in pr,silent failure propagated to pr's caller; resource exhaustion triggered from pr,high,requirement testing + unit tests,REQ-PR001, +pr,Save,pr returns an unexpected error; partial write / data corruption in pr,silent failure propagated to pr's caller; incorrect persisted state for pr,high,requirement testing + unit tests,REQ-PR002, +qualify,BuiltinCases,qualify produces incorrect output with no input to validate against,incorrect system behavior from qualify,high,requirement testing + unit tests,REQ-QUALIFY006, +qualify,Description,qualify returns stale or inconsistent receiver state,caller of qualify observes state that no longer reflects a concurrent mutation,low,unit tests,, +qualify,HasFailures,qualify returns stale or inconsistent receiver state,caller of qualify observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-QUALIFY009, +qualify,ID,qualify returns stale or inconsistent receiver state,caller of qualify observes state that no longer reflects a concurrent mutation,low,unit tests,, +qualify,IndependenceStatus,qualify returns stale or inconsistent receiver state,caller of qualify observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-QUALIFY008, +qualify,Load,qualify returns an unexpected error,silent failure propagated to qualify's caller,high,requirement testing + unit tests,REQ-QUALIFY005, +qualify,QualificationBadge,qualify returns stale or inconsistent receiver state,caller of qualify observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-QUALIFY007, +qualify,Run,qualify returns an unexpected error; uncontrolled execution in qualify,silent failure propagated to qualify's caller; resource exhaustion triggered from qualify,high,requirement testing + unit tests,REQ-QUALIFY001, +qualify,Run,qualify returns an unexpected error; uncontrolled execution in qualify,silent failure propagated to qualify's caller; resource exhaustion triggered from qualify,high,requirement testing + unit tests,REQ-QUALIFY001, +qualify,Save,qualify returns an unexpected error; partial write / data corruption in qualify,silent failure propagated to qualify's caller; incorrect persisted state for qualify,high,requirement testing + unit tests,REQ-QUALIFY004, +release,BuildManifest,release returns an unexpected error,silent failure propagated to release's caller,high,requirement testing + unit tests,REQ-RELEASE008, +release,BuildProvenance,release returns an unexpected error,silent failure propagated to release's caller,high,requirement testing + unit tests,REQ-RELEASE005, +release,BuildSBOM,release returns an unexpected error,silent failure propagated to release's caller,high,requirement testing + unit tests,REQ-RELEASE003, +release,Description,release returns stale or inconsistent receiver state,caller of release observes state that no longer reflects a concurrent mutation,low,unit tests,, +release,Description,release returns stale or inconsistent receiver state,caller of release observes state that no longer reflects a concurrent mutation,low,unit tests,, +release,DetectBuilder,release produces incorrect output for a given input combination,incorrect system behavior from release,high,requirement testing + unit tests,REQ-RELEASE010, +release,HashFiles,release returns an unexpected error,silent failure propagated to release's caller,high,requirement testing + unit tests,REQ-RELEASE007, +release,ID,release returns stale or inconsistent receiver state,caller of release observes state that no longer reflects a concurrent mutation,low,unit tests,, +release,ID,release returns stale or inconsistent receiver state,caller of release observes state that no longer reflects a concurrent mutation,low,unit tests,, +release,Run,release returns an unexpected error; uncontrolled execution in release,silent failure propagated to release's caller; resource exhaustion triggered from release,high,requirement testing + unit tests,REQ-RELEASE001, +release,Run,release returns an unexpected error; uncontrolled execution in release,silent failure propagated to release's caller; resource exhaustion triggered from release,high,requirement testing + unit tests,REQ-RELEASE002, +release,SaveJSON,release returns an unexpected error; partial write / data corruption in release,silent failure propagated to release's caller; incorrect persisted state for release,high,requirement testing + unit tests,REQ-RELEASE006, +release,ToSPDX22,release produces incorrect output for a given input combination,incorrect system behavior from release,high,requirement testing + unit tests,REQ-RELEASE009, +release,ToSPDX23,release produces incorrect output for a given input combination,incorrect system behavior from release,high,requirement testing + unit tests,REQ-RELEASE009, +release,ToSPDX31,release produces incorrect output for a given input combination,incorrect system behavior from release,high,requirement testing + unit tests,REQ-RELEASE008, +report,New,report produces incorrect output for a given input combination,incorrect system behavior from report,high,requirement testing + unit tests,REQ-RPT003; REQ-NF002, +report,Render,report returns an unexpected error,silent failure propagated to report's caller,high,requirement testing + unit tests,REQ-REPORT001, +report,RenderEvidenceHTML,report returns an unexpected error,silent failure propagated to report's caller,high,requirement testing + unit tests,REQ-HTML004, +report,RenderHTML,report returns an unexpected error,silent failure propagated to report's caller,high,requirement testing + unit tests,REQ-HTML001; REQ-HTML003, +report,RenderToFile,report returns an unexpected error,silent failure propagated to report's caller,high,requirement testing + unit tests,REQ-REPORT002, +runtime,Beat,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME012, +runtime,Clear,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME018, +runtime,Count,runtime derives incorrect output from receiver and argument state,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME021, +runtime,Count,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME019, +runtime,Diagnostics,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME017, +runtime,IsRunning,uncontrolled execution in runtime,resource exhaustion triggered from runtime,high,requirement testing + unit tests,REQ-RUNTIME009, +runtime,IsRunning,uncontrolled execution in runtime,resource exhaustion triggered from runtime,high,requirement testing + unit tests,REQ-RUNTIME013, +runtime,Kick,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME008, +runtime,NewDiagManager,runtime produces incorrect output for a given input combination,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME004, +runtime,NewFaultMonitor,runtime produces incorrect output for a given input combination,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME005, +runtime,NewHeartbeat,runtime produces incorrect output for a given input combination,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME002, +runtime,NewStateManager,runtime produces incorrect output for a given input combination,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME003, +runtime,NewWatchdog,runtime produces incorrect output for a given input combination,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME001, +runtime,Record,runtime derives incorrect output from receiver and argument state,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME015, +runtime,Record,runtime derives incorrect output from receiver and argument state,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME016, +runtime,Reset,runtime derives incorrect output from receiver and argument state,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME020, +runtime,SetThreshold,runtime derives incorrect output from receiver and argument state,incorrect system behavior from runtime,high,requirement testing + unit tests,REQ-RUNTIME014, +runtime,Start,runtime returns an unexpected error; goroutine spawned in runtime not terminated,silent failure propagated to runtime's caller; memory leak or deadlock in runtime,high,requirement testing + unit tests,REQ-RUNTIME010, +runtime,Start,runtime returns an unexpected error; goroutine spawned in runtime not terminated,silent failure propagated to runtime's caller; memory leak or deadlock in runtime,high,requirement testing + unit tests,REQ-RUNTIME006, +runtime,State,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME022, +runtime,Stop,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME007, +runtime,Stop,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,high,requirement testing + unit tests,REQ-RUNTIME011, +runtime,String,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,low,unit tests,, +runtime,String,runtime returns stale or inconsistent receiver state,caller of runtime observes state that no longer reflects a concurrent mutation,low,unit tests,, +runtime,Transition,runtime returns an unexpected error,silent failure propagated to runtime's caller,high,requirement testing + unit tests,REQ-RUNTIME023, +safetycase,Build,safetycase returns an unexpected error,silent failure propagated to safetycase's caller,high,requirement testing + unit tests,REQ-SC001, +safetycase,Description,safetycase returns stale or inconsistent receiver state,caller of safetycase observes state that no longer reflects a concurrent mutation,low,unit tests,, +safetycase,ID,safetycase returns stale or inconsistent receiver state,caller of safetycase observes state that no longer reflects a concurrent mutation,low,unit tests,, +safetycase,Load,safetycase returns an unexpected error,silent failure propagated to safetycase's caller,high,requirement testing + unit tests,REQ-SC009, +safetycase,Render,safetycase returns an unexpected error,silent failure propagated to safetycase's caller,high,requirement testing + unit tests,REQ-SC003, +safetycase,Run,safetycase returns an unexpected error; uncontrolled execution in safetycase,silent failure propagated to safetycase's caller; resource exhaustion triggered from safetycase,high,requirement testing + unit tests,REQ-SAFETYCASE001, +sarif,Render,sarif returns an unexpected error,silent failure propagated to sarif's caller,high,requirement testing + unit tests,REQ-SARIF001; REQ-SARIF002, +sas,Build,sas returns an unexpected error,silent failure propagated to sas's caller,high,requirement testing + unit tests,REQ-SAS001, +sas,LoadReport,sas returns an unexpected error,silent failure propagated to sas's caller,high,requirement testing + unit tests,REQ-SAS006, +sas,Render,sas returns an unexpected error,silent failure propagated to sas's caller,high,requirement testing + unit tests,REQ-SAS003, +sci,Build,sci returns an unexpected error,silent failure propagated to sci's caller,high,requirement testing + unit tests,REQ-SCI001, +sci,LoadReport,sci returns an unexpected error,silent failure propagated to sci's caller,high,requirement testing + unit tests,REQ-SCI005, +sci,Render,sci returns an unexpected error,silent failure propagated to sci's caller,high,requirement testing + unit tests,REQ-SCI003, +sci,SaveJSON,sci returns an unexpected error; partial write / data corruption in sci,silent failure propagated to sci's caller; incorrect persisted state for sci,high,requirement testing + unit tests,REQ-SCI002, +slsa,Assess,slsa returns an unexpected error,silent failure propagated to slsa's caller,high,requirement testing + unit tests,REQ-SLSA-ASSESS003, +slsa,Description,slsa returns stale or inconsistent receiver state,caller of slsa observes state that no longer reflects a concurrent mutation,low,unit tests,, +slsa,Description,slsa returns stale or inconsistent receiver state,caller of slsa observes state that no longer reflects a concurrent mutation,low,unit tests,, +slsa,Description,slsa returns stale or inconsistent receiver state,caller of slsa observes state that no longer reflects a concurrent mutation,low,unit tests,, +slsa,ID,slsa returns stale or inconsistent receiver state,caller of slsa observes state that no longer reflects a concurrent mutation,low,unit tests,, +slsa,ID,slsa returns stale or inconsistent receiver state,caller of slsa observes state that no longer reflects a concurrent mutation,low,unit tests,, +slsa,ID,slsa returns stale or inconsistent receiver state,caller of slsa observes state that no longer reflects a concurrent mutation,low,unit tests,, +slsa,Render,slsa returns an unexpected error,silent failure propagated to slsa's caller,high,requirement testing + unit tests,REQ-SLSA-ASSESS004, +slsa,Run,slsa returns an unexpected error; uncontrolled execution in slsa,silent failure propagated to slsa's caller; resource exhaustion triggered from slsa,high,requirement testing + unit tests,REQ-SLSA002, +slsa,Run,slsa returns an unexpected error; uncontrolled execution in slsa,silent failure propagated to slsa's caller; resource exhaustion triggered from slsa,high,requirement testing + unit tests,REQ-SLSA001, +slsa,Run,slsa returns an unexpected error; uncontrolled execution in slsa,silent failure propagated to slsa's caller; resource exhaustion triggered from slsa,high,requirement testing + unit tests,REQ-SLSA003, +stubcheck,AttestationSuppresses,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB012, +stubcheck,BlanketFallbackFinding,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB004, +stubcheck,Description,stubcheck returns stale or inconsistent receiver state,caller of stubcheck observes state that no longer reflects a concurrent mutation,low,unit tests,, +stubcheck,Description,stubcheck returns stale or inconsistent receiver state,caller of stubcheck observes state that no longer reflects a concurrent mutation,low,unit tests,, +stubcheck,FmeaFields,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB006, +stubcheck,HaraFields,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB005, +stubcheck,ID,stubcheck returns stale or inconsistent receiver state,caller of stubcheck observes state that no longer reflects a concurrent mutation,low,unit tests,, +stubcheck,ID,stubcheck returns stale or inconsistent receiver state,caller of stubcheck observes state that no longer reflects a concurrent mutation,low,unit tests,, +stubcheck,PlaceholderFinding,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB003, +stubcheck,Run,stubcheck returns an unexpected error; uncontrolled execution in stubcheck,silent failure propagated to stubcheck's caller; resource exhaustion triggered from stubcheck,high,requirement testing + unit tests,REQ-STUB010, +stubcheck,Run,stubcheck returns an unexpected error; uncontrolled execution in stubcheck,silent failure propagated to stubcheck's caller; resource exhaustion triggered from stubcheck,high,requirement testing + unit tests,REQ-STUB011, +stubcheck,SafetyCaseFields,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB008, +stubcheck,SasFields,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB009, +stubcheck,ScanBlanketFallback,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB002, +stubcheck,ScanPlaceholders,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB001, +stubcheck,TaraFields,stubcheck produces incorrect output for a given input combination,incorrect system behavior from stubcheck,high,requirement testing + unit tests,REQ-STUB007, +tara,CountProjectFiles,tara returns an unexpected error,silent failure propagated to tara's caller,high,requirement testing + unit tests,REQ-TARA008, +tara,Description,tara returns stale or inconsistent receiver state,caller of tara observes state that no longer reflects a concurrent mutation,low,unit tests,, +tara,ID,tara returns stale or inconsistent receiver state,caller of tara observes state that no longer reflects a concurrent mutation,low,unit tests,, +tara,LoadReport,tara returns an unexpected error,silent failure propagated to tara's caller,high,requirement testing + unit tests,REQ-TARA009, +tara,Render,tara returns an unexpected error,silent failure propagated to tara's caller,high,requirement testing + unit tests,REQ-TARA004, +tara,Run,tara returns an unexpected error; uncontrolled execution in tara,silent failure propagated to tara's caller; resource exhaustion triggered from tara,high,requirement testing + unit tests,REQ-TARA005, +tara,Scan,tara returns an unexpected error,silent failure propagated to tara's caller,high,requirement testing + unit tests,REQ-TARA003, +template,Generate,template returns an unexpected error,silent failure propagated to template's caller,high,requirement testing + unit tests,REQ-CLI010, +testutil,GoSource,testutil produces incorrect output for a given input combination,incorrect system behavior from testutil,high,requirement testing + unit tests,REQ-TESTUTIL003, +testutil,MinimalProject,testutil produces incorrect output with no input to validate against,incorrect system behavior from testutil,high,requirement testing + unit tests,REQ-TESTUTIL002, +testutil,ProjectDir,testutil produces incorrect output for a given input combination,incorrect system behavior from testutil,high,requirement testing + unit tests,REQ-TESTUTIL001, +trace,Build,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-TRACE002, +trace,ComputeHLRLLR,trace produces incorrect output for a given input combination,incorrect system behavior from trace,high,requirement testing + unit tests,REQ-TRACE008, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,Description,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ExportCodebeamer,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML004, +trace,ExportDOORS,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML002, +trace,ExportJama,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML006, +trace,ExportPolarion,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML008, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,ID,trace returns stale or inconsistent receiver state,caller of trace observes state that no longer reflects a concurrent mutation,low,unit tests,, +trace,IsExcludedDir,trace produces incorrect output for a given input combination,incorrect system behavior from trace,high,requirement testing + unit tests,REQ-TRACE012, +trace,LoadRequirements,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-TRACE001, +trace,ParseCodebeamer,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML003, +trace,ParseDOORS,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML001, +trace,ParseJama,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML005, +trace,ParsePolarion,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-REQXML007, +trace,Render,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-TRACE006, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-REQQ003, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-TRACE010, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-TRACE006, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-REQQ002, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-TRACE005, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-TRACE007, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-TRACE002, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-TRACE008, +trace,Run,trace returns an unexpected error; uncontrolled execution in trace,silent failure propagated to trace's caller; resource exhaustion triggered from trace,high,requirement testing + unit tests,REQ-TRACE001, +trace,SaveRequirements,trace returns an unexpected error; partial write / data corruption in trace,silent failure propagated to trace's caller; incorrect persisted state for trace,high,requirement testing + unit tests,REQ-TRACE001, +trace,ScanFuncCoverage,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-TRACE007, +trace,ScanFuncTagCoverage,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-TRACE009, +trace,ScanTags,trace returns an unexpected error,silent failure propagated to trace's caller,high,requirement testing + unit tests,REQ-TRACE011, +unece,Assess,unece returns an unexpected error,silent failure propagated to unece's caller,high,requirement testing + unit tests,REQ-UNECE-002, +unece,Description,unece returns stale or inconsistent receiver state,caller of unece observes state that no longer reflects a concurrent mutation,low,unit tests,, +unece,ID,unece returns stale or inconsistent receiver state,caller of unece observes state that no longer reflects a concurrent mutation,low,unit tests,, +unece,Render,unece returns an unexpected error,silent failure propagated to unece's caller,high,requirement testing + unit tests,REQ-UNECE-003, +unece,Run,unece returns an unexpected error; uncontrolled execution in unece,silent failure propagated to unece's caller; resource exhaustion triggered from unece,high,requirement testing + unit tests,REQ-UNECE-001, +verify,Description,verify returns stale or inconsistent receiver state,caller of verify observes state that no longer reflects a concurrent mutation,low,unit tests,, +verify,Description,verify returns stale or inconsistent receiver state,caller of verify observes state that no longer reflects a concurrent mutation,low,unit tests,, +verify,ID,verify returns stale or inconsistent receiver state,caller of verify observes state that no longer reflects a concurrent mutation,low,unit tests,, +verify,ID,verify returns stale or inconsistent receiver state,caller of verify observes state that no longer reflects a concurrent mutation,low,unit tests,, +verify,Load,verify returns an unexpected error,silent failure propagated to verify's caller,high,requirement testing + unit tests,REQ-VERIFY007, +verify,New,verify produces incorrect output for a given input combination,incorrect system behavior from verify,high,requirement testing + unit tests,REQ-VERIFY003, +verify,Parse,verify returns an unexpected error,silent failure propagated to verify's caller,high,requirement testing + unit tests,REQ-VERIFY004, +verify,Run,verify returns an unexpected error; uncontrolled execution in verify,silent failure propagated to verify's caller; resource exhaustion triggered from verify,high,requirement testing + unit tests,REQ-VERIFY002, +verify,Run,verify returns an unexpected error; uncontrolled execution in verify,silent failure propagated to verify's caller; resource exhaustion triggered from verify,high,requirement testing + unit tests,REQ-VERIFY001, +verify,Run,verify returns an unexpected error; uncontrolled execution in verify,silent failure propagated to verify's caller; resource exhaustion triggered from verify,high,requirement testing + unit tests,REQ-VERIFY005, +verify,Save,verify returns an unexpected error; partial write / data corruption in verify,silent failure propagated to verify's caller; incorrect persisted state for verify,high,requirement testing + unit tests,REQ-VERIFY006, +verify,Summarise,verify produces incorrect output for a given input combination,incorrect system behavior from verify,high,requirement testing + unit tests,REQ-VERIFY004, +vuln,Description,vuln returns stale or inconsistent receiver state,caller of vuln observes state that no longer reflects a concurrent mutation,low,unit tests,, +vuln,ID,vuln returns stale or inconsistent receiver state,caller of vuln observes state that no longer reflects a concurrent mutation,low,unit tests,, +vuln,ParseGoMod,vuln returns an unexpected error,silent failure propagated to vuln's caller,high,requirement testing + unit tests,REQ-VULN001, +vuln,Render,vuln returns an unexpected error,silent failure propagated to vuln's caller,high,requirement testing + unit tests,REQ-VULN005, +vuln,Run,vuln returns an unexpected error; uncontrolled execution in vuln,silent failure propagated to vuln's caller; resource exhaustion triggered from vuln,high,requirement testing + unit tests,REQ-VULN003, +vuln,Scan,vuln returns an unexpected error,silent failure propagated to vuln's caller,high,requirement testing + unit tests,REQ-VULN001; REQ-VULN002, +vuln,ScanWithGovulncheck,vuln returns an unexpected error,silent failure propagated to vuln's caller,high,requirement testing + unit tests,REQ-VULN006, +vuln,ScanWithURL,vuln returns an unexpected error,silent failure propagated to vuln's caller,high,requirement testing + unit tests,REQ-VULN004, diff --git a/fmea.json b/fmea.json index 87d68bd..e1f3b36 100644 --- a/fmea.json +++ b/fmea.json @@ -2,9 +2,9 @@ "schemaVersion": "1.14", "kind": "fmea-report", "tool": "go-FuSa", - "toolVersion": "0.36.0", + "toolVersion": "0.40.0", "language": "go", - "generatedAt": "2026-07-28T19:39:10.49088Z", + "generatedAt": "2026-07-28T22:02:44.164443Z", "format": "go-FuSa dFMEA v1", "module": "github.com/SoundMatt/go-FuSa", "entries": [ @@ -13,20 +13,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -35,20 +35,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -57,20 +57,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -79,20 +79,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -101,20 +101,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -123,20 +123,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rule_009_deadcode.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rule_009_deadcode.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -145,20 +145,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -167,20 +167,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -189,20 +189,20 @@ "item": "analyze.Description", "component": "analyze", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -211,20 +211,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -233,20 +233,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -255,20 +255,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -277,20 +277,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -299,20 +299,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -321,20 +321,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -343,20 +343,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -365,20 +365,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/analyze.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -387,20 +387,20 @@ "item": "analyze.ID", "component": "analyze", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rule_009_deadcode.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "analyze/rule_009_deadcode.go", + "failureMode": "analyze returns stale or inconsistent receiver state", + "effect": "caller of analyze observes state that no longer reflects a concurrent mutation", + "cause": "analyze reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "analyze returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of analyze observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -409,10 +409,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/analyze.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -423,12 +423,12 @@ "REQ-ANA002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -437,10 +437,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/analyze.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -451,12 +451,12 @@ "REQ-ANA004" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -465,10 +465,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/analyze.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -479,12 +479,12 @@ "REQ-ANA003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -493,10 +493,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rule_009_deadcode.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/rule_009_deadcode.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -507,12 +507,12 @@ "REQ-ANA009" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -521,10 +521,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -535,12 +535,12 @@ "REQ-ANA006" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -549,10 +549,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -563,12 +563,12 @@ "REQ-ANA007" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -577,10 +577,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -591,12 +591,12 @@ "REQ-ANA005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -605,10 +605,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/rules_005_008.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/rules_005_008.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -619,12 +619,12 @@ "REQ-ANA008" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -633,10 +633,10 @@ "item": "analyze.Run", "component": "analyze", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/analyze/analyze.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "analyze/analyze.go", + "failureMode": "analyze returns an unexpected error; uncontrolled execution in analyze", + "effect": "silent failure propagated to analyze's caller; resource exhaustion triggered from analyze", + "cause": "an unhandled error path in analyze's function body or a callee; no bound on iteration count, input size, or execution time in analyze", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -647,12 +647,12 @@ "REQ-ANA001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "analyze returns an unexpected error", + "uncontrolled execution in analyze" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to analyze's caller", + "resource exhaustion triggered from analyze" ], "detectionControl": "requirement testing + unit tests" }, @@ -661,20 +661,20 @@ "item": "auditpack.Description", "component": "auditpack", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/auditpack/auditpack.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "auditpack/auditpack.go", + "failureMode": "auditpack returns stale or inconsistent receiver state", + "effect": "caller of auditpack observes state that no longer reflects a concurrent mutation", + "cause": "auditpack reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "auditpack returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of auditpack observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -683,20 +683,20 @@ "item": "auditpack.ID", "component": "auditpack", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/auditpack/auditpack.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "auditpack/auditpack.go", + "failureMode": "auditpack returns stale or inconsistent receiver state", + "effect": "caller of auditpack observes state that no longer reflects a concurrent mutation", + "cause": "auditpack reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "auditpack returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of auditpack observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -705,10 +705,10 @@ "item": "auditpack.Pack", "component": "auditpack", "function": "Pack", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/auditpack/auditpack.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "auditpack/auditpack.go", + "failureMode": "auditpack returns an unexpected error", + "effect": "silent failure propagated to auditpack's caller", + "cause": "an unhandled error path in auditpack's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -720,10 +720,10 @@ "REQ-AUDIT004" ], "failureModes": [ - "Returns unexpected error" + "auditpack returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to auditpack's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -732,10 +732,10 @@ "item": "auditpack.Run", "component": "auditpack", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/auditpack/auditpack.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "auditpack/auditpack.go", + "failureMode": "auditpack returns an unexpected error; uncontrolled execution in auditpack", + "effect": "silent failure propagated to auditpack's caller; resource exhaustion triggered from auditpack", + "cause": "an unhandled error path in auditpack's function body or a callee; no bound on iteration count, input size, or execution time in auditpack", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -746,12 +746,12 @@ "REQ-AUDIT003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "auditpack returns an unexpected error", + "uncontrolled execution in auditpack" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to auditpack's caller", + "resource exhaustion triggered from auditpack" ], "detectionControl": "requirement testing + unit tests" }, @@ -760,10 +760,10 @@ "item": "badge.New", "component": "badge", "function": "New", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/badge/badge.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "badge/badge.go", + "failureMode": "badge produces incorrect output for a given input combination", + "effect": "incorrect system behavior from badge", + "cause": "a logic error in badge not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -773,10 +773,10 @@ "REQ-BADGE001" ], "failureModes": [ - "Incorrect output" + "badge produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from badge" ], "detectionControl": "requirement testing + unit tests" }, @@ -785,10 +785,10 @@ "item": "badge.Render", "component": "badge", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/badge/badge.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "badge/badge.go", + "failureMode": "badge returns an unexpected error", + "effect": "silent failure propagated to badge's caller", + "cause": "an unhandled error path in badge's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -798,10 +798,10 @@ "REQ-BADGE002" ], "failureModes": [ - "Returns unexpected error" + "badge returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to badge's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -810,20 +810,20 @@ "item": "boundary.Description", "component": "boundary", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/boundary/boundary.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "boundary/boundary.go", + "failureMode": "boundary returns stale or inconsistent receiver state", + "effect": "caller of boundary observes state that no longer reflects a concurrent mutation", + "cause": "boundary reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "boundary returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of boundary observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -832,20 +832,20 @@ "item": "boundary.ID", "component": "boundary", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/boundary/boundary.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "boundary/boundary.go", + "failureMode": "boundary returns stale or inconsistent receiver state", + "effect": "caller of boundary observes state that no longer reflects a concurrent mutation", + "cause": "boundary reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "boundary returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of boundary observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -854,10 +854,10 @@ "item": "boundary.Render", "component": "boundary", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/boundary/boundary.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "boundary/boundary.go", + "failureMode": "boundary returns an unexpected error", + "effect": "silent failure propagated to boundary's caller", + "cause": "an unhandled error path in boundary's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -868,10 +868,10 @@ "REQ-BOUNDARY004" ], "failureModes": [ - "Returns unexpected error" + "boundary returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to boundary's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -880,10 +880,10 @@ "item": "boundary.Run", "component": "boundary", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/boundary/boundary.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "boundary/boundary.go", + "failureMode": "boundary returns an unexpected error; uncontrolled execution in boundary", + "effect": "silent failure propagated to boundary's caller; resource exhaustion triggered from boundary", + "cause": "an unhandled error path in boundary's function body or a callee; no bound on iteration count, input size, or execution time in boundary", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -894,12 +894,12 @@ "REQ-BOUNDARY005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "boundary returns an unexpected error", + "uncontrolled execution in boundary" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to boundary's caller", + "resource exhaustion triggered from boundary" ], "detectionControl": "requirement testing + unit tests" }, @@ -908,10 +908,10 @@ "item": "boundary.Scan", "component": "boundary", "function": "Scan", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/boundary/boundary.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "boundary/boundary.go", + "failureMode": "boundary returns an unexpected error", + "effect": "silent failure propagated to boundary's caller", + "cause": "an unhandled error path in boundary's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -922,10 +922,10 @@ "REQ-BOUNDARY002" ], "failureModes": [ - "Returns unexpected error" + "boundary returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to boundary's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -934,10 +934,10 @@ "item": "comp.Assess", "component": "comp", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "comp/comp.go", + "failureMode": "comp returns an unexpected error", + "effect": "silent failure propagated to comp's caller", + "cause": "an unhandled error path in comp's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -947,10 +947,10 @@ "REQ-COMP-ASSESS002" ], "failureModes": [ - "Returns unexpected error" + "comp returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to comp's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -959,10 +959,10 @@ "item": "comp.Complexity", "component": "comp", "function": "Complexity", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "comp/comp.go", + "failureMode": "comp produces incorrect output for a given input combination", + "effect": "incorrect system behavior from comp", + "cause": "a logic error in comp not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -972,10 +972,10 @@ "REQ-COMP001" ], "failureModes": [ - "Incorrect output" + "comp produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from comp" ], "detectionControl": "requirement testing + unit tests" }, @@ -984,20 +984,20 @@ "item": "comp.Description", "component": "comp", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "comp/comp.go", + "failureMode": "comp returns stale or inconsistent receiver state", + "effect": "caller of comp observes state that no longer reflects a concurrent mutation", + "cause": "comp reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "comp returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of comp observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1006,20 +1006,20 @@ "item": "comp.ID", "component": "comp", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "comp/comp.go", + "failureMode": "comp returns stale or inconsistent receiver state", + "effect": "caller of comp observes state that no longer reflects a concurrent mutation", + "cause": "comp reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "comp returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of comp observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1028,10 +1028,10 @@ "item": "comp.Run", "component": "comp", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "comp/comp.go", + "failureMode": "comp returns an unexpected error; uncontrolled execution in comp", + "effect": "silent failure propagated to comp's caller; resource exhaustion triggered from comp", + "cause": "an unhandled error path in comp's function body or a callee; no bound on iteration count, input size, or execution time in comp", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1042,12 +1042,12 @@ "REQ-COMP001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "comp returns an unexpected error", + "uncontrolled execution in comp" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to comp's caller", + "resource exhaustion triggered from comp" ], "detectionControl": "requirement testing + unit tests" }, @@ -1056,10 +1056,10 @@ "item": "comp.ThresholdForDAL", "component": "comp", "function": "ThresholdForDAL", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "comp/comp.go", + "failureMode": "comp produces incorrect output for a given input combination", + "effect": "incorrect system behavior from comp", + "cause": "a logic error in comp not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1069,10 +1069,10 @@ "REQ-COMP-ASSESS001" ], "failureModes": [ - "Incorrect output" + "comp produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from comp" ], "detectionControl": "requirement testing + unit tests" }, @@ -1081,10 +1081,10 @@ "item": "config.Default", "component": "config", "function": "Default", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/config/config.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "config/config.go", + "failureMode": "config produces incorrect output for a given input combination", + "effect": "incorrect system behavior from config", + "cause": "a logic error in config not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1094,10 +1094,10 @@ "REQ-CFG005" ], "failureModes": [ - "Incorrect output" + "config produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from config" ], "detectionControl": "requirement testing + unit tests" }, @@ -1106,10 +1106,10 @@ "item": "config.Load", "component": "config", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/config/config.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "config/config.go", + "failureMode": "config returns an unexpected error", + "effect": "silent failure propagated to config's caller", + "cause": "an unhandled error path in config's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1119,10 +1119,10 @@ "REQ-CFG001" ], "failureModes": [ - "Returns unexpected error" + "config returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to config's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1131,10 +1131,10 @@ "item": "config.Save", "component": "config", "function": "Save", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/config/config.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "config/config.go", + "failureMode": "config returns an unexpected error; partial write / data corruption in config", + "effect": "silent failure propagated to config's caller; incorrect persisted state for config", + "cause": "an unhandled error path in config's function body or a callee; an interrupted write in config (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1146,12 +1146,12 @@ "REQ-CFG009" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "config returns an unexpected error", + "partial write / data corruption in config" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to config's caller", + "incorrect persisted state for config" ], "detectionControl": "requirement testing + unit tests" }, @@ -1160,10 +1160,10 @@ "item": "config.UnmarshalJSON", "component": "config", "function": "UnmarshalJSON", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/config/config.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "config/config.go", + "failureMode": "config returns an unexpected error", + "effect": "silent failure propagated to config's caller", + "cause": "an unhandled error path in config's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1173,10 +1173,10 @@ "REQ-CFG009" ], "failureModes": [ - "Returns unexpected error" + "config returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to config's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1185,10 +1185,10 @@ "item": "config.Validate", "component": "config", "function": "Validate", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/config/config.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "config/config.go", + "failureMode": "config returns an unexpected error", + "effect": "silent failure propagated to config's caller", + "cause": "an unhandled error path in config's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1198,10 +1198,10 @@ "REQ-CFG003" ], "failureModes": [ - "Returns unexpected error" + "config returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to config's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1210,20 +1210,20 @@ "item": "coupling.Description", "component": "coupling", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling returns stale or inconsistent receiver state", + "effect": "caller of coupling observes state that no longer reflects a concurrent mutation", + "cause": "coupling reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "coupling returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of coupling observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1232,20 +1232,20 @@ "item": "coupling.Description", "component": "coupling", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling returns stale or inconsistent receiver state", + "effect": "caller of coupling observes state that no longer reflects a concurrent mutation", + "cause": "coupling reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "coupling returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of coupling observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1254,20 +1254,20 @@ "item": "coupling.Description", "component": "coupling", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling returns stale or inconsistent receiver state", + "effect": "caller of coupling observes state that no longer reflects a concurrent mutation", + "cause": "coupling reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "coupling returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of coupling observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1276,20 +1276,20 @@ "item": "coupling.ID", "component": "coupling", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling returns stale or inconsistent receiver state", + "effect": "caller of coupling observes state that no longer reflects a concurrent mutation", + "cause": "coupling reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "coupling returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of coupling observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1298,20 +1298,20 @@ "item": "coupling.ID", "component": "coupling", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling returns stale or inconsistent receiver state", + "effect": "caller of coupling observes state that no longer reflects a concurrent mutation", + "cause": "coupling reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "coupling returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of coupling observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1320,20 +1320,20 @@ "item": "coupling.ID", "component": "coupling", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling returns stale or inconsistent receiver state", + "effect": "caller of coupling observes state that no longer reflects a concurrent mutation", + "cause": "coupling reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "coupling returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of coupling observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1342,10 +1342,10 @@ "item": "coupling.NewControlCouplingRule", "component": "coupling", "function": "NewControlCouplingRule", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from coupling", + "cause": "a logic error in coupling not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1355,10 +1355,10 @@ "REQ-COUPLING002" ], "failureModes": [ - "Incorrect output" + "coupling produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from coupling" ], "detectionControl": "requirement testing + unit tests" }, @@ -1367,10 +1367,10 @@ "item": "coupling.NewDataCouplingRule", "component": "coupling", "function": "NewDataCouplingRule", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coupling/coupling.go", + "failureMode": "coupling produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from coupling", + "cause": "a logic error in coupling not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1380,10 +1380,10 @@ "REQ-COUPLING001" ], "failureModes": [ - "Incorrect output" + "coupling produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from coupling" ], "detectionControl": "requirement testing + unit tests" }, @@ -1392,10 +1392,10 @@ "item": "coupling.Run", "component": "coupling", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "coupling/coupling.go", + "failureMode": "coupling returns an unexpected error; uncontrolled execution in coupling", + "effect": "silent failure propagated to coupling's caller; resource exhaustion triggered from coupling", + "cause": "an unhandled error path in coupling's function body or a callee; no bound on iteration count, input size, or execution time in coupling", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1406,12 +1406,12 @@ "REQ-COUP002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "coupling returns an unexpected error", + "uncontrolled execution in coupling" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to coupling's caller", + "resource exhaustion triggered from coupling" ], "detectionControl": "requirement testing + unit tests" }, @@ -1420,10 +1420,10 @@ "item": "coupling.Run", "component": "coupling", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "coupling/coupling.go", + "failureMode": "coupling returns an unexpected error; uncontrolled execution in coupling", + "effect": "silent failure propagated to coupling's caller; resource exhaustion triggered from coupling", + "cause": "an unhandled error path in coupling's function body or a callee; no bound on iteration count, input size, or execution time in coupling", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1434,12 +1434,12 @@ "REQ-COUPLING003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "coupling returns an unexpected error", + "uncontrolled execution in coupling" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to coupling's caller", + "resource exhaustion triggered from coupling" ], "detectionControl": "requirement testing + unit tests" }, @@ -1448,10 +1448,10 @@ "item": "coupling.Run", "component": "coupling", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "coupling/coupling.go", + "failureMode": "coupling returns an unexpected error; uncontrolled execution in coupling", + "effect": "silent failure propagated to coupling's caller; resource exhaustion triggered from coupling", + "cause": "an unhandled error path in coupling's function body or a callee; no bound on iteration count, input size, or execution time in coupling", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1462,12 +1462,12 @@ "REQ-COUP001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "coupling returns an unexpected error", + "uncontrolled execution in coupling" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to coupling's caller", + "resource exhaustion triggered from coupling" ], "detectionControl": "requirement testing + unit tests" }, @@ -1476,10 +1476,10 @@ "item": "coupling.SaveReport", "component": "coupling", "function": "SaveReport", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "coupling/coupling.go", + "failureMode": "coupling returns an unexpected error; partial write / data corruption in coupling", + "effect": "silent failure propagated to coupling's caller; incorrect persisted state for coupling", + "cause": "an unhandled error path in coupling's function body or a callee; an interrupted write in coupling (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1490,12 +1490,12 @@ "REQ-COUPLING003" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "coupling returns an unexpected error", + "partial write / data corruption in coupling" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to coupling's caller", + "incorrect persisted state for coupling" ], "detectionControl": "requirement testing + unit tests" }, @@ -1504,10 +1504,10 @@ "item": "coverage.Analyse", "component": "coverage", "function": "Analyse", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coverage/coverage.go", + "failureMode": "coverage produces incorrect output for a given input combination", + "effect": "incorrect system behavior from coverage", + "cause": "a logic error in coverage not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1517,10 +1517,10 @@ "REQ-COV001" ], "failureModes": [ - "Incorrect output" + "coverage produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from coverage" ], "detectionControl": "requirement testing + unit tests" }, @@ -1529,10 +1529,10 @@ "item": "coverage.BuildFromFile", "component": "coverage", "function": "BuildFromFile", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "coverage/coverage.go", + "failureMode": "coverage returns an unexpected error", + "effect": "silent failure propagated to coverage's caller", + "cause": "an unhandled error path in coverage's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1542,10 +1542,10 @@ "REQ-COV002" ], "failureModes": [ - "Returns unexpected error" + "coverage returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to coverage's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1554,23 +1554,23 @@ "item": "coverage.IsCovered", "component": "coverage", "function": "IsCovered", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "coverage/coverage.go", + "failureMode": "coverage returns stale or inconsistent receiver state", + "effect": "caller of coverage observes state that no longer reflects a concurrent mutation", + "cause": "coverage reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-COV015" ], "failureModes": [ - "Incorrect output" + "coverage returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of coverage observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -1579,10 +1579,10 @@ "item": "coverage.Parse", "component": "coverage", "function": "Parse", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "coverage/coverage.go", + "failureMode": "coverage returns an unexpected error", + "effect": "silent failure propagated to coverage's caller", + "cause": "an unhandled error path in coverage's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1592,10 +1592,10 @@ "REQ-COV002" ], "failureModes": [ - "Returns unexpected error" + "coverage returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to coverage's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1604,10 +1604,10 @@ "item": "coverage.ParseMCDC", "component": "coverage", "function": "ParseMCDC", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "coverage/coverage.go", + "failureMode": "coverage returns an unexpected error", + "effect": "silent failure propagated to coverage's caller", + "cause": "an unhandled error path in coverage's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1617,10 +1617,10 @@ "REQ-COV015" ], "failureModes": [ - "Returns unexpected error" + "coverage returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to coverage's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1629,10 +1629,10 @@ "item": "coverage.ParseMCDCFile", "component": "coverage", "function": "ParseMCDCFile", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "coverage/coverage.go", + "failureMode": "coverage returns an unexpected error", + "effect": "silent failure propagated to coverage's caller", + "cause": "an unhandled error path in coverage's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1642,10 +1642,10 @@ "REQ-COV015" ], "failureModes": [ - "Returns unexpected error" + "coverage returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to coverage's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1654,10 +1654,10 @@ "item": "coverage.Render", "component": "coverage", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "coverage/coverage.go", + "failureMode": "coverage returns an unexpected error", + "effect": "silent failure propagated to coverage's caller", + "cause": "an unhandled error path in coverage's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1667,10 +1667,10 @@ "REQ-COV003" ], "failureModes": [ - "Returns unexpected error" + "coverage returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to coverage's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -1679,10 +1679,10 @@ "item": "coverage.RunMutation", "component": "coverage", "function": "RunMutation", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "coverage/coverage.go", + "failureMode": "coverage returns an unexpected error; uncontrolled execution in coverage", + "effect": "silent failure propagated to coverage's caller; resource exhaustion triggered from coverage", + "cause": "an unhandled error path in coverage's function body or a callee; no bound on iteration count, input size, or execution time in coverage", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -1693,12 +1693,12 @@ "REQ-COV016" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "coverage returns an unexpected error", + "uncontrolled execution in coverage" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to coverage's caller", + "resource exhaustion triggered from coverage" ], "detectionControl": "requirement testing + unit tests" }, @@ -1707,20 +1707,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1729,20 +1729,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1751,20 +1751,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1773,20 +1773,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1795,20 +1795,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1817,20 +1817,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1839,20 +1839,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1861,20 +1861,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1883,20 +1883,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1905,20 +1905,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1927,20 +1927,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1949,20 +1949,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1971,20 +1971,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -1993,20 +1993,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2015,20 +2015,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2037,20 +2037,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2059,20 +2059,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2081,20 +2081,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2103,20 +2103,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2125,20 +2125,20 @@ "item": "cyber.Description", "component": "cyber", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2147,20 +2147,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2169,20 +2169,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2191,20 +2191,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2213,20 +2213,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2235,20 +2235,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2257,20 +2257,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2279,20 +2279,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2301,20 +2301,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2323,20 +2323,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2345,20 +2345,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2367,20 +2367,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2389,20 +2389,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2411,20 +2411,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2433,20 +2433,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2455,20 +2455,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2477,20 +2477,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2499,20 +2499,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2521,20 +2521,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2543,20 +2543,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2565,20 +2565,20 @@ "item": "cyber.ID", "component": "cyber", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "cyber/cyber.go", + "failureMode": "cyber returns stale or inconsistent receiver state", + "effect": "caller of cyber observes state that no longer reflects a concurrent mutation", + "cause": "cyber reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "cyber returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of cyber observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -2587,10 +2587,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2601,12 +2601,12 @@ "REQ-CYBER013" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2615,10 +2615,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2629,12 +2629,12 @@ "REQ-CYBER014" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2643,10 +2643,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2657,12 +2657,12 @@ "REQ-CYBER011" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2671,10 +2671,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2685,12 +2685,12 @@ "REQ-CYBER001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2699,10 +2699,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2713,12 +2713,12 @@ "REQ-CYBER017" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2727,10 +2727,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2741,12 +2741,12 @@ "REQ-CYBER012" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2755,10 +2755,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2769,12 +2769,12 @@ "REQ-CYBER010" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2783,10 +2783,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2797,12 +2797,12 @@ "REQ-CYBER004" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2811,10 +2811,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2825,12 +2825,12 @@ "REQ-CYBER019" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2839,10 +2839,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2853,12 +2853,12 @@ "REQ-CYBER009" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2867,10 +2867,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2881,12 +2881,12 @@ "REQ-CYBER005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2895,10 +2895,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2909,12 +2909,12 @@ "REQ-CYBER006" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2923,10 +2923,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2937,12 +2937,12 @@ "REQ-CYBER002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2951,10 +2951,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2965,12 +2965,12 @@ "REQ-CYBER018" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -2979,10 +2979,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -2993,12 +2993,12 @@ "REQ-CYBER015" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -3007,10 +3007,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3021,12 +3021,12 @@ "REQ-CYBER008" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -3035,10 +3035,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3049,12 +3049,12 @@ "REQ-CYBER020" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -3063,10 +3063,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber_gosec.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber_gosec.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3077,12 +3077,12 @@ "REQ-CYBER016" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -3091,10 +3091,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3105,12 +3105,12 @@ "REQ-CYBER007" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -3119,10 +3119,10 @@ "item": "cyber.Run", "component": "cyber", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error; uncontrolled execution in cyber", + "effect": "silent failure propagated to cyber's caller; resource exhaustion triggered from cyber", + "cause": "an unhandled error path in cyber's function body or a callee; no bound on iteration count, input size, or execution time in cyber", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3133,12 +3133,12 @@ "REQ-CYBER003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "cyber returns an unexpected error", + "uncontrolled execution in cyber" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to cyber's caller", + "resource exhaustion triggered from cyber" ], "detectionControl": "requirement testing + unit tests" }, @@ -3147,10 +3147,10 @@ "item": "cyber.Scan", "component": "cyber", "function": "Scan", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cyber/cyber.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "cyber/cyber.go", + "failureMode": "cyber returns an unexpected error", + "effect": "silent failure propagated to cyber's caller", + "cause": "an unhandled error path in cyber's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3160,10 +3160,10 @@ "REQ-CYBER001" ], "failureModes": [ - "Returns unexpected error" + "cyber returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to cyber's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3172,10 +3172,10 @@ "item": "diff.Compare", "component": "diff", "function": "Compare", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/diff/diff.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "diff/diff.go", + "failureMode": "diff produces incorrect output for a given input combination", + "effect": "incorrect system behavior from diff", + "cause": "a logic error in diff not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3185,10 +3185,10 @@ "REQ-DIFF001" ], "failureModes": [ - "Incorrect output" + "diff produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from diff" ], "detectionControl": "requirement testing + unit tests" }, @@ -3197,10 +3197,10 @@ "item": "diff.LoadReport", "component": "diff", "function": "LoadReport", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/diff/diff.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "diff/diff.go", + "failureMode": "diff returns an unexpected error", + "effect": "silent failure propagated to diff's caller", + "cause": "an unhandled error path in diff's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3210,10 +3210,10 @@ "REQ-DIFF002" ], "failureModes": [ - "Returns unexpected error" + "diff returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to diff's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3222,10 +3222,10 @@ "item": "diff.Render", "component": "diff", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/diff/diff.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "diff/diff.go", + "failureMode": "diff returns an unexpected error", + "effect": "silent failure propagated to diff's caller", + "cause": "an unhandled error path in diff's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3235,10 +3235,10 @@ "REQ-DIFF003" ], "failureModes": [ - "Returns unexpected error" + "diff returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to diff's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3247,10 +3247,10 @@ "item": "disposition.Add", "component": "disposition", "function": "Add", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "disposition/disposition.go", + "failureMode": "disposition produces incorrect output for a given input combination", + "effect": "incorrect system behavior from disposition", + "cause": "a logic error in disposition not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3260,10 +3260,10 @@ "REQ-DISP006" ], "failureModes": [ - "Incorrect output" + "disposition produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from disposition" ], "detectionControl": "requirement testing + unit tests" }, @@ -3272,20 +3272,20 @@ "item": "disposition.Description", "component": "disposition", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "disposition/disposition.go", + "failureMode": "disposition returns stale or inconsistent receiver state", + "effect": "caller of disposition observes state that no longer reflects a concurrent mutation", + "cause": "disposition reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "disposition returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of disposition observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3294,20 +3294,20 @@ "item": "disposition.ID", "component": "disposition", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "disposition/disposition.go", + "failureMode": "disposition returns stale or inconsistent receiver state", + "effect": "caller of disposition observes state that no longer reflects a concurrent mutation", + "cause": "disposition reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "disposition returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of disposition observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3316,10 +3316,10 @@ "item": "disposition.IsDispositioned", "component": "disposition", "function": "IsDispositioned", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "disposition/disposition.go", + "failureMode": "disposition produces incorrect output for a given input combination", + "effect": "incorrect system behavior from disposition", + "cause": "a logic error in disposition not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3329,10 +3329,10 @@ "REQ-DISP007" ], "failureModes": [ - "Incorrect output" + "disposition produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from disposition" ], "detectionControl": "requirement testing + unit tests" }, @@ -3341,10 +3341,10 @@ "item": "disposition.Load", "component": "disposition", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "disposition/disposition.go", + "failureMode": "disposition returns an unexpected error", + "effect": "silent failure propagated to disposition's caller", + "cause": "an unhandled error path in disposition's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3354,10 +3354,10 @@ "REQ-DISP004" ], "failureModes": [ - "Returns unexpected error" + "disposition returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to disposition's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3366,10 +3366,10 @@ "item": "disposition.RenderEntries", "component": "disposition", "function": "RenderEntries", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "disposition/disposition.go", + "failureMode": "disposition returns an unexpected error", + "effect": "silent failure propagated to disposition's caller", + "cause": "an unhandled error path in disposition's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3379,10 +3379,10 @@ "REQ-DISP009" ], "failureModes": [ - "Returns unexpected error" + "disposition returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to disposition's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3391,10 +3391,10 @@ "item": "disposition.Run", "component": "disposition", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "disposition/disposition.go", + "failureMode": "disposition returns an unexpected error; uncontrolled execution in disposition", + "effect": "silent failure propagated to disposition's caller; resource exhaustion triggered from disposition", + "cause": "an unhandled error path in disposition's function body or a callee; no bound on iteration count, input size, or execution time in disposition", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3405,12 +3405,12 @@ "REQ-DISP008" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "disposition returns an unexpected error", + "uncontrolled execution in disposition" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to disposition's caller", + "resource exhaustion triggered from disposition" ], "detectionControl": "requirement testing + unit tests" }, @@ -3419,10 +3419,10 @@ "item": "disposition.Save", "component": "disposition", "function": "Save", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "disposition/disposition.go", + "failureMode": "disposition returns an unexpected error; partial write / data corruption in disposition", + "effect": "silent failure propagated to disposition's caller; incorrect persisted state for disposition", + "cause": "an unhandled error path in disposition's function body or a callee; an interrupted write in disposition (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3433,12 +3433,12 @@ "REQ-DISP005" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "disposition returns an unexpected error", + "partial write / data corruption in disposition" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to disposition's caller", + "incorrect persisted state for disposition" ], "detectionControl": "requirement testing + unit tests" }, @@ -3447,10 +3447,10 @@ "item": "do178.Assess", "component": "do178", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "do178/do178.go", + "failureMode": "do178 returns an unexpected error", + "effect": "silent failure propagated to do178's caller", + "cause": "an unhandled error path in do178's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3460,10 +3460,10 @@ "REQ-DO178-001" ], "failureModes": [ - "Returns unexpected error" + "do178 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to do178's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3472,10 +3472,10 @@ "item": "do178.Render", "component": "do178", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "do178/do178.go", + "failureMode": "do178 returns an unexpected error", + "effect": "silent failure propagated to do178's caller", + "cause": "an unhandled error path in do178's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3485,10 +3485,10 @@ "REQ-DO178-003" ], "failureModes": [ - "Returns unexpected error" + "do178 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to do178's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3497,20 +3497,20 @@ "item": "engine.Description", "component": "engine", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3519,20 +3519,20 @@ "item": "engine.Description", "component": "engine", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3541,20 +3541,20 @@ "item": "engine.Description", "component": "engine", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3563,20 +3563,20 @@ "item": "engine.Description", "component": "engine", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3585,20 +3585,20 @@ "item": "engine.Description", "component": "engine", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3607,23 +3607,23 @@ "item": "engine.HasErrors", "component": "engine", "function": "HasErrors", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/engine.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-ENG003" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -3632,23 +3632,23 @@ "item": "engine.HasWarnings", "component": "engine", "function": "HasWarnings", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/engine.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-ENG010" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -3657,20 +3657,20 @@ "item": "engine.ID", "component": "engine", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3679,20 +3679,20 @@ "item": "engine.ID", "component": "engine", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3701,20 +3701,20 @@ "item": "engine.ID", "component": "engine", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3723,20 +3723,20 @@ "item": "engine.ID", "component": "engine", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3745,20 +3745,20 @@ "item": "engine.ID", "component": "engine", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/rules.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -3767,23 +3767,23 @@ "item": "engine.MustRegister", "component": "engine", "function": "MustRegister", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/engine.go", + "failureMode": "engine derives incorrect output from receiver and argument state", + "effect": "incorrect system behavior from engine", + "cause": "a logic error in engine combining receiver state with its arguments, not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add requirement-traced unit tests covering this method's documented behaviour" ], "requirementIds": [ "REQ-ENG004" ], "failureModes": [ - "Incorrect output" + "engine derives incorrect output from receiver and argument state" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -3792,10 +3792,10 @@ "item": "engine.NewRegistry", "component": "engine", "function": "NewRegistry", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/engine.go", + "failureMode": "engine produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from engine", + "cause": "a logic error in engine not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3805,10 +3805,10 @@ "REQ-ENG001" ], "failureModes": [ - "Incorrect output" + "engine produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -3817,10 +3817,10 @@ "item": "engine.Register", "component": "engine", "function": "Register", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "engine/engine.go", + "failureMode": "engine returns an unexpected error", + "effect": "silent failure propagated to engine's caller", + "cause": "an unhandled error path in engine's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3830,10 +3830,10 @@ "REQ-ENG008" ], "failureModes": [ - "Returns unexpected error" + "engine returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to engine's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -3842,23 +3842,23 @@ "item": "engine.Rules", "component": "engine", "function": "Rules", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "engine/engine.go", + "failureMode": "engine returns stale or inconsistent receiver state", + "effect": "caller of engine observes state that no longer reflects a concurrent mutation", + "cause": "engine reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-ENG009" ], "failureModes": [ - "Incorrect output" + "engine returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of engine observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -3867,10 +3867,10 @@ "item": "engine.Run", "component": "engine", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "engine/rules.go", + "failureMode": "engine returns an unexpected error; uncontrolled execution in engine", + "effect": "silent failure propagated to engine's caller; resource exhaustion triggered from engine", + "cause": "an unhandled error path in engine's function body or a callee; no bound on iteration count, input size, or execution time in engine", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3881,12 +3881,12 @@ "REQ-FUSA005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "engine returns an unexpected error", + "uncontrolled execution in engine" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to engine's caller", + "resource exhaustion triggered from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -3895,10 +3895,10 @@ "item": "engine.Run", "component": "engine", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "engine/engine.go", + "failureMode": "engine returns an unexpected error; uncontrolled execution in engine", + "effect": "silent failure propagated to engine's caller; resource exhaustion triggered from engine", + "cause": "an unhandled error path in engine's function body or a callee; no bound on iteration count, input size, or execution time in engine", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3909,12 +3909,12 @@ "REQ-ENG011" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "engine returns an unexpected error", + "uncontrolled execution in engine" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to engine's caller", + "resource exhaustion triggered from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -3923,10 +3923,10 @@ "item": "engine.Run", "component": "engine", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "engine/rules.go", + "failureMode": "engine returns an unexpected error; uncontrolled execution in engine", + "effect": "silent failure propagated to engine's caller; resource exhaustion triggered from engine", + "cause": "an unhandled error path in engine's function body or a callee; no bound on iteration count, input size, or execution time in engine", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3937,12 +3937,12 @@ "REQ-FUSA002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "engine returns an unexpected error", + "uncontrolled execution in engine" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to engine's caller", + "resource exhaustion triggered from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -3951,10 +3951,10 @@ "item": "engine.Run", "component": "engine", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "engine/rules.go", + "failureMode": "engine returns an unexpected error; uncontrolled execution in engine", + "effect": "silent failure propagated to engine's caller; resource exhaustion triggered from engine", + "cause": "an unhandled error path in engine's function body or a callee; no bound on iteration count, input size, or execution time in engine", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3965,12 +3965,12 @@ "REQ-FUSA004" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "engine returns an unexpected error", + "uncontrolled execution in engine" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to engine's caller", + "resource exhaustion triggered from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -3979,10 +3979,10 @@ "item": "engine.Run", "component": "engine", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "engine/rules.go", + "failureMode": "engine returns an unexpected error; uncontrolled execution in engine", + "effect": "silent failure propagated to engine's caller; resource exhaustion triggered from engine", + "cause": "an unhandled error path in engine's function body or a callee; no bound on iteration count, input size, or execution time in engine", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -3993,12 +3993,12 @@ "REQ-FUSA003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "engine returns an unexpected error", + "uncontrolled execution in engine" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to engine's caller", + "resource exhaustion triggered from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -4007,10 +4007,10 @@ "item": "engine.Run", "component": "engine", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/rules.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "engine/rules.go", + "failureMode": "engine returns an unexpected error; uncontrolled execution in engine", + "effect": "silent failure propagated to engine's caller; resource exhaustion triggered from engine", + "cause": "an unhandled error path in engine's function body or a callee; no bound on iteration count, input size, or execution time in engine", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4021,12 +4021,12 @@ "REQ-FUSA001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "engine returns an unexpected error", + "uncontrolled execution in engine" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to engine's caller", + "resource exhaustion triggered from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -4035,10 +4035,10 @@ "item": "engine.RunFilter", "component": "engine", "function": "RunFilter", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/engine/engine.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "engine/engine.go", + "failureMode": "engine returns an unexpected error; uncontrolled execution in engine", + "effect": "silent failure propagated to engine's caller; resource exhaustion triggered from engine", + "cause": "an unhandled error path in engine's function body or a callee; no bound on iteration count, input size, or execution time in engine", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4049,12 +4049,12 @@ "REQ-ENG007" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "engine returns an unexpected error", + "uncontrolled execution in engine" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to engine's caller", + "resource exhaustion triggered from engine" ], "detectionControl": "requirement testing + unit tests" }, @@ -4063,10 +4063,10 @@ "item": "fmea.CountProjectFunctions", "component": "fmea", "function": "CountProjectFunctions", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "fmea/fmea.go", + "failureMode": "fmea returns an unexpected error", + "effect": "silent failure propagated to fmea's caller", + "cause": "an unhandled error path in fmea's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4076,10 +4076,10 @@ "REQ-FMEA009" ], "failureModes": [ - "Returns unexpected error" + "fmea returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to fmea's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4088,20 +4088,20 @@ "item": "fmea.Description", "component": "fmea", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fmea/fmea.go", + "failureMode": "fmea returns stale or inconsistent receiver state", + "effect": "caller of fmea observes state that no longer reflects a concurrent mutation", + "cause": "fmea reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "fmea returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of fmea observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4110,10 +4110,10 @@ "item": "fmea.EnrichWithCyber", "component": "fmea", "function": "EnrichWithCyber", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fmea/fmea.go", + "failureMode": "fmea produces incorrect output for a given input combination", + "effect": "incorrect system behavior from fmea", + "cause": "a logic error in fmea not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4123,10 +4123,10 @@ "REQ-FMEA006" ], "failureModes": [ - "Incorrect output" + "fmea produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from fmea" ], "detectionControl": "requirement testing + unit tests" }, @@ -4135,20 +4135,20 @@ "item": "fmea.ID", "component": "fmea", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fmea/fmea.go", + "failureMode": "fmea returns stale or inconsistent receiver state", + "effect": "caller of fmea observes state that no longer reflects a concurrent mutation", + "cause": "fmea reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "fmea returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of fmea observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4157,10 +4157,10 @@ "item": "fmea.LoadReport", "component": "fmea", "function": "LoadReport", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "fmea/fmea.go", + "failureMode": "fmea returns an unexpected error", + "effect": "silent failure propagated to fmea's caller", + "cause": "an unhandled error path in fmea's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4170,10 +4170,10 @@ "REQ-FMEA010" ], "failureModes": [ - "Returns unexpected error" + "fmea returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to fmea's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4182,10 +4182,10 @@ "item": "fmea.Render", "component": "fmea", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "fmea/fmea.go", + "failureMode": "fmea returns an unexpected error", + "effect": "silent failure propagated to fmea's caller", + "cause": "an unhandled error path in fmea's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4195,10 +4195,10 @@ "REQ-FMEA004" ], "failureModes": [ - "Returns unexpected error" + "fmea returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to fmea's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4207,10 +4207,10 @@ "item": "fmea.Run", "component": "fmea", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "fmea/fmea.go", + "failureMode": "fmea returns an unexpected error; uncontrolled execution in fmea", + "effect": "silent failure propagated to fmea's caller; resource exhaustion triggered from fmea", + "cause": "an unhandled error path in fmea's function body or a callee; no bound on iteration count, input size, or execution time in fmea", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4221,12 +4221,12 @@ "REQ-FMEA005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "fmea returns an unexpected error", + "uncontrolled execution in fmea" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to fmea's caller", + "resource exhaustion triggered from fmea" ], "detectionControl": "requirement testing + unit tests" }, @@ -4235,10 +4235,10 @@ "item": "fmea.Scan", "component": "fmea", "function": "Scan", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fmea/fmea.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "fmea/fmea.go", + "failureMode": "fmea returns an unexpected error", + "effect": "silent failure propagated to fmea's caller", + "cause": "an unhandled error path in fmea's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4250,10 +4250,10 @@ "REQ-FMEA003" ], "failureModes": [ - "Returns unexpected error" + "fmea returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to fmea's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4262,23 +4262,23 @@ "item": "gapreport.AddObjective", "component": "gapreport", "function": "AddObjective", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/gapreport/gapreport.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "gapreport/gapreport.go", + "failureMode": "gapreport derives incorrect output from receiver and argument state", + "effect": "incorrect system behavior from gapreport", + "cause": "a logic error in gapreport combining receiver state with its arguments, not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add requirement-traced unit tests covering this method's documented behaviour" ], "requirementIds": [ "REQ-GAPREPORT004" ], "failureModes": [ - "Incorrect output" + "gapreport derives incorrect output from receiver and argument state" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from gapreport" ], "detectionControl": "requirement testing + unit tests" }, @@ -4287,10 +4287,10 @@ "item": "gapreport.New", "component": "gapreport", "function": "New", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/gapreport/gapreport.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "gapreport/gapreport.go", + "failureMode": "gapreport produces incorrect output for a given input combination", + "effect": "incorrect system behavior from gapreport", + "cause": "a logic error in gapreport not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4300,10 +4300,10 @@ "REQ-GAPREPORT003" ], "failureModes": [ - "Incorrect output" + "gapreport produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from gapreport" ], "detectionControl": "requirement testing + unit tests" }, @@ -4312,10 +4312,10 @@ "item": "gapreport.Render", "component": "gapreport", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/gapreport/gapreport.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "gapreport/gapreport.go", + "failureMode": "gapreport returns an unexpected error", + "effect": "silent failure propagated to gapreport's caller", + "cause": "an unhandled error path in gapreport's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4325,10 +4325,10 @@ "REQ-GAPREPORT002" ], "failureModes": [ - "Returns unexpected error" + "gapreport returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to gapreport's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4337,10 +4337,10 @@ "item": "go-FuSa (fusa).AttestationContentHash", "component": "go-FuSa (fusa)", "function": "AttestationContentHash", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) returns an unexpected error", + "effect": "silent failure propagated to go-FuSa (fusa)'s caller", + "cause": "an unhandled error path in go-FuSa (fusa)'s function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4350,10 +4350,10 @@ "REQ-ATT003" ], "failureModes": [ - "Returns unexpected error" + "go-FuSa (fusa) returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to go-FuSa (fusa)'s caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4362,10 +4362,10 @@ "item": "go-FuSa (fusa).AttestationValid", "component": "go-FuSa (fusa)", "function": "AttestationValid", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) produces incorrect output for a given input combination", + "effect": "incorrect system behavior from go-FuSa (fusa)", + "cause": "a logic error in go-FuSa (fusa) not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4375,10 +4375,10 @@ "REQ-ATT002" ], "failureModes": [ - "Incorrect output" + "go-FuSa (fusa) produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from go-FuSa (fusa)" ], "detectionControl": "requirement testing + unit tests" }, @@ -4387,10 +4387,10 @@ "item": "go-FuSa (fusa).CanonicalizeJSON", "component": "go-FuSa (fusa)", "function": "CanonicalizeJSON", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) returns an unexpected error", + "effect": "silent failure propagated to go-FuSa (fusa)'s caller", + "cause": "an unhandled error path in go-FuSa (fusa)'s function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4400,10 +4400,10 @@ "REQ-ATT004" ], "failureModes": [ - "Returns unexpected error" + "go-FuSa (fusa) returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to go-FuSa (fusa)'s caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4412,10 +4412,10 @@ "item": "go-FuSa (fusa).ComputeFingerprint", "component": "go-FuSa (fusa)", "function": "ComputeFingerprint", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) produces incorrect output for a given input combination", + "effect": "incorrect system behavior from go-FuSa (fusa)", + "cause": "a logic error in go-FuSa (fusa) not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4425,10 +4425,10 @@ "REQ-FP001" ], "failureModes": [ - "Incorrect output" + "go-FuSa (fusa) produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from go-FuSa (fusa)" ], "detectionControl": "requirement testing + unit tests" }, @@ -4437,10 +4437,10 @@ "item": "go-FuSa (fusa).DeriveCategory", "component": "go-FuSa (fusa)", "function": "DeriveCategory", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) produces incorrect output for a given input combination", + "effect": "incorrect system behavior from go-FuSa (fusa)", + "cause": "a logic error in go-FuSa (fusa) not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4450,10 +4450,10 @@ "REQ-CAT001" ], "failureModes": [ - "Incorrect output" + "go-FuSa (fusa) produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from go-FuSa (fusa)" ], "detectionControl": "requirement testing + unit tests" }, @@ -4462,20 +4462,20 @@ "item": "go-FuSa (fusa).NowRFC3339", "component": "go-FuSa (fusa)", "function": "NowRFC3339", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from go-FuSa (fusa)", + "cause": "a logic error in go-FuSa (fusa) not surfaced as an error return or panic", "severity": "low", "actionPriority": "low", "mitigations": [ "add requirement-traced unit tests covering this function's documented behaviour" ], "failureModes": [ - "Incorrect output" + "go-FuSa (fusa) produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from go-FuSa (fusa)" ], "detectionControl": "unit tests" }, @@ -4484,10 +4484,10 @@ "item": "go-FuSa (fusa).ResolveDoc", "component": "go-FuSa (fusa)", "function": "ResolveDoc", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) produces incorrect output for a given input combination", + "effect": "incorrect system behavior from go-FuSa (fusa)", + "cause": "a logic error in go-FuSa (fusa) not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4497,10 +4497,10 @@ "REQ-DOC001" ], "failureModes": [ - "Incorrect output" + "go-FuSa (fusa) produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from go-FuSa (fusa)" ], "detectionControl": "requirement testing + unit tests" }, @@ -4509,20 +4509,20 @@ "item": "go-FuSa (fusa).SchemaVersion", "component": "go-FuSa (fusa)", "function": "SchemaVersion", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from go-FuSa (fusa)", + "cause": "a logic error in go-FuSa (fusa) not surfaced as an error return or panic", "severity": "low", "actionPriority": "low", "mitigations": [ "add requirement-traced unit tests covering this function's documented behaviour" ], "failureModes": [ - "Incorrect output" + "go-FuSa (fusa) produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from go-FuSa (fusa)" ], "detectionControl": "unit tests" }, @@ -4531,20 +4531,20 @@ "item": "go-FuSa (fusa).String", "component": "go-FuSa (fusa)", "function": "String", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "fusa.go", + "failureMode": "go-FuSa (fusa) returns stale or inconsistent receiver state", + "effect": "caller of go-FuSa (fusa) observes state that no longer reflects a concurrent mutation", + "cause": "go-FuSa (fusa) reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "go-FuSa (fusa) returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of go-FuSa (fusa) observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4553,10 +4553,10 @@ "item": "hara.BuildCompleteness", "component": "hara", "function": "BuildCompleteness", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara produces incorrect output for a given input combination", + "effect": "incorrect system behavior from hara", + "cause": "a logic error in hara not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4566,10 +4566,10 @@ "REQ-HARA017" ], "failureModes": [ - "Incorrect output" + "hara produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -4578,10 +4578,10 @@ "item": "hara.BuildReport", "component": "hara", "function": "BuildReport", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara produces incorrect output for a given input combination", + "effect": "incorrect system behavior from hara", + "cause": "a logic error in hara not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4591,10 +4591,10 @@ "REQ-HARA021" ], "failureModes": [ - "Incorrect output" + "hara produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -4603,20 +4603,20 @@ "item": "hara.Description", "component": "hara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4625,20 +4625,20 @@ "item": "hara.Description", "component": "hara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4647,20 +4647,20 @@ "item": "hara.Description", "component": "hara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4669,20 +4669,20 @@ "item": "hara.Description", "component": "hara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4691,20 +4691,20 @@ "item": "hara.Description", "component": "hara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4713,20 +4713,20 @@ "item": "hara.Description", "component": "hara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4735,20 +4735,20 @@ "item": "hara.Description", "component": "hara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4757,10 +4757,10 @@ "item": "hara.DetermineASIL", "component": "hara", "function": "DetermineASIL", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara produces incorrect output for a given input combination", + "effect": "incorrect system behavior from hara", + "cause": "a logic error in hara not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4770,10 +4770,10 @@ "REQ-HARA006" ], "failureModes": [ - "Incorrect output" + "hara produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -4782,20 +4782,20 @@ "item": "hara.ID", "component": "hara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4804,20 +4804,20 @@ "item": "hara.ID", "component": "hara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4826,20 +4826,20 @@ "item": "hara.ID", "component": "hara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4848,20 +4848,20 @@ "item": "hara.ID", "component": "hara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4870,20 +4870,20 @@ "item": "hara.ID", "component": "hara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4892,20 +4892,20 @@ "item": "hara.ID", "component": "hara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4914,20 +4914,20 @@ "item": "hara.ID", "component": "hara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara returns stale or inconsistent receiver state", + "effect": "caller of hara observes state that no longer reflects a concurrent mutation", + "cause": "hara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "hara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of hara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -4936,10 +4936,10 @@ "item": "hara.Load", "component": "hara", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error", + "effect": "silent failure propagated to hara's caller", + "cause": "an unhandled error path in hara's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4949,10 +4949,10 @@ "REQ-HARA007" ], "failureModes": [ - "Returns unexpected error" + "hara returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to hara's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4961,10 +4961,10 @@ "item": "hara.Render", "component": "hara", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error", + "effect": "silent failure propagated to hara's caller", + "cause": "an unhandled error path in hara's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -4974,10 +4974,10 @@ "REQ-HARA010" ], "failureModes": [ - "Returns unexpected error" + "hara returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to hara's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -4986,10 +4986,10 @@ "item": "hara.Run", "component": "hara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; uncontrolled execution in hara", + "effect": "silent failure propagated to hara's caller; resource exhaustion triggered from hara", + "cause": "an unhandled error path in hara's function body or a callee; no bound on iteration count, input size, or execution time in hara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5000,12 +5000,12 @@ "REQ-HARA014" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "hara returns an unexpected error", + "uncontrolled execution in hara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to hara's caller", + "resource exhaustion triggered from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5014,10 +5014,10 @@ "item": "hara.Run", "component": "hara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; uncontrolled execution in hara", + "effect": "silent failure propagated to hara's caller; resource exhaustion triggered from hara", + "cause": "an unhandled error path in hara's function body or a callee; no bound on iteration count, input size, or execution time in hara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5028,12 +5028,12 @@ "REQ-HARA020" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "hara returns an unexpected error", + "uncontrolled execution in hara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to hara's caller", + "resource exhaustion triggered from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5042,10 +5042,10 @@ "item": "hara.Run", "component": "hara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; uncontrolled execution in hara", + "effect": "silent failure propagated to hara's caller; resource exhaustion triggered from hara", + "cause": "an unhandled error path in hara's function body or a callee; no bound on iteration count, input size, or execution time in hara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5056,12 +5056,12 @@ "REQ-HARA012" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "hara returns an unexpected error", + "uncontrolled execution in hara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to hara's caller", + "resource exhaustion triggered from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5070,10 +5070,10 @@ "item": "hara.Run", "component": "hara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; uncontrolled execution in hara", + "effect": "silent failure propagated to hara's caller; resource exhaustion triggered from hara", + "cause": "an unhandled error path in hara's function body or a callee; no bound on iteration count, input size, or execution time in hara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5084,12 +5084,12 @@ "REQ-HARA015" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "hara returns an unexpected error", + "uncontrolled execution in hara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to hara's caller", + "resource exhaustion triggered from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5098,10 +5098,10 @@ "item": "hara.Run", "component": "hara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; uncontrolled execution in hara", + "effect": "silent failure propagated to hara's caller; resource exhaustion triggered from hara", + "cause": "an unhandled error path in hara's function body or a callee; no bound on iteration count, input size, or execution time in hara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5112,12 +5112,12 @@ "REQ-HARA011" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "hara returns an unexpected error", + "uncontrolled execution in hara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to hara's caller", + "resource exhaustion triggered from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5126,10 +5126,10 @@ "item": "hara.Run", "component": "hara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; uncontrolled execution in hara", + "effect": "silent failure propagated to hara's caller; resource exhaustion triggered from hara", + "cause": "an unhandled error path in hara's function body or a callee; no bound on iteration count, input size, or execution time in hara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5140,12 +5140,12 @@ "REQ-HARA013" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "hara returns an unexpected error", + "uncontrolled execution in hara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to hara's caller", + "resource exhaustion triggered from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5154,10 +5154,10 @@ "item": "hara.Run", "component": "hara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; uncontrolled execution in hara", + "effect": "silent failure propagated to hara's caller; resource exhaustion triggered from hara", + "cause": "an unhandled error path in hara's function body or a callee; no bound on iteration count, input size, or execution time in hara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5168,12 +5168,12 @@ "REQ-HARA019" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "hara returns an unexpected error", + "uncontrolled execution in hara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to hara's caller", + "resource exhaustion triggered from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5182,10 +5182,10 @@ "item": "hara.Save", "component": "hara", "function": "Save", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "hara/hara.go", + "failureMode": "hara returns an unexpected error; partial write / data corruption in hara", + "effect": "silent failure propagated to hara's caller; incorrect persisted state for hara", + "cause": "an unhandled error path in hara's function body or a callee; an interrupted write in hara (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5196,12 +5196,12 @@ "REQ-HARA008" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "hara returns an unexpected error", + "partial write / data corruption in hara" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to hara's caller", + "incorrect persisted state for hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5210,10 +5210,10 @@ "item": "hara.Validate", "component": "hara", "function": "Validate", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara produces incorrect output for a given input combination", + "effect": "incorrect system behavior from hara", + "cause": "a logic error in hara not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5223,10 +5223,10 @@ "REQ-HARA009" ], "failureModes": [ - "Incorrect output" + "hara produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5235,10 +5235,10 @@ "item": "hara.ValidateReqRefs", "component": "hara", "function": "ValidateReqRefs", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "hara/hara.go", + "failureMode": "hara produces incorrect output for a given input combination", + "effect": "incorrect system behavior from hara", + "cause": "a logic error in hara not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5248,10 +5248,10 @@ "REQ-HARA018" ], "failureModes": [ - "Incorrect output" + "hara produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from hara" ], "detectionControl": "requirement testing + unit tests" }, @@ -5260,10 +5260,10 @@ "item": "iec61508.Assess", "component": "iec61508", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iec61508/iec61508.go", + "failureMode": "iec61508 returns an unexpected error", + "effect": "silent failure propagated to iec61508's caller", + "cause": "an unhandled error path in iec61508's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5273,10 +5273,10 @@ "REQ-IEC61508-001" ], "failureModes": [ - "Returns unexpected error" + "iec61508 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iec61508's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5285,20 +5285,20 @@ "item": "iec61508.Description", "component": "iec61508", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec61508/iec61508.go", + "failureMode": "iec61508 returns stale or inconsistent receiver state", + "effect": "caller of iec61508 observes state that no longer reflects a concurrent mutation", + "cause": "iec61508 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec61508 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec61508 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5307,20 +5307,20 @@ "item": "iec61508.ID", "component": "iec61508", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec61508/iec61508.go", + "failureMode": "iec61508 returns stale or inconsistent receiver state", + "effect": "caller of iec61508 observes state that no longer reflects a concurrent mutation", + "cause": "iec61508 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec61508 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec61508 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5329,10 +5329,10 @@ "item": "iec61508.Render", "component": "iec61508", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iec61508/iec61508.go", + "failureMode": "iec61508 returns an unexpected error", + "effect": "silent failure propagated to iec61508's caller", + "cause": "an unhandled error path in iec61508's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5342,10 +5342,10 @@ "REQ-IEC61508-003" ], "failureModes": [ - "Returns unexpected error" + "iec61508 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iec61508's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5354,10 +5354,10 @@ "item": "iec61508.Run", "component": "iec61508", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iec61508/iec61508.go", + "failureMode": "iec61508 returns an unexpected error; uncontrolled execution in iec61508", + "effect": "silent failure propagated to iec61508's caller; resource exhaustion triggered from iec61508", + "cause": "an unhandled error path in iec61508's function body or a callee; no bound on iteration count, input size, or execution time in iec61508", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5368,12 +5368,12 @@ "REQ-IEC61508-004" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iec61508 returns an unexpected error", + "uncontrolled execution in iec61508" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iec61508's caller", + "resource exhaustion triggered from iec61508" ], "detectionControl": "requirement testing + unit tests" }, @@ -5382,10 +5382,10 @@ "item": "iec62443.Assess", "component": "iec62443", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/assess.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iec62443/assess.go", + "failureMode": "iec62443 returns an unexpected error", + "effect": "silent failure propagated to iec62443's caller", + "cause": "an unhandled error path in iec62443's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5395,10 +5395,10 @@ "REQ-IEC62443-ASSESS003" ], "failureModes": [ - "Returns unexpected error" + "iec62443 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iec62443's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5407,20 +5407,20 @@ "item": "iec62443.Description", "component": "iec62443", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5429,20 +5429,20 @@ "item": "iec62443.Description", "component": "iec62443", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5451,20 +5451,20 @@ "item": "iec62443.Description", "component": "iec62443", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5473,20 +5473,20 @@ "item": "iec62443.Description", "component": "iec62443", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5495,20 +5495,20 @@ "item": "iec62443.ID", "component": "iec62443", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5517,20 +5517,20 @@ "item": "iec62443.ID", "component": "iec62443", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5539,20 +5539,20 @@ "item": "iec62443.ID", "component": "iec62443", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5561,20 +5561,20 @@ "item": "iec62443.ID", "component": "iec62443", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns stale or inconsistent receiver state", + "effect": "caller of iec62443 observes state that no longer reflects a concurrent mutation", + "cause": "iec62443 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iec62443 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iec62443 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5583,10 +5583,10 @@ "item": "iec62443.LoadConfig", "component": "iec62443", "function": "LoadConfig", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns an unexpected error", + "effect": "silent failure propagated to iec62443's caller", + "cause": "an unhandled error path in iec62443's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5596,10 +5596,10 @@ "REQ-IEC62443-001" ], "failureModes": [ - "Returns unexpected error" + "iec62443 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iec62443's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5608,10 +5608,10 @@ "item": "iec62443.Render", "component": "iec62443", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/assess.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iec62443/assess.go", + "failureMode": "iec62443 returns an unexpected error", + "effect": "silent failure propagated to iec62443's caller", + "cause": "an unhandled error path in iec62443's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5621,10 +5621,10 @@ "REQ-IEC62443-ASSESS004" ], "failureModes": [ - "Returns unexpected error" + "iec62443 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iec62443's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5633,10 +5633,10 @@ "item": "iec62443.Run", "component": "iec62443", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns an unexpected error; uncontrolled execution in iec62443", + "effect": "silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443", + "cause": "an unhandled error path in iec62443's function body or a callee; no bound on iteration count, input size, or execution time in iec62443", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5647,12 +5647,12 @@ "REQ-IEC62443-002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iec62443 returns an unexpected error", + "uncontrolled execution in iec62443" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iec62443's caller", + "resource exhaustion triggered from iec62443" ], "detectionControl": "requirement testing + unit tests" }, @@ -5661,10 +5661,10 @@ "item": "iec62443.Run", "component": "iec62443", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns an unexpected error; uncontrolled execution in iec62443", + "effect": "silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443", + "cause": "an unhandled error path in iec62443's function body or a callee; no bound on iteration count, input size, or execution time in iec62443", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5675,12 +5675,12 @@ "REQ-IEC62443-003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iec62443 returns an unexpected error", + "uncontrolled execution in iec62443" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iec62443's caller", + "resource exhaustion triggered from iec62443" ], "detectionControl": "requirement testing + unit tests" }, @@ -5689,10 +5689,10 @@ "item": "iec62443.Run", "component": "iec62443", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns an unexpected error; uncontrolled execution in iec62443", + "effect": "silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443", + "cause": "an unhandled error path in iec62443's function body or a callee; no bound on iteration count, input size, or execution time in iec62443", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5703,12 +5703,12 @@ "REQ-IEC62443-004" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iec62443 returns an unexpected error", + "uncontrolled execution in iec62443" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iec62443's caller", + "resource exhaustion triggered from iec62443" ], "detectionControl": "requirement testing + unit tests" }, @@ -5717,10 +5717,10 @@ "item": "iec62443.Run", "component": "iec62443", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/iec62443.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iec62443/iec62443.go", + "failureMode": "iec62443 returns an unexpected error; uncontrolled execution in iec62443", + "effect": "silent failure propagated to iec62443's caller; resource exhaustion triggered from iec62443", + "cause": "an unhandled error path in iec62443's function body or a callee; no bound on iteration count, input size, or execution time in iec62443", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5731,12 +5731,12 @@ "REQ-IEC62443-001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iec62443 returns an unexpected error", + "uncontrolled execution in iec62443" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iec62443's caller", + "resource exhaustion triggered from iec62443" ], "detectionControl": "requirement testing + unit tests" }, @@ -5745,10 +5745,10 @@ "item": "impact.Analyse", "component": "impact", "function": "Analyse", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "impact/impact.go", + "failureMode": "impact returns an unexpected error", + "effect": "silent failure propagated to impact's caller", + "cause": "an unhandled error path in impact's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5758,10 +5758,10 @@ "REQ-IMPACT001" ], "failureModes": [ - "Returns unexpected error" + "impact returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to impact's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5770,10 +5770,10 @@ "item": "impact.Render", "component": "impact", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "impact/impact.go", + "failureMode": "impact returns an unexpected error", + "effect": "silent failure propagated to impact's caller", + "cause": "an unhandled error path in impact's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5783,10 +5783,10 @@ "REQ-IMPACT005" ], "failureModes": [ - "Returns unexpected error" + "impact returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to impact's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5795,10 +5795,10 @@ "item": "iso21434.Assess", "component": "iso21434", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iso21434/iso21434.go", + "failureMode": "iso21434 returns an unexpected error", + "effect": "silent failure propagated to iso21434's caller", + "cause": "an unhandled error path in iso21434's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5808,10 +5808,10 @@ "REQ-ISO21434-002" ], "failureModes": [ - "Returns unexpected error" + "iso21434 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iso21434's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5820,20 +5820,20 @@ "item": "iso21434.Description", "component": "iso21434", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso21434/iso21434.go", + "failureMode": "iso21434 returns stale or inconsistent receiver state", + "effect": "caller of iso21434 observes state that no longer reflects a concurrent mutation", + "cause": "iso21434 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso21434 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso21434 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5842,20 +5842,20 @@ "item": "iso21434.ID", "component": "iso21434", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso21434/iso21434.go", + "failureMode": "iso21434 returns stale or inconsistent receiver state", + "effect": "caller of iso21434 observes state that no longer reflects a concurrent mutation", + "cause": "iso21434 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso21434 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso21434 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5864,10 +5864,10 @@ "item": "iso21434.Render", "component": "iso21434", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iso21434/iso21434.go", + "failureMode": "iso21434 returns an unexpected error", + "effect": "silent failure propagated to iso21434's caller", + "cause": "an unhandled error path in iso21434's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5877,10 +5877,10 @@ "REQ-ISO21434-003" ], "failureModes": [ - "Returns unexpected error" + "iso21434 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iso21434's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5889,10 +5889,10 @@ "item": "iso21434.Run", "component": "iso21434", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iso21434/iso21434.go", + "failureMode": "iso21434 returns an unexpected error; uncontrolled execution in iso21434", + "effect": "silent failure propagated to iso21434's caller; resource exhaustion triggered from iso21434", + "cause": "an unhandled error path in iso21434's function body or a callee; no bound on iteration count, input size, or execution time in iso21434", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5903,12 +5903,12 @@ "REQ-ISO21434-001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iso21434 returns an unexpected error", + "uncontrolled execution in iso21434" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iso21434's caller", + "resource exhaustion triggered from iso21434" ], "detectionControl": "requirement testing + unit tests" }, @@ -5917,10 +5917,10 @@ "item": "iso26262.Assess", "component": "iso26262", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns an unexpected error", + "effect": "silent failure propagated to iso26262's caller", + "cause": "an unhandled error path in iso26262's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -5930,10 +5930,10 @@ "REQ-ISO26262-001" ], "failureModes": [ - "Returns unexpected error" + "iso26262 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iso26262's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -5942,20 +5942,20 @@ "item": "iso26262.Description", "component": "iso26262", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns stale or inconsistent receiver state", + "effect": "caller of iso26262 observes state that no longer reflects a concurrent mutation", + "cause": "iso26262 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso26262 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso26262 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5964,20 +5964,20 @@ "item": "iso26262.Description", "component": "iso26262", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns stale or inconsistent receiver state", + "effect": "caller of iso26262 observes state that no longer reflects a concurrent mutation", + "cause": "iso26262 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso26262 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso26262 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -5986,20 +5986,20 @@ "item": "iso26262.Description", "component": "iso26262", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns stale or inconsistent receiver state", + "effect": "caller of iso26262 observes state that no longer reflects a concurrent mutation", + "cause": "iso26262 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso26262 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso26262 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6008,20 +6008,20 @@ "item": "iso26262.ID", "component": "iso26262", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns stale or inconsistent receiver state", + "effect": "caller of iso26262 observes state that no longer reflects a concurrent mutation", + "cause": "iso26262 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso26262 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso26262 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6030,20 +6030,20 @@ "item": "iso26262.ID", "component": "iso26262", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns stale or inconsistent receiver state", + "effect": "caller of iso26262 observes state that no longer reflects a concurrent mutation", + "cause": "iso26262 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso26262 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso26262 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6052,20 +6052,20 @@ "item": "iso26262.ID", "component": "iso26262", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns stale or inconsistent receiver state", + "effect": "caller of iso26262 observes state that no longer reflects a concurrent mutation", + "cause": "iso26262 reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "iso26262 returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of iso26262 observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6074,10 +6074,10 @@ "item": "iso26262.Render", "component": "iso26262", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns an unexpected error", + "effect": "silent failure propagated to iso26262's caller", + "cause": "an unhandled error path in iso26262's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6087,10 +6087,10 @@ "REQ-ISO26262-003" ], "failureModes": [ - "Returns unexpected error" + "iso26262 returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to iso26262's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6099,10 +6099,10 @@ "item": "iso26262.Run", "component": "iso26262", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns an unexpected error; uncontrolled execution in iso26262", + "effect": "silent failure propagated to iso26262's caller; resource exhaustion triggered from iso26262", + "cause": "an unhandled error path in iso26262's function body or a callee; no bound on iteration count, input size, or execution time in iso26262", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6113,12 +6113,12 @@ "REQ-ISO26262-006" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iso26262 returns an unexpected error", + "uncontrolled execution in iso26262" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iso26262's caller", + "resource exhaustion triggered from iso26262" ], "detectionControl": "requirement testing + unit tests" }, @@ -6127,10 +6127,10 @@ "item": "iso26262.Run", "component": "iso26262", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns an unexpected error; uncontrolled execution in iso26262", + "effect": "silent failure propagated to iso26262's caller; resource exhaustion triggered from iso26262", + "cause": "an unhandled error path in iso26262's function body or a callee; no bound on iteration count, input size, or execution time in iso26262", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6141,12 +6141,12 @@ "REQ-ISO26262-005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iso26262 returns an unexpected error", + "uncontrolled execution in iso26262" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iso26262's caller", + "resource exhaustion triggered from iso26262" ], "detectionControl": "requirement testing + unit tests" }, @@ -6155,10 +6155,10 @@ "item": "iso26262.Run", "component": "iso26262", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "iso26262/iso26262.go", + "failureMode": "iso26262 returns an unexpected error; uncontrolled execution in iso26262", + "effect": "silent failure propagated to iso26262's caller; resource exhaustion triggered from iso26262", + "cause": "an unhandled error path in iso26262's function body or a callee; no bound on iteration count, input size, or execution time in iso26262", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6169,12 +6169,12 @@ "REQ-ISO26262-004" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "iso26262 returns an unexpected error", + "uncontrolled execution in iso26262" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to iso26262's caller", + "resource exhaustion triggered from iso26262" ], "detectionControl": "requirement testing + unit tests" }, @@ -6183,20 +6183,20 @@ "item": "lint.Description", "component": "lint", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6205,20 +6205,20 @@ "item": "lint.Description", "component": "lint", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6227,20 +6227,20 @@ "item": "lint.Description", "component": "lint", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6249,20 +6249,20 @@ "item": "lint.Description", "component": "lint", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6271,20 +6271,20 @@ "item": "lint.Description", "component": "lint", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6293,20 +6293,20 @@ "item": "lint.Description", "component": "lint", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6315,20 +6315,20 @@ "item": "lint.ID", "component": "lint", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6337,20 +6337,20 @@ "item": "lint.ID", "component": "lint", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6359,20 +6359,20 @@ "item": "lint.ID", "component": "lint", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6381,20 +6381,20 @@ "item": "lint.ID", "component": "lint", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6403,20 +6403,20 @@ "item": "lint.ID", "component": "lint", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6425,20 +6425,20 @@ "item": "lint.ID", "component": "lint", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "lint/lint.go", + "failureMode": "lint returns stale or inconsistent receiver state", + "effect": "caller of lint observes state that no longer reflects a concurrent mutation", + "cause": "lint reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "lint returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of lint observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6447,10 +6447,10 @@ "item": "lint.Run", "component": "lint", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "lint/lint.go", + "failureMode": "lint returns an unexpected error; uncontrolled execution in lint", + "effect": "silent failure propagated to lint's caller; resource exhaustion triggered from lint", + "cause": "an unhandled error path in lint's function body or a callee; no bound on iteration count, input size, or execution time in lint", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6461,12 +6461,12 @@ "REQ-LINT002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "lint returns an unexpected error", + "uncontrolled execution in lint" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to lint's caller", + "resource exhaustion triggered from lint" ], "detectionControl": "requirement testing + unit tests" }, @@ -6475,10 +6475,10 @@ "item": "lint.Run", "component": "lint", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "lint/lint.go", + "failureMode": "lint returns an unexpected error; uncontrolled execution in lint", + "effect": "silent failure propagated to lint's caller; resource exhaustion triggered from lint", + "cause": "an unhandled error path in lint's function body or a callee; no bound on iteration count, input size, or execution time in lint", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6489,12 +6489,12 @@ "REQ-LINT005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "lint returns an unexpected error", + "uncontrolled execution in lint" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to lint's caller", + "resource exhaustion triggered from lint" ], "detectionControl": "requirement testing + unit tests" }, @@ -6503,10 +6503,10 @@ "item": "lint.Run", "component": "lint", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "lint/lint.go", + "failureMode": "lint returns an unexpected error; uncontrolled execution in lint", + "effect": "silent failure propagated to lint's caller; resource exhaustion triggered from lint", + "cause": "an unhandled error path in lint's function body or a callee; no bound on iteration count, input size, or execution time in lint", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6517,12 +6517,12 @@ "REQ-LINT003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "lint returns an unexpected error", + "uncontrolled execution in lint" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to lint's caller", + "resource exhaustion triggered from lint" ], "detectionControl": "requirement testing + unit tests" }, @@ -6531,10 +6531,10 @@ "item": "lint.Run", "component": "lint", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "lint/lint.go", + "failureMode": "lint returns an unexpected error; uncontrolled execution in lint", + "effect": "silent failure propagated to lint's caller; resource exhaustion triggered from lint", + "cause": "an unhandled error path in lint's function body or a callee; no bound on iteration count, input size, or execution time in lint", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6545,12 +6545,12 @@ "REQ-LINT001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "lint returns an unexpected error", + "uncontrolled execution in lint" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to lint's caller", + "resource exhaustion triggered from lint" ], "detectionControl": "requirement testing + unit tests" }, @@ -6559,10 +6559,10 @@ "item": "lint.Run", "component": "lint", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "lint/lint.go", + "failureMode": "lint returns an unexpected error; uncontrolled execution in lint", + "effect": "silent failure propagated to lint's caller; resource exhaustion triggered from lint", + "cause": "an unhandled error path in lint's function body or a callee; no bound on iteration count, input size, or execution time in lint", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6573,12 +6573,12 @@ "REQ-LINT006" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "lint returns an unexpected error", + "uncontrolled execution in lint" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to lint's caller", + "resource exhaustion triggered from lint" ], "detectionControl": "requirement testing + unit tests" }, @@ -6587,10 +6587,10 @@ "item": "lint.Run", "component": "lint", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/lint/lint.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "lint/lint.go", + "failureMode": "lint returns an unexpected error; uncontrolled execution in lint", + "effect": "silent failure propagated to lint's caller; resource exhaustion triggered from lint", + "cause": "an unhandled error path in lint's function body or a callee; no bound on iteration count, input size, or execution time in lint", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6601,12 +6601,12 @@ "REQ-LINT004" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "lint returns an unexpected error", + "uncontrolled execution in lint" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to lint's caller", + "resource exhaustion triggered from lint" ], "detectionControl": "requirement testing + unit tests" }, @@ -6615,10 +6615,10 @@ "item": "metrics.Append", "component": "metrics", "function": "Append", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "metrics/metrics.go", + "failureMode": "metrics produces incorrect output for a given input combination", + "effect": "incorrect system behavior from metrics", + "cause": "a logic error in metrics not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6628,10 +6628,10 @@ "REQ-METRICS005" ], "failureModes": [ - "Incorrect output" + "metrics produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from metrics" ], "detectionControl": "requirement testing + unit tests" }, @@ -6640,10 +6640,10 @@ "item": "metrics.Collect", "component": "metrics", "function": "Collect", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "metrics/metrics.go", + "failureMode": "metrics returns an unexpected error", + "effect": "silent failure propagated to metrics's caller", + "cause": "an unhandled error path in metrics's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6653,10 +6653,10 @@ "REQ-METRICS006" ], "failureModes": [ - "Returns unexpected error" + "metrics returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to metrics's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6665,10 +6665,10 @@ "item": "metrics.Load", "component": "metrics", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "metrics/metrics.go", + "failureMode": "metrics returns an unexpected error", + "effect": "silent failure propagated to metrics's caller", + "cause": "an unhandled error path in metrics's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6678,10 +6678,10 @@ "REQ-METRICS003" ], "failureModes": [ - "Returns unexpected error" + "metrics returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to metrics's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6690,10 +6690,10 @@ "item": "metrics.Render", "component": "metrics", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "metrics/metrics.go", + "failureMode": "metrics returns an unexpected error", + "effect": "silent failure propagated to metrics's caller", + "cause": "an unhandled error path in metrics's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6703,10 +6703,10 @@ "REQ-METRICS007" ], "failureModes": [ - "Returns unexpected error" + "metrics returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to metrics's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6715,10 +6715,10 @@ "item": "metrics.Save", "component": "metrics", "function": "Save", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "metrics/metrics.go", + "failureMode": "metrics returns an unexpected error; partial write / data corruption in metrics", + "effect": "silent failure propagated to metrics's caller; incorrect persisted state for metrics", + "cause": "an unhandled error path in metrics's function body or a callee; an interrupted write in metrics (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6729,12 +6729,12 @@ "REQ-METRICS004" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "metrics returns an unexpected error", + "partial write / data corruption in metrics" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to metrics's caller", + "incorrect persisted state for metrics" ], "detectionControl": "requirement testing + unit tests" }, @@ -6743,10 +6743,10 @@ "item": "misra.Assess", "component": "misra", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/misra/misra.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "misra/misra.go", + "failureMode": "misra produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from misra", + "cause": "a logic error in misra not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6756,10 +6756,10 @@ "REQ-MISRA004" ], "failureModes": [ - "Incorrect output" + "misra produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from misra" ], "detectionControl": "requirement testing + unit tests" }, @@ -6768,10 +6768,10 @@ "item": "misra.Render", "component": "misra", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/misra/misra.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "misra/misra.go", + "failureMode": "misra returns an unexpected error", + "effect": "silent failure propagated to misra's caller", + "cause": "an unhandled error path in misra's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6781,10 +6781,10 @@ "REQ-MISRA005" ], "failureModes": [ - "Returns unexpected error" + "misra returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to misra's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6793,10 +6793,10 @@ "item": "pr.Add", "component": "pr", "function": "Add", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "pr/pr.go", + "failureMode": "pr returns an unexpected error", + "effect": "silent failure propagated to pr's caller", + "cause": "an unhandled error path in pr's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6806,10 +6806,10 @@ "REQ-PR003" ], "failureModes": [ - "Returns unexpected error" + "pr returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to pr's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6818,10 +6818,10 @@ "item": "pr.Close", "component": "pr", "function": "Close", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "pr/pr.go", + "failureMode": "pr returns an unexpected error", + "effect": "silent failure propagated to pr's caller", + "cause": "an unhandled error path in pr's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6831,10 +6831,10 @@ "REQ-PR004" ], "failureModes": [ - "Returns unexpected error" + "pr returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to pr's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6843,20 +6843,20 @@ "item": "pr.Description", "component": "pr", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "pr/pr.go", + "failureMode": "pr returns stale or inconsistent receiver state", + "effect": "caller of pr observes state that no longer reflects a concurrent mutation", + "cause": "pr reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "pr returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of pr observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6865,20 +6865,20 @@ "item": "pr.ID", "component": "pr", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "pr/pr.go", + "failureMode": "pr returns stale or inconsistent receiver state", + "effect": "caller of pr observes state that no longer reflects a concurrent mutation", + "cause": "pr reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "pr returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of pr observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -6887,10 +6887,10 @@ "item": "pr.Load", "component": "pr", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "pr/pr.go", + "failureMode": "pr returns an unexpected error", + "effect": "silent failure propagated to pr's caller", + "cause": "an unhandled error path in pr's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6900,10 +6900,10 @@ "REQ-PR001" ], "failureModes": [ - "Returns unexpected error" + "pr returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to pr's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6912,10 +6912,10 @@ "item": "pr.Render", "component": "pr", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "pr/pr.go", + "failureMode": "pr returns an unexpected error", + "effect": "silent failure propagated to pr's caller", + "cause": "an unhandled error path in pr's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6925,10 +6925,10 @@ "REQ-PR003" ], "failureModes": [ - "Returns unexpected error" + "pr returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to pr's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -6937,10 +6937,10 @@ "item": "pr.Run", "component": "pr", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "pr/pr.go", + "failureMode": "pr returns an unexpected error; uncontrolled execution in pr", + "effect": "silent failure propagated to pr's caller; resource exhaustion triggered from pr", + "cause": "an unhandled error path in pr's function body or a callee; no bound on iteration count, input size, or execution time in pr", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6951,12 +6951,12 @@ "REQ-PR001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "pr returns an unexpected error", + "uncontrolled execution in pr" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to pr's caller", + "resource exhaustion triggered from pr" ], "detectionControl": "requirement testing + unit tests" }, @@ -6965,10 +6965,10 @@ "item": "pr.Save", "component": "pr", "function": "Save", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "pr/pr.go", + "failureMode": "pr returns an unexpected error; partial write / data corruption in pr", + "effect": "silent failure propagated to pr's caller; incorrect persisted state for pr", + "cause": "an unhandled error path in pr's function body or a callee; an interrupted write in pr (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -6979,12 +6979,12 @@ "REQ-PR002" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "pr returns an unexpected error", + "partial write / data corruption in pr" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to pr's caller", + "incorrect persisted state for pr" ], "detectionControl": "requirement testing + unit tests" }, @@ -6993,10 +6993,10 @@ "item": "qualify.BuiltinCases", "component": "qualify", "function": "BuiltinCases", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "qualify/qualify.go", + "failureMode": "qualify produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from qualify", + "cause": "a logic error in qualify not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7006,10 +7006,10 @@ "REQ-QUALIFY006" ], "failureModes": [ - "Incorrect output" + "qualify produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from qualify" ], "detectionControl": "requirement testing + unit tests" }, @@ -7018,20 +7018,20 @@ "item": "qualify.Description", "component": "qualify", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "qualify/qualify.go", + "failureMode": "qualify returns stale or inconsistent receiver state", + "effect": "caller of qualify observes state that no longer reflects a concurrent mutation", + "cause": "qualify reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "qualify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of qualify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -7040,23 +7040,23 @@ "item": "qualify.HasFailures", "component": "qualify", "function": "HasFailures", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "qualify/qualify.go", + "failureMode": "qualify returns stale or inconsistent receiver state", + "effect": "caller of qualify observes state that no longer reflects a concurrent mutation", + "cause": "qualify reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-QUALIFY009" ], "failureModes": [ - "Incorrect output" + "qualify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of qualify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7065,20 +7065,20 @@ "item": "qualify.ID", "component": "qualify", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "qualify/qualify.go", + "failureMode": "qualify returns stale or inconsistent receiver state", + "effect": "caller of qualify observes state that no longer reflects a concurrent mutation", + "cause": "qualify reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "qualify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of qualify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -7087,23 +7087,23 @@ "item": "qualify.IndependenceStatus", "component": "qualify", "function": "IndependenceStatus", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "qualify/qualify.go", + "failureMode": "qualify returns stale or inconsistent receiver state", + "effect": "caller of qualify observes state that no longer reflects a concurrent mutation", + "cause": "qualify reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-QUALIFY008" ], "failureModes": [ - "Incorrect output" + "qualify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of qualify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7112,10 +7112,10 @@ "item": "qualify.Load", "component": "qualify", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "qualify/qualify.go", + "failureMode": "qualify returns an unexpected error", + "effect": "silent failure propagated to qualify's caller", + "cause": "an unhandled error path in qualify's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7125,10 +7125,10 @@ "REQ-QUALIFY005" ], "failureModes": [ - "Returns unexpected error" + "qualify returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to qualify's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7137,23 +7137,23 @@ "item": "qualify.QualificationBadge", "component": "qualify", "function": "QualificationBadge", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "qualify/qualify.go", + "failureMode": "qualify returns stale or inconsistent receiver state", + "effect": "caller of qualify observes state that no longer reflects a concurrent mutation", + "cause": "qualify reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-QUALIFY007" ], "failureModes": [ - "Incorrect output" + "qualify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of qualify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7162,10 +7162,10 @@ "item": "qualify.Run", "component": "qualify", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "qualify/qualify.go", + "failureMode": "qualify returns an unexpected error; uncontrolled execution in qualify", + "effect": "silent failure propagated to qualify's caller; resource exhaustion triggered from qualify", + "cause": "an unhandled error path in qualify's function body or a callee; no bound on iteration count, input size, or execution time in qualify", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7176,12 +7176,12 @@ "REQ-QUALIFY001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "qualify returns an unexpected error", + "uncontrolled execution in qualify" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to qualify's caller", + "resource exhaustion triggered from qualify" ], "detectionControl": "requirement testing + unit tests" }, @@ -7190,10 +7190,10 @@ "item": "qualify.Run", "component": "qualify", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "qualify/qualify.go", + "failureMode": "qualify returns an unexpected error; uncontrolled execution in qualify", + "effect": "silent failure propagated to qualify's caller; resource exhaustion triggered from qualify", + "cause": "an unhandled error path in qualify's function body or a callee; no bound on iteration count, input size, or execution time in qualify", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7204,12 +7204,12 @@ "REQ-QUALIFY001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "qualify returns an unexpected error", + "uncontrolled execution in qualify" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to qualify's caller", + "resource exhaustion triggered from qualify" ], "detectionControl": "requirement testing + unit tests" }, @@ -7218,10 +7218,10 @@ "item": "qualify.Save", "component": "qualify", "function": "Save", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/qualify/qualify.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "qualify/qualify.go", + "failureMode": "qualify returns an unexpected error; partial write / data corruption in qualify", + "effect": "silent failure propagated to qualify's caller; incorrect persisted state for qualify", + "cause": "an unhandled error path in qualify's function body or a callee; an interrupted write in qualify (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7232,12 +7232,12 @@ "REQ-QUALIFY004" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "qualify returns an unexpected error", + "partial write / data corruption in qualify" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to qualify's caller", + "incorrect persisted state for qualify" ], "detectionControl": "requirement testing + unit tests" }, @@ -7246,10 +7246,10 @@ "item": "release.BuildManifest", "component": "release", "function": "BuildManifest", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "release/release.go", + "failureMode": "release returns an unexpected error", + "effect": "silent failure propagated to release's caller", + "cause": "an unhandled error path in release's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7259,10 +7259,10 @@ "REQ-RELEASE008" ], "failureModes": [ - "Returns unexpected error" + "release returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to release's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7271,10 +7271,10 @@ "item": "release.BuildProvenance", "component": "release", "function": "BuildProvenance", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "release/release.go", + "failureMode": "release returns an unexpected error", + "effect": "silent failure propagated to release's caller", + "cause": "an unhandled error path in release's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7284,10 +7284,10 @@ "REQ-RELEASE005" ], "failureModes": [ - "Returns unexpected error" + "release returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to release's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7296,10 +7296,10 @@ "item": "release.BuildSBOM", "component": "release", "function": "BuildSBOM", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "release/release.go", + "failureMode": "release returns an unexpected error", + "effect": "silent failure propagated to release's caller", + "cause": "an unhandled error path in release's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7309,10 +7309,10 @@ "REQ-RELEASE003" ], "failureModes": [ - "Returns unexpected error" + "release returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to release's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7321,20 +7321,20 @@ "item": "release.Description", "component": "release", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release returns stale or inconsistent receiver state", + "effect": "caller of release observes state that no longer reflects a concurrent mutation", + "cause": "release reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "release returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of release observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -7343,20 +7343,20 @@ "item": "release.Description", "component": "release", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release returns stale or inconsistent receiver state", + "effect": "caller of release observes state that no longer reflects a concurrent mutation", + "cause": "release reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "release returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of release observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -7365,10 +7365,10 @@ "item": "release.DetectBuilder", "component": "release", "function": "DetectBuilder", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release produces incorrect output for a given input combination", + "effect": "incorrect system behavior from release", + "cause": "a logic error in release not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7378,10 +7378,10 @@ "REQ-RELEASE010" ], "failureModes": [ - "Incorrect output" + "release produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from release" ], "detectionControl": "requirement testing + unit tests" }, @@ -7390,10 +7390,10 @@ "item": "release.HashFiles", "component": "release", "function": "HashFiles", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "release/release.go", + "failureMode": "release returns an unexpected error", + "effect": "silent failure propagated to release's caller", + "cause": "an unhandled error path in release's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7403,10 +7403,10 @@ "REQ-RELEASE007" ], "failureModes": [ - "Returns unexpected error" + "release returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to release's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7415,20 +7415,20 @@ "item": "release.ID", "component": "release", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release returns stale or inconsistent receiver state", + "effect": "caller of release observes state that no longer reflects a concurrent mutation", + "cause": "release reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "release returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of release observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -7437,20 +7437,20 @@ "item": "release.ID", "component": "release", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release returns stale or inconsistent receiver state", + "effect": "caller of release observes state that no longer reflects a concurrent mutation", + "cause": "release reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "release returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of release observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -7459,10 +7459,10 @@ "item": "release.Run", "component": "release", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "release/release.go", + "failureMode": "release returns an unexpected error; uncontrolled execution in release", + "effect": "silent failure propagated to release's caller; resource exhaustion triggered from release", + "cause": "an unhandled error path in release's function body or a callee; no bound on iteration count, input size, or execution time in release", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7473,12 +7473,12 @@ "REQ-RELEASE001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "release returns an unexpected error", + "uncontrolled execution in release" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to release's caller", + "resource exhaustion triggered from release" ], "detectionControl": "requirement testing + unit tests" }, @@ -7487,10 +7487,10 @@ "item": "release.Run", "component": "release", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "release/release.go", + "failureMode": "release returns an unexpected error; uncontrolled execution in release", + "effect": "silent failure propagated to release's caller; resource exhaustion triggered from release", + "cause": "an unhandled error path in release's function body or a callee; no bound on iteration count, input size, or execution time in release", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7501,12 +7501,12 @@ "REQ-RELEASE002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "release returns an unexpected error", + "uncontrolled execution in release" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to release's caller", + "resource exhaustion triggered from release" ], "detectionControl": "requirement testing + unit tests" }, @@ -7515,10 +7515,10 @@ "item": "release.SaveJSON", "component": "release", "function": "SaveJSON", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "release/release.go", + "failureMode": "release returns an unexpected error; partial write / data corruption in release", + "effect": "silent failure propagated to release's caller; incorrect persisted state for release", + "cause": "an unhandled error path in release's function body or a callee; an interrupted write in release (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7529,12 +7529,12 @@ "REQ-RELEASE006" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "release returns an unexpected error", + "partial write / data corruption in release" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to release's caller", + "incorrect persisted state for release" ], "detectionControl": "requirement testing + unit tests" }, @@ -7543,10 +7543,10 @@ "item": "release.ToSPDX22", "component": "release", "function": "ToSPDX22", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release produces incorrect output for a given input combination", + "effect": "incorrect system behavior from release", + "cause": "a logic error in release not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7556,10 +7556,10 @@ "REQ-RELEASE009" ], "failureModes": [ - "Incorrect output" + "release produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from release" ], "detectionControl": "requirement testing + unit tests" }, @@ -7568,10 +7568,10 @@ "item": "release.ToSPDX23", "component": "release", "function": "ToSPDX23", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release produces incorrect output for a given input combination", + "effect": "incorrect system behavior from release", + "cause": "a logic error in release not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7581,10 +7581,10 @@ "REQ-RELEASE009" ], "failureModes": [ - "Incorrect output" + "release produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from release" ], "detectionControl": "requirement testing + unit tests" }, @@ -7593,10 +7593,10 @@ "item": "release.ToSPDX31", "component": "release", "function": "ToSPDX31", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/release/release.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "release/release.go", + "failureMode": "release produces incorrect output for a given input combination", + "effect": "incorrect system behavior from release", + "cause": "a logic error in release not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7606,10 +7606,10 @@ "REQ-RELEASE008" ], "failureModes": [ - "Incorrect output" + "release produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from release" ], "detectionControl": "requirement testing + unit tests" }, @@ -7618,10 +7618,10 @@ "item": "report.New", "component": "report", "function": "New", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/report/report.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "report/report.go", + "failureMode": "report produces incorrect output for a given input combination", + "effect": "incorrect system behavior from report", + "cause": "a logic error in report not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7632,10 +7632,10 @@ "REQ-NF002" ], "failureModes": [ - "Incorrect output" + "report produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from report" ], "detectionControl": "requirement testing + unit tests" }, @@ -7644,10 +7644,10 @@ "item": "report.Render", "component": "report", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/report/report.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "report/report.go", + "failureMode": "report returns an unexpected error", + "effect": "silent failure propagated to report's caller", + "cause": "an unhandled error path in report's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7657,10 +7657,10 @@ "REQ-REPORT001" ], "failureModes": [ - "Returns unexpected error" + "report returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to report's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7669,10 +7669,10 @@ "item": "report.RenderEvidenceHTML", "component": "report", "function": "RenderEvidenceHTML", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/report/html_bundle.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "report/html_bundle.go", + "failureMode": "report returns an unexpected error", + "effect": "silent failure propagated to report's caller", + "cause": "an unhandled error path in report's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7682,10 +7682,10 @@ "REQ-HTML004" ], "failureModes": [ - "Returns unexpected error" + "report returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to report's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7694,10 +7694,10 @@ "item": "report.RenderHTML", "component": "report", "function": "RenderHTML", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/report/html.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "report/html.go", + "failureMode": "report returns an unexpected error", + "effect": "silent failure propagated to report's caller", + "cause": "an unhandled error path in report's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7708,10 +7708,10 @@ "REQ-HTML003" ], "failureModes": [ - "Returns unexpected error" + "report returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to report's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7720,10 +7720,10 @@ "item": "report.RenderToFile", "component": "report", "function": "RenderToFile", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/report/report.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "report/report.go", + "failureMode": "report returns an unexpected error", + "effect": "silent failure propagated to report's caller", + "cause": "an unhandled error path in report's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7733,10 +7733,10 @@ "REQ-REPORT002" ], "failureModes": [ - "Returns unexpected error" + "report returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to report's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -7745,23 +7745,23 @@ "item": "runtime.Beat", "component": "runtime", "function": "Beat", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/heartbeat.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/heartbeat.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME012" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7770,23 +7770,23 @@ "item": "runtime.Clear", "component": "runtime", "function": "Clear", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/diagnostic.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/diagnostic.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME018" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7795,23 +7795,23 @@ "item": "runtime.Count", "component": "runtime", "function": "Count", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/faultmonitor.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/faultmonitor.go", + "failureMode": "runtime derives incorrect output from receiver and argument state", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime combining receiver state with its arguments, not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add requirement-traced unit tests covering this method's documented behaviour" ], "requirementIds": [ "REQ-RUNTIME021" ], "failureModes": [ - "Incorrect output" + "runtime derives incorrect output from receiver and argument state" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -7820,23 +7820,23 @@ "item": "runtime.Count", "component": "runtime", "function": "Count", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/diagnostic.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/diagnostic.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME019" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7845,23 +7845,23 @@ "item": "runtime.Diagnostics", "component": "runtime", "function": "Diagnostics", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/diagnostic.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/diagnostic.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME017" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7870,10 +7870,10 @@ "item": "runtime.IsRunning", "component": "runtime", "function": "IsRunning", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/watchdog.go", - "failureMode": "Uncontrolled execution", - "effect": "Resource exhaustion", - "cause": "no bound on iteration count, input size, or execution time", + "file": "runtime/watchdog.go", + "failureMode": "uncontrolled execution in runtime", + "effect": "resource exhaustion triggered from runtime", + "cause": "no bound on iteration count, input size, or execution time in runtime", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7883,10 +7883,10 @@ "REQ-RUNTIME009" ], "failureModes": [ - "Uncontrolled execution" + "uncontrolled execution in runtime" ], "effects": [ - "Resource exhaustion" + "resource exhaustion triggered from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -7895,10 +7895,10 @@ "item": "runtime.IsRunning", "component": "runtime", "function": "IsRunning", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/heartbeat.go", - "failureMode": "Uncontrolled execution", - "effect": "Resource exhaustion", - "cause": "no bound on iteration count, input size, or execution time", + "file": "runtime/heartbeat.go", + "failureMode": "uncontrolled execution in runtime", + "effect": "resource exhaustion triggered from runtime", + "cause": "no bound on iteration count, input size, or execution time in runtime", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7908,10 +7908,10 @@ "REQ-RUNTIME013" ], "failureModes": [ - "Uncontrolled execution" + "uncontrolled execution in runtime" ], "effects": [ - "Resource exhaustion" + "resource exhaustion triggered from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -7920,23 +7920,23 @@ "item": "runtime.Kick", "component": "runtime", "function": "Kick", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/watchdog.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/watchdog.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME008" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -7945,10 +7945,10 @@ "item": "runtime.NewDiagManager", "component": "runtime", "function": "NewDiagManager", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/diagnostic.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/diagnostic.go", + "failureMode": "runtime produces incorrect output for a given input combination", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7958,10 +7958,10 @@ "REQ-RUNTIME004" ], "failureModes": [ - "Incorrect output" + "runtime produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -7970,10 +7970,10 @@ "item": "runtime.NewFaultMonitor", "component": "runtime", "function": "NewFaultMonitor", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/faultmonitor.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/faultmonitor.go", + "failureMode": "runtime produces incorrect output for a given input combination", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -7983,10 +7983,10 @@ "REQ-RUNTIME005" ], "failureModes": [ - "Incorrect output" + "runtime produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -7995,10 +7995,10 @@ "item": "runtime.NewHeartbeat", "component": "runtime", "function": "NewHeartbeat", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/heartbeat.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/heartbeat.go", + "failureMode": "runtime produces incorrect output for a given input combination", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8008,10 +8008,10 @@ "REQ-RUNTIME002" ], "failureModes": [ - "Incorrect output" + "runtime produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8020,10 +8020,10 @@ "item": "runtime.NewStateManager", "component": "runtime", "function": "NewStateManager", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/safestate.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/safestate.go", + "failureMode": "runtime produces incorrect output for a given input combination", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8033,10 +8033,10 @@ "REQ-RUNTIME003" ], "failureModes": [ - "Incorrect output" + "runtime produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8045,10 +8045,10 @@ "item": "runtime.NewWatchdog", "component": "runtime", "function": "NewWatchdog", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/watchdog.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/watchdog.go", + "failureMode": "runtime produces incorrect output for a given input combination", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8058,10 +8058,10 @@ "REQ-RUNTIME001" ], "failureModes": [ - "Incorrect output" + "runtime produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8070,23 +8070,23 @@ "item": "runtime.Record", "component": "runtime", "function": "Record", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/faultmonitor.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/faultmonitor.go", + "failureMode": "runtime derives incorrect output from receiver and argument state", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime combining receiver state with its arguments, not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add requirement-traced unit tests covering this method's documented behaviour" ], "requirementIds": [ "REQ-RUNTIME015" ], "failureModes": [ - "Incorrect output" + "runtime derives incorrect output from receiver and argument state" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8095,23 +8095,23 @@ "item": "runtime.Record", "component": "runtime", "function": "Record", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/diagnostic.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/diagnostic.go", + "failureMode": "runtime derives incorrect output from receiver and argument state", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime combining receiver state with its arguments, not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add requirement-traced unit tests covering this method's documented behaviour" ], "requirementIds": [ "REQ-RUNTIME016" ], "failureModes": [ - "Incorrect output" + "runtime derives incorrect output from receiver and argument state" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8120,23 +8120,23 @@ "item": "runtime.Reset", "component": "runtime", "function": "Reset", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/faultmonitor.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/faultmonitor.go", + "failureMode": "runtime derives incorrect output from receiver and argument state", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime combining receiver state with its arguments, not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add requirement-traced unit tests covering this method's documented behaviour" ], "requirementIds": [ "REQ-RUNTIME020" ], "failureModes": [ - "Incorrect output" + "runtime derives incorrect output from receiver and argument state" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8145,23 +8145,23 @@ "item": "runtime.SetThreshold", "component": "runtime", "function": "SetThreshold", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/faultmonitor.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/faultmonitor.go", + "failureMode": "runtime derives incorrect output from receiver and argument state", + "effect": "incorrect system behavior from runtime", + "cause": "a logic error in runtime combining receiver state with its arguments, not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add requirement-traced unit tests covering this method's documented behaviour" ], "requirementIds": [ "REQ-RUNTIME014" ], "failureModes": [ - "Incorrect output" + "runtime derives incorrect output from receiver and argument state" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8170,10 +8170,10 @@ "item": "runtime.Start", "component": "runtime", "function": "Start", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/heartbeat.go", - "failureMode": "Returns unexpected error; Goroutine not terminated", - "effect": "Silent failure propagated to caller; Memory leak or deadlock", - "cause": "an unhandled error path in the function body or a callee; a spawned goroutine with no cancellation, timeout, or WaitGroup join", + "file": "runtime/heartbeat.go", + "failureMode": "runtime returns an unexpected error; goroutine spawned in runtime not terminated", + "effect": "silent failure propagated to runtime's caller; memory leak or deadlock in runtime", + "cause": "an unhandled error path in runtime's function body or a callee; a spawned goroutine in runtime with no cancellation, timeout, or WaitGroup join", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8184,12 +8184,12 @@ "REQ-RUNTIME010" ], "failureModes": [ - "Returns unexpected error", - "Goroutine not terminated" + "runtime returns an unexpected error", + "goroutine spawned in runtime not terminated" ], "effects": [ - "Silent failure propagated to caller", - "Memory leak or deadlock" + "silent failure propagated to runtime's caller", + "memory leak or deadlock in runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8198,10 +8198,10 @@ "item": "runtime.Start", "component": "runtime", "function": "Start", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/watchdog.go", - "failureMode": "Returns unexpected error; Goroutine not terminated", - "effect": "Silent failure propagated to caller; Memory leak or deadlock", - "cause": "an unhandled error path in the function body or a callee; a spawned goroutine with no cancellation, timeout, or WaitGroup join", + "file": "runtime/watchdog.go", + "failureMode": "runtime returns an unexpected error; goroutine spawned in runtime not terminated", + "effect": "silent failure propagated to runtime's caller; memory leak or deadlock in runtime", + "cause": "an unhandled error path in runtime's function body or a callee; a spawned goroutine in runtime with no cancellation, timeout, or WaitGroup join", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8212,12 +8212,12 @@ "REQ-RUNTIME006" ], "failureModes": [ - "Returns unexpected error", - "Goroutine not terminated" + "runtime returns an unexpected error", + "goroutine spawned in runtime not terminated" ], "effects": [ - "Silent failure propagated to caller", - "Memory leak or deadlock" + "silent failure propagated to runtime's caller", + "memory leak or deadlock in runtime" ], "detectionControl": "requirement testing + unit tests" }, @@ -8226,23 +8226,23 @@ "item": "runtime.State", "component": "runtime", "function": "State", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/safestate.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/safestate.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME022" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -8251,23 +8251,23 @@ "item": "runtime.Stop", "component": "runtime", "function": "Stop", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/watchdog.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/watchdog.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME007" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -8276,23 +8276,23 @@ "item": "runtime.Stop", "component": "runtime", "function": "Stop", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/heartbeat.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/heartbeat.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "high", "actionPriority": "high", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "requirementIds": [ "REQ-RUNTIME011" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "requirement testing + unit tests" }, @@ -8301,20 +8301,20 @@ "item": "runtime.String", "component": "runtime", "function": "String", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/safestate.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/safestate.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8323,20 +8323,20 @@ "item": "runtime.String", "component": "runtime", "function": "String", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/diagnostic.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "runtime/diagnostic.go", + "failureMode": "runtime returns stale or inconsistent receiver state", + "effect": "caller of runtime observes state that no longer reflects a concurrent mutation", + "cause": "runtime reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "runtime returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of runtime observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8345,10 +8345,10 @@ "item": "runtime.Transition", "component": "runtime", "function": "Transition", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/runtime/safestate.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "runtime/safestate.go", + "failureMode": "runtime returns an unexpected error", + "effect": "silent failure propagated to runtime's caller", + "cause": "an unhandled error path in runtime's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8358,10 +8358,10 @@ "REQ-RUNTIME023" ], "failureModes": [ - "Returns unexpected error" + "runtime returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to runtime's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8370,10 +8370,10 @@ "item": "safetycase.Build", "component": "safetycase", "function": "Build", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/safetycase/safetycase.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "safetycase/safetycase.go", + "failureMode": "safetycase returns an unexpected error", + "effect": "silent failure propagated to safetycase's caller", + "cause": "an unhandled error path in safetycase's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8383,10 +8383,10 @@ "REQ-SC001" ], "failureModes": [ - "Returns unexpected error" + "safetycase returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to safetycase's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8395,20 +8395,20 @@ "item": "safetycase.Description", "component": "safetycase", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/safetycase/safetycase.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "safetycase/safetycase.go", + "failureMode": "safetycase returns stale or inconsistent receiver state", + "effect": "caller of safetycase observes state that no longer reflects a concurrent mutation", + "cause": "safetycase reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "safetycase returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of safetycase observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8417,20 +8417,20 @@ "item": "safetycase.ID", "component": "safetycase", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/safetycase/safetycase.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "safetycase/safetycase.go", + "failureMode": "safetycase returns stale or inconsistent receiver state", + "effect": "caller of safetycase observes state that no longer reflects a concurrent mutation", + "cause": "safetycase reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "safetycase returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of safetycase observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8439,10 +8439,10 @@ "item": "safetycase.Load", "component": "safetycase", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/safetycase/safetycase.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "safetycase/safetycase.go", + "failureMode": "safetycase returns an unexpected error", + "effect": "silent failure propagated to safetycase's caller", + "cause": "an unhandled error path in safetycase's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8452,10 +8452,10 @@ "REQ-SC009" ], "failureModes": [ - "Returns unexpected error" + "safetycase returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to safetycase's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8464,10 +8464,10 @@ "item": "safetycase.Render", "component": "safetycase", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/safetycase/safetycase.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "safetycase/safetycase.go", + "failureMode": "safetycase returns an unexpected error", + "effect": "silent failure propagated to safetycase's caller", + "cause": "an unhandled error path in safetycase's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8477,10 +8477,10 @@ "REQ-SC003" ], "failureModes": [ - "Returns unexpected error" + "safetycase returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to safetycase's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8489,10 +8489,10 @@ "item": "safetycase.Run", "component": "safetycase", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/safetycase/safetycase.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "safetycase/safetycase.go", + "failureMode": "safetycase returns an unexpected error; uncontrolled execution in safetycase", + "effect": "silent failure propagated to safetycase's caller; resource exhaustion triggered from safetycase", + "cause": "an unhandled error path in safetycase's function body or a callee; no bound on iteration count, input size, or execution time in safetycase", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8503,12 +8503,12 @@ "REQ-SAFETYCASE001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "safetycase returns an unexpected error", + "uncontrolled execution in safetycase" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to safetycase's caller", + "resource exhaustion triggered from safetycase" ], "detectionControl": "requirement testing + unit tests" }, @@ -8517,10 +8517,10 @@ "item": "sarif.Render", "component": "sarif", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sarif/sarif.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "sarif/sarif.go", + "failureMode": "sarif returns an unexpected error", + "effect": "silent failure propagated to sarif's caller", + "cause": "an unhandled error path in sarif's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8531,10 +8531,10 @@ "REQ-SARIF002" ], "failureModes": [ - "Returns unexpected error" + "sarif returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to sarif's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8543,10 +8543,10 @@ "item": "sas.Build", "component": "sas", "function": "Build", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "sas/sas.go", + "failureMode": "sas returns an unexpected error", + "effect": "silent failure propagated to sas's caller", + "cause": "an unhandled error path in sas's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8556,10 +8556,10 @@ "REQ-SAS001" ], "failureModes": [ - "Returns unexpected error" + "sas returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to sas's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8568,10 +8568,10 @@ "item": "sas.LoadReport", "component": "sas", "function": "LoadReport", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "sas/sas.go", + "failureMode": "sas returns an unexpected error", + "effect": "silent failure propagated to sas's caller", + "cause": "an unhandled error path in sas's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8581,10 +8581,10 @@ "REQ-SAS006" ], "failureModes": [ - "Returns unexpected error" + "sas returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to sas's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8593,10 +8593,10 @@ "item": "sas.Render", "component": "sas", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "sas/sas.go", + "failureMode": "sas returns an unexpected error", + "effect": "silent failure propagated to sas's caller", + "cause": "an unhandled error path in sas's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8606,10 +8606,10 @@ "REQ-SAS003" ], "failureModes": [ - "Returns unexpected error" + "sas returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to sas's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8618,10 +8618,10 @@ "item": "sci.Build", "component": "sci", "function": "Build", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "sci/sci.go", + "failureMode": "sci returns an unexpected error", + "effect": "silent failure propagated to sci's caller", + "cause": "an unhandled error path in sci's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8631,10 +8631,10 @@ "REQ-SCI001" ], "failureModes": [ - "Returns unexpected error" + "sci returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to sci's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8643,10 +8643,10 @@ "item": "sci.LoadReport", "component": "sci", "function": "LoadReport", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "sci/sci.go", + "failureMode": "sci returns an unexpected error", + "effect": "silent failure propagated to sci's caller", + "cause": "an unhandled error path in sci's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8656,10 +8656,10 @@ "REQ-SCI005" ], "failureModes": [ - "Returns unexpected error" + "sci returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to sci's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8668,10 +8668,10 @@ "item": "sci.Render", "component": "sci", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "sci/sci.go", + "failureMode": "sci returns an unexpected error", + "effect": "silent failure propagated to sci's caller", + "cause": "an unhandled error path in sci's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8681,10 +8681,10 @@ "REQ-SCI003" ], "failureModes": [ - "Returns unexpected error" + "sci returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to sci's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8693,10 +8693,10 @@ "item": "sci.SaveJSON", "component": "sci", "function": "SaveJSON", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "sci/sci.go", + "failureMode": "sci returns an unexpected error; partial write / data corruption in sci", + "effect": "silent failure propagated to sci's caller; incorrect persisted state for sci", + "cause": "an unhandled error path in sci's function body or a callee; an interrupted write in sci (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8707,12 +8707,12 @@ "REQ-SCI002" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "sci returns an unexpected error", + "partial write / data corruption in sci" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to sci's caller", + "incorrect persisted state for sci" ], "detectionControl": "requirement testing + unit tests" }, @@ -8721,10 +8721,10 @@ "item": "slsa.Assess", "component": "slsa", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "slsa/assess.go", + "failureMode": "slsa returns an unexpected error", + "effect": "silent failure propagated to slsa's caller", + "cause": "an unhandled error path in slsa's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8734,10 +8734,10 @@ "REQ-SLSA-ASSESS003" ], "failureModes": [ - "Returns unexpected error" + "slsa returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to slsa's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8746,20 +8746,20 @@ "item": "slsa.Description", "component": "slsa", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "slsa/slsa.go", + "failureMode": "slsa returns stale or inconsistent receiver state", + "effect": "caller of slsa observes state that no longer reflects a concurrent mutation", + "cause": "slsa reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "slsa returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of slsa observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8768,20 +8768,20 @@ "item": "slsa.Description", "component": "slsa", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "slsa/slsa.go", + "failureMode": "slsa returns stale or inconsistent receiver state", + "effect": "caller of slsa observes state that no longer reflects a concurrent mutation", + "cause": "slsa reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "slsa returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of slsa observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8790,20 +8790,20 @@ "item": "slsa.Description", "component": "slsa", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "slsa/slsa.go", + "failureMode": "slsa returns stale or inconsistent receiver state", + "effect": "caller of slsa observes state that no longer reflects a concurrent mutation", + "cause": "slsa reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "slsa returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of slsa observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8812,20 +8812,20 @@ "item": "slsa.ID", "component": "slsa", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "slsa/slsa.go", + "failureMode": "slsa returns stale or inconsistent receiver state", + "effect": "caller of slsa observes state that no longer reflects a concurrent mutation", + "cause": "slsa reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "slsa returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of slsa observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8834,20 +8834,20 @@ "item": "slsa.ID", "component": "slsa", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "slsa/slsa.go", + "failureMode": "slsa returns stale or inconsistent receiver state", + "effect": "caller of slsa observes state that no longer reflects a concurrent mutation", + "cause": "slsa reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "slsa returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of slsa observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8856,20 +8856,20 @@ "item": "slsa.ID", "component": "slsa", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "slsa/slsa.go", + "failureMode": "slsa returns stale or inconsistent receiver state", + "effect": "caller of slsa observes state that no longer reflects a concurrent mutation", + "cause": "slsa reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "slsa returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of slsa observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -8878,10 +8878,10 @@ "item": "slsa.Render", "component": "slsa", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "slsa/assess.go", + "failureMode": "slsa returns an unexpected error", + "effect": "silent failure propagated to slsa's caller", + "cause": "an unhandled error path in slsa's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8891,10 +8891,10 @@ "REQ-SLSA-ASSESS004" ], "failureModes": [ - "Returns unexpected error" + "slsa returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to slsa's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -8903,10 +8903,10 @@ "item": "slsa.Run", "component": "slsa", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "slsa/slsa.go", + "failureMode": "slsa returns an unexpected error; uncontrolled execution in slsa", + "effect": "silent failure propagated to slsa's caller; resource exhaustion triggered from slsa", + "cause": "an unhandled error path in slsa's function body or a callee; no bound on iteration count, input size, or execution time in slsa", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8914,15 +8914,15 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-SLSA001" + "REQ-SLSA002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "slsa returns an unexpected error", + "uncontrolled execution in slsa" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to slsa's caller", + "resource exhaustion triggered from slsa" ], "detectionControl": "requirement testing + unit tests" }, @@ -8931,10 +8931,10 @@ "item": "slsa.Run", "component": "slsa", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "slsa/slsa.go", + "failureMode": "slsa returns an unexpected error; uncontrolled execution in slsa", + "effect": "silent failure propagated to slsa's caller; resource exhaustion triggered from slsa", + "cause": "an unhandled error path in slsa's function body or a callee; no bound on iteration count, input size, or execution time in slsa", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8942,15 +8942,15 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-SLSA002" + "REQ-SLSA001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "slsa returns an unexpected error", + "uncontrolled execution in slsa" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to slsa's caller", + "resource exhaustion triggered from slsa" ], "detectionControl": "requirement testing + unit tests" }, @@ -8959,10 +8959,10 @@ "item": "slsa.Run", "component": "slsa", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/slsa.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "slsa/slsa.go", + "failureMode": "slsa returns an unexpected error; uncontrolled execution in slsa", + "effect": "silent failure propagated to slsa's caller; resource exhaustion triggered from slsa", + "cause": "an unhandled error path in slsa's function body or a callee; no bound on iteration count, input size, or execution time in slsa", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -8973,12 +8973,12 @@ "REQ-SLSA003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "slsa returns an unexpected error", + "uncontrolled execution in slsa" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to slsa's caller", + "resource exhaustion triggered from slsa" ], "detectionControl": "requirement testing + unit tests" }, @@ -8987,10 +8987,10 @@ "item": "stubcheck.AttestationSuppresses", "component": "stubcheck", "function": "AttestationSuppresses", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9000,10 +9000,10 @@ "REQ-STUB012" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9012,10 +9012,10 @@ "item": "stubcheck.BlanketFallbackFinding", "component": "stubcheck", "function": "BlanketFallbackFinding", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/stubcheck.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/stubcheck.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9025,10 +9025,10 @@ "REQ-STUB004" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9037,20 +9037,20 @@ "item": "stubcheck.Description", "component": "stubcheck", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck returns stale or inconsistent receiver state", + "effect": "caller of stubcheck observes state that no longer reflects a concurrent mutation", + "cause": "stubcheck reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "stubcheck returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of stubcheck observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9059,20 +9059,20 @@ "item": "stubcheck.Description", "component": "stubcheck", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck returns stale or inconsistent receiver state", + "effect": "caller of stubcheck observes state that no longer reflects a concurrent mutation", + "cause": "stubcheck reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "stubcheck returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of stubcheck observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9081,10 +9081,10 @@ "item": "stubcheck.FmeaFields", "component": "stubcheck", "function": "FmeaFields", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9094,10 +9094,10 @@ "REQ-STUB006" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9106,10 +9106,10 @@ "item": "stubcheck.HaraFields", "component": "stubcheck", "function": "HaraFields", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9119,10 +9119,10 @@ "REQ-STUB005" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9131,20 +9131,20 @@ "item": "stubcheck.ID", "component": "stubcheck", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck returns stale or inconsistent receiver state", + "effect": "caller of stubcheck observes state that no longer reflects a concurrent mutation", + "cause": "stubcheck reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "stubcheck returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of stubcheck observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9153,20 +9153,20 @@ "item": "stubcheck.ID", "component": "stubcheck", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck returns stale or inconsistent receiver state", + "effect": "caller of stubcheck observes state that no longer reflects a concurrent mutation", + "cause": "stubcheck reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "stubcheck returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of stubcheck observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9175,10 +9175,10 @@ "item": "stubcheck.PlaceholderFinding", "component": "stubcheck", "function": "PlaceholderFinding", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/stubcheck.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/stubcheck.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9188,10 +9188,10 @@ "REQ-STUB003" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9200,10 +9200,10 @@ "item": "stubcheck.Run", "component": "stubcheck", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck returns an unexpected error; uncontrolled execution in stubcheck", + "effect": "silent failure propagated to stubcheck's caller; resource exhaustion triggered from stubcheck", + "cause": "an unhandled error path in stubcheck's function body or a callee; no bound on iteration count, input size, or execution time in stubcheck", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9211,15 +9211,15 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-STUB011" + "REQ-STUB010" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "stubcheck returns an unexpected error", + "uncontrolled execution in stubcheck" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to stubcheck's caller", + "resource exhaustion triggered from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9228,10 +9228,10 @@ "item": "stubcheck.Run", "component": "stubcheck", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck returns an unexpected error; uncontrolled execution in stubcheck", + "effect": "silent failure propagated to stubcheck's caller; resource exhaustion triggered from stubcheck", + "cause": "an unhandled error path in stubcheck's function body or a callee; no bound on iteration count, input size, or execution time in stubcheck", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9239,15 +9239,15 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-STUB010" + "REQ-STUB011" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "stubcheck returns an unexpected error", + "uncontrolled execution in stubcheck" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to stubcheck's caller", + "resource exhaustion triggered from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9256,10 +9256,10 @@ "item": "stubcheck.SafetyCaseFields", "component": "stubcheck", "function": "SafetyCaseFields", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9269,10 +9269,10 @@ "REQ-STUB008" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9281,10 +9281,10 @@ "item": "stubcheck.SasFields", "component": "stubcheck", "function": "SasFields", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9294,10 +9294,10 @@ "REQ-STUB009" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9306,10 +9306,10 @@ "item": "stubcheck.ScanBlanketFallback", "component": "stubcheck", "function": "ScanBlanketFallback", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/stubcheck.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/stubcheck.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9319,10 +9319,10 @@ "REQ-STUB002" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9331,10 +9331,10 @@ "item": "stubcheck.ScanPlaceholders", "component": "stubcheck", "function": "ScanPlaceholders", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/stubcheck.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/stubcheck.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9344,10 +9344,10 @@ "REQ-STUB001" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9356,10 +9356,10 @@ "item": "stubcheck.TaraFields", "component": "stubcheck", "function": "TaraFields", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/stubcheck/rules.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "stubcheck/rules.go", + "failureMode": "stubcheck produces incorrect output for a given input combination", + "effect": "incorrect system behavior from stubcheck", + "cause": "a logic error in stubcheck not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9369,10 +9369,10 @@ "REQ-STUB007" ], "failureModes": [ - "Incorrect output" + "stubcheck produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from stubcheck" ], "detectionControl": "requirement testing + unit tests" }, @@ -9381,10 +9381,10 @@ "item": "tara.CountProjectFiles", "component": "tara", "function": "CountProjectFiles", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/tara/tara.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "tara/tara.go", + "failureMode": "tara returns an unexpected error", + "effect": "silent failure propagated to tara's caller", + "cause": "an unhandled error path in tara's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9394,10 +9394,10 @@ "REQ-TARA008" ], "failureModes": [ - "Returns unexpected error" + "tara returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to tara's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9406,20 +9406,20 @@ "item": "tara.Description", "component": "tara", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/tara/tara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "tara/tara.go", + "failureMode": "tara returns stale or inconsistent receiver state", + "effect": "caller of tara observes state that no longer reflects a concurrent mutation", + "cause": "tara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "tara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of tara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9428,20 +9428,20 @@ "item": "tara.ID", "component": "tara", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/tara/tara.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "tara/tara.go", + "failureMode": "tara returns stale or inconsistent receiver state", + "effect": "caller of tara observes state that no longer reflects a concurrent mutation", + "cause": "tara reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "tara returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of tara observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9450,10 +9450,10 @@ "item": "tara.LoadReport", "component": "tara", "function": "LoadReport", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/tara/tara.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "tara/tara.go", + "failureMode": "tara returns an unexpected error", + "effect": "silent failure propagated to tara's caller", + "cause": "an unhandled error path in tara's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9463,10 +9463,10 @@ "REQ-TARA009" ], "failureModes": [ - "Returns unexpected error" + "tara returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to tara's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9475,10 +9475,10 @@ "item": "tara.Render", "component": "tara", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/tara/tara.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "tara/tara.go", + "failureMode": "tara returns an unexpected error", + "effect": "silent failure propagated to tara's caller", + "cause": "an unhandled error path in tara's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9488,10 +9488,10 @@ "REQ-TARA004" ], "failureModes": [ - "Returns unexpected error" + "tara returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to tara's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9500,10 +9500,10 @@ "item": "tara.Run", "component": "tara", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/tara/tara.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "tara/tara.go", + "failureMode": "tara returns an unexpected error; uncontrolled execution in tara", + "effect": "silent failure propagated to tara's caller; resource exhaustion triggered from tara", + "cause": "an unhandled error path in tara's function body or a callee; no bound on iteration count, input size, or execution time in tara", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9514,12 +9514,12 @@ "REQ-TARA005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "tara returns an unexpected error", + "uncontrolled execution in tara" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to tara's caller", + "resource exhaustion triggered from tara" ], "detectionControl": "requirement testing + unit tests" }, @@ -9528,10 +9528,10 @@ "item": "tara.Scan", "component": "tara", "function": "Scan", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/tara/tara.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "tara/tara.go", + "failureMode": "tara returns an unexpected error", + "effect": "silent failure propagated to tara's caller", + "cause": "an unhandled error path in tara's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9541,10 +9541,10 @@ "REQ-TARA003" ], "failureModes": [ - "Returns unexpected error" + "tara returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to tara's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9553,10 +9553,10 @@ "item": "template.Generate", "component": "template", "function": "Generate", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/template/template.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "template/template.go", + "failureMode": "template returns an unexpected error", + "effect": "silent failure propagated to template's caller", + "cause": "an unhandled error path in template's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9566,10 +9566,10 @@ "REQ-CLI010" ], "failureModes": [ - "Returns unexpected error" + "template returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to template's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9578,10 +9578,10 @@ "item": "testutil.GoSource", "component": "testutil", "function": "GoSource", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/testutil/testutil.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "testutil/testutil.go", + "failureMode": "testutil produces incorrect output for a given input combination", + "effect": "incorrect system behavior from testutil", + "cause": "a logic error in testutil not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9591,10 +9591,10 @@ "REQ-TESTUTIL003" ], "failureModes": [ - "Incorrect output" + "testutil produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from testutil" ], "detectionControl": "requirement testing + unit tests" }, @@ -9603,10 +9603,10 @@ "item": "testutil.MinimalProject", "component": "testutil", "function": "MinimalProject", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/testutil/testutil.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "testutil/testutil.go", + "failureMode": "testutil produces incorrect output with no input to validate against", + "effect": "incorrect system behavior from testutil", + "cause": "a logic error in testutil not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9616,10 +9616,10 @@ "REQ-TESTUTIL002" ], "failureModes": [ - "Incorrect output" + "testutil produces incorrect output with no input to validate against" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from testutil" ], "detectionControl": "requirement testing + unit tests" }, @@ -9628,10 +9628,10 @@ "item": "testutil.ProjectDir", "component": "testutil", "function": "ProjectDir", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/testutil/testutil.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "testutil/testutil.go", + "failureMode": "testutil produces incorrect output for a given input combination", + "effect": "incorrect system behavior from testutil", + "cause": "a logic error in testutil not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9641,10 +9641,10 @@ "REQ-TESTUTIL001" ], "failureModes": [ - "Incorrect output" + "testutil produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from testutil" ], "detectionControl": "requirement testing + unit tests" }, @@ -9653,10 +9653,10 @@ "item": "trace.Build", "component": "trace", "function": "Build", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9666,10 +9666,10 @@ "REQ-TRACE002" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9678,10 +9678,10 @@ "item": "trace.ComputeHLRLLR", "component": "trace", "function": "ComputeHLRLLR", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace produces incorrect output for a given input combination", + "effect": "incorrect system behavior from trace", + "cause": "a logic error in trace not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9691,10 +9691,10 @@ "REQ-TRACE008" ], "failureModes": [ - "Incorrect output" + "trace produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from trace" ], "detectionControl": "requirement testing + unit tests" }, @@ -9703,20 +9703,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9725,20 +9725,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9747,20 +9747,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9769,20 +9769,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9791,20 +9791,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9813,20 +9813,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9835,20 +9835,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9857,20 +9857,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9879,20 +9879,20 @@ "item": "trace.Description", "component": "trace", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -9901,10 +9901,10 @@ "item": "trace.ExportCodebeamer", "component": "trace", "function": "ExportCodebeamer", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9914,10 +9914,10 @@ "REQ-REQXML004" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9926,10 +9926,10 @@ "item": "trace.ExportDOORS", "component": "trace", "function": "ExportDOORS", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9939,10 +9939,10 @@ "REQ-REQXML002" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9951,10 +9951,10 @@ "item": "trace.ExportJama", "component": "trace", "function": "ExportJama", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9964,10 +9964,10 @@ "REQ-REQXML006" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -9976,10 +9976,10 @@ "item": "trace.ExportPolarion", "component": "trace", "function": "ExportPolarion", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -9989,10 +9989,10 @@ "REQ-REQXML008" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, @@ -10001,20 +10001,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10023,20 +10023,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10045,20 +10045,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10067,20 +10067,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10089,20 +10089,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10111,20 +10111,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10133,20 +10133,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10155,20 +10155,20 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, @@ -10177,32 +10177,57 @@ "item": "trace.ID", "component": "trace", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "trace/trace.go", + "failureMode": "trace returns stale or inconsistent receiver state", + "effect": "caller of trace observes state that no longer reflects a concurrent mutation", + "cause": "trace reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "trace returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of trace observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { "id": "FMEA-418", + "item": "trace.IsExcludedDir", + "component": "trace", + "function": "IsExcludedDir", + "file": "trace/trace.go", + "failureMode": "trace produces incorrect output for a given input combination", + "effect": "incorrect system behavior from trace", + "cause": "a logic error in trace not surfaced as an error return or panic", + "severity": "high", + "actionPriority": "high", + "mitigations": [ + "add requirement-traced unit tests covering this function's documented behaviour" + ], + "requirementIds": [ + "REQ-TRACE012" + ], + "failureModes": [ + "trace produces incorrect output for a given input combination" + ], + "effects": [ + "incorrect system behavior from trace" + ], + "detectionControl": "requirement testing + unit tests" + }, + { + "id": "FMEA-419", "item": "trace.LoadRequirements", "component": "trace", "function": "LoadRequirements", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10212,22 +10237,22 @@ "REQ-TRACE001" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-419", + "id": "FMEA-420", "item": "trace.ParseCodebeamer", "component": "trace", "function": "ParseCodebeamer", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10237,22 +10262,22 @@ "REQ-REQXML003" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-420", + "id": "FMEA-421", "item": "trace.ParseDOORS", "component": "trace", "function": "ParseDOORS", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10262,22 +10287,22 @@ "REQ-REQXML001" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-421", + "id": "FMEA-422", "item": "trace.ParseJama", "component": "trace", "function": "ParseJama", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10287,22 +10312,22 @@ "REQ-REQXML005" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-422", + "id": "FMEA-423", "item": "trace.ParsePolarion", "component": "trace", "function": "ParsePolarion", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/reqxml.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/reqxml.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10312,22 +10337,22 @@ "REQ-REQXML007" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-423", + "id": "FMEA-424", "item": "trace.Render", "component": "trace", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10337,22 +10362,22 @@ "REQ-TRACE006" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-424", + "id": "FMEA-425", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10360,27 +10385,27 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-TRACE010" + "REQ-REQQ003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-425", + "id": "FMEA-426", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10388,27 +10413,27 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-TRACE001" + "REQ-TRACE010" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-426", + "id": "FMEA-427", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10419,24 +10444,24 @@ "REQ-TRACE006" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-427", + "id": "FMEA-428", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10444,27 +10469,27 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-REQQ003" + "REQ-REQQ002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-428", + "id": "FMEA-429", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10475,24 +10500,24 @@ "REQ-TRACE005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-429", + "id": "FMEA-430", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10503,24 +10528,24 @@ "REQ-TRACE007" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-430", + "id": "FMEA-431", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10528,27 +10553,27 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-REQQ002" + "REQ-TRACE002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-431", + "id": "FMEA-432", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10559,24 +10584,24 @@ "REQ-TRACE008" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-432", + "id": "FMEA-433", "item": "trace.Run", "component": "trace", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; uncontrolled execution in trace", + "effect": "silent failure propagated to trace's caller; resource exhaustion triggered from trace", + "cause": "an unhandled error path in trace's function body or a callee; no bound on iteration count, input size, or execution time in trace", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10584,27 +10609,27 @@ "add a context deadline or explicit resource bound" ], "requirementIds": [ - "REQ-TRACE002" + "REQ-TRACE001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "trace returns an unexpected error", + "uncontrolled execution in trace" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to trace's caller", + "resource exhaustion triggered from trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-433", + "id": "FMEA-434", "item": "trace.SaveRequirements", "component": "trace", "function": "SaveRequirements", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error; partial write / data corruption in trace", + "effect": "silent failure propagated to trace's caller; incorrect persisted state for trace", + "cause": "an unhandled error path in trace's function body or a callee; an interrupted write in trace (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10615,24 +10640,24 @@ "REQ-TRACE001" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "trace returns an unexpected error", + "partial write / data corruption in trace" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to trace's caller", + "incorrect persisted state for trace" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-434", + "id": "FMEA-435", "item": "trace.ScanFuncCoverage", "component": "trace", "function": "ScanFuncCoverage", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10642,22 +10667,22 @@ "REQ-TRACE007" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-435", + "id": "FMEA-436", "item": "trace.ScanFuncTagCoverage", "component": "trace", "function": "ScanFuncTagCoverage", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10667,22 +10692,22 @@ "REQ-TRACE009" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-436", + "id": "FMEA-437", "item": "trace.ScanTags", "component": "trace", "function": "ScanTags", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/trace/trace.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "trace/trace.go", + "failureMode": "trace returns an unexpected error", + "effect": "silent failure propagated to trace's caller", + "cause": "an unhandled error path in trace's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10692,22 +10717,22 @@ "REQ-TRACE011" ], "failureModes": [ - "Returns unexpected error" + "trace returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to trace's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-437", + "id": "FMEA-438", "item": "unece.Assess", "component": "unece", "function": "Assess", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "unece/unece.go", + "failureMode": "unece returns an unexpected error", + "effect": "silent failure propagated to unece's caller", + "cause": "an unhandled error path in unece's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10717,66 +10742,66 @@ "REQ-UNECE-002" ], "failureModes": [ - "Returns unexpected error" + "unece returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to unece's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-438", + "id": "FMEA-439", "item": "unece.Description", "component": "unece", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "unece/unece.go", + "failureMode": "unece returns stale or inconsistent receiver state", + "effect": "caller of unece observes state that no longer reflects a concurrent mutation", + "cause": "unece reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "unece returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of unece observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-439", + "id": "FMEA-440", "item": "unece.ID", "component": "unece", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "unece/unece.go", + "failureMode": "unece returns stale or inconsistent receiver state", + "effect": "caller of unece observes state that no longer reflects a concurrent mutation", + "cause": "unece reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "unece returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of unece observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-440", + "id": "FMEA-441", "item": "unece.Render", "component": "unece", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "unece/unece.go", + "failureMode": "unece returns an unexpected error", + "effect": "silent failure propagated to unece's caller", + "cause": "an unhandled error path in unece's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10786,22 +10811,22 @@ "REQ-UNECE-003" ], "failureModes": [ - "Returns unexpected error" + "unece returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to unece's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-441", + "id": "FMEA-442", "item": "unece.Run", "component": "unece", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "unece/unece.go", + "failureMode": "unece returns an unexpected error; uncontrolled execution in unece", + "effect": "silent failure propagated to unece's caller; resource exhaustion triggered from unece", + "cause": "an unhandled error path in unece's function body or a callee; no bound on iteration count, input size, or execution time in unece", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10812,112 +10837,112 @@ "REQ-UNECE-001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "unece returns an unexpected error", + "uncontrolled execution in unece" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to unece's caller", + "resource exhaustion triggered from unece" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-442", + "id": "FMEA-443", "item": "verify.Description", "component": "verify", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "verify/verify.go", + "failureMode": "verify returns stale or inconsistent receiver state", + "effect": "caller of verify observes state that no longer reflects a concurrent mutation", + "cause": "verify reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "verify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of verify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-443", + "id": "FMEA-444", "item": "verify.Description", "component": "verify", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "verify/verify.go", + "failureMode": "verify returns stale or inconsistent receiver state", + "effect": "caller of verify observes state that no longer reflects a concurrent mutation", + "cause": "verify reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "verify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of verify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-444", + "id": "FMEA-445", "item": "verify.ID", "component": "verify", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "verify/verify.go", + "failureMode": "verify returns stale or inconsistent receiver state", + "effect": "caller of verify observes state that no longer reflects a concurrent mutation", + "cause": "verify reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "verify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of verify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-445", + "id": "FMEA-446", "item": "verify.ID", "component": "verify", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "verify/verify.go", + "failureMode": "verify returns stale or inconsistent receiver state", + "effect": "caller of verify observes state that no longer reflects a concurrent mutation", + "cause": "verify reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "verify returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of verify observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-446", + "id": "FMEA-447", "item": "verify.Load", "component": "verify", "function": "Load", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "verify/verify.go", + "failureMode": "verify returns an unexpected error", + "effect": "silent failure propagated to verify's caller", + "cause": "an unhandled error path in verify's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10927,22 +10952,22 @@ "REQ-VERIFY007" ], "failureModes": [ - "Returns unexpected error" + "verify returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to verify's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-447", + "id": "FMEA-448", "item": "verify.New", "component": "verify", "function": "New", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "verify/verify.go", + "failureMode": "verify produces incorrect output for a given input combination", + "effect": "incorrect system behavior from verify", + "cause": "a logic error in verify not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10952,22 +10977,22 @@ "REQ-VERIFY003" ], "failureModes": [ - "Incorrect output" + "verify produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from verify" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-448", + "id": "FMEA-449", "item": "verify.Parse", "component": "verify", "function": "Parse", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "verify/verify.go", + "failureMode": "verify returns an unexpected error", + "effect": "silent failure propagated to verify's caller", + "cause": "an unhandled error path in verify's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -10977,22 +11002,22 @@ "REQ-VERIFY004" ], "failureModes": [ - "Returns unexpected error" + "verify returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to verify's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-449", + "id": "FMEA-450", "item": "verify.Run", "component": "verify", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "verify/verify.go", + "failureMode": "verify returns an unexpected error; uncontrolled execution in verify", + "effect": "silent failure propagated to verify's caller; resource exhaustion triggered from verify", + "cause": "an unhandled error path in verify's function body or a callee; no bound on iteration count, input size, or execution time in verify", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11003,24 +11028,24 @@ "REQ-VERIFY002" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "verify returns an unexpected error", + "uncontrolled execution in verify" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to verify's caller", + "resource exhaustion triggered from verify" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-450", + "id": "FMEA-451", "item": "verify.Run", "component": "verify", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "verify/verify.go", + "failureMode": "verify returns an unexpected error; uncontrolled execution in verify", + "effect": "silent failure propagated to verify's caller; resource exhaustion triggered from verify", + "cause": "an unhandled error path in verify's function body or a callee; no bound on iteration count, input size, or execution time in verify", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11031,24 +11056,24 @@ "REQ-VERIFY001" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "verify returns an unexpected error", + "uncontrolled execution in verify" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to verify's caller", + "resource exhaustion triggered from verify" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-451", + "id": "FMEA-452", "item": "verify.Run", "component": "verify", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "verify/verify.go", + "failureMode": "verify returns an unexpected error; uncontrolled execution in verify", + "effect": "silent failure propagated to verify's caller; resource exhaustion triggered from verify", + "cause": "an unhandled error path in verify's function body or a callee; no bound on iteration count, input size, or execution time in verify", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11059,24 +11084,24 @@ "REQ-VERIFY005" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "verify returns an unexpected error", + "uncontrolled execution in verify" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to verify's caller", + "resource exhaustion triggered from verify" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-452", + "id": "FMEA-453", "item": "verify.Save", "component": "verify", "function": "Save", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Returns unexpected error; Partial write / data corruption", - "effect": "Silent failure propagated to caller; Incorrect system state", - "cause": "an unhandled error path in the function body or a callee; an interrupted write (crash, disk full, concurrent access) leaving a partial artifact", + "file": "verify/verify.go", + "failureMode": "verify returns an unexpected error; partial write / data corruption in verify", + "effect": "silent failure propagated to verify's caller; incorrect persisted state for verify", + "cause": "an unhandled error path in verify's function body or a callee; an interrupted write in verify (crash, disk full, concurrent access) leaving a partial artifact", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11087,24 +11112,24 @@ "REQ-VERIFY006" ], "failureModes": [ - "Returns unexpected error", - "Partial write / data corruption" + "verify returns an unexpected error", + "partial write / data corruption in verify" ], "effects": [ - "Silent failure propagated to caller", - "Incorrect system state" + "silent failure propagated to verify's caller", + "incorrect persisted state for verify" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-453", + "id": "FMEA-454", "item": "verify.Summarise", "component": "verify", "function": "Summarise", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/verify/verify.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "verify/verify.go", + "failureMode": "verify produces incorrect output for a given input combination", + "effect": "incorrect system behavior from verify", + "cause": "a logic error in verify not surfaced as an error return or panic", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11114,66 +11139,66 @@ "REQ-VERIFY004" ], "failureModes": [ - "Incorrect output" + "verify produces incorrect output for a given input combination" ], "effects": [ - "Incorrect system behavior" + "incorrect system behavior from verify" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-454", + "id": "FMEA-455", "item": "vuln.Description", "component": "vuln", "function": "Description", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "vuln/vuln.go", + "failureMode": "vuln returns stale or inconsistent receiver state", + "effect": "caller of vuln observes state that no longer reflects a concurrent mutation", + "cause": "vuln reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "vuln returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of vuln observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-455", + "id": "FMEA-456", "item": "vuln.ID", "component": "vuln", "function": "ID", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Incorrect output", - "effect": "Incorrect system behavior", - "cause": "a logic error not surfaced as an error return or panic", + "file": "vuln/vuln.go", + "failureMode": "vuln returns stale or inconsistent receiver state", + "effect": "caller of vuln observes state that no longer reflects a concurrent mutation", + "cause": "vuln reads receiver fields with no synchronisation against concurrent mutation", "severity": "low", "actionPriority": "low", "mitigations": [ - "add requirement-traced unit tests covering this function's documented behaviour" + "add a mutex, or otherwise make the receiver's field access goroutine-safe" ], "failureModes": [ - "Incorrect output" + "vuln returns stale or inconsistent receiver state" ], "effects": [ - "Incorrect system behavior" + "caller of vuln observes state that no longer reflects a concurrent mutation" ], "detectionControl": "unit tests" }, { - "id": "FMEA-456", + "id": "FMEA-457", "item": "vuln.ParseGoMod", "component": "vuln", "function": "ParseGoMod", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "vuln/vuln.go", + "failureMode": "vuln returns an unexpected error", + "effect": "silent failure propagated to vuln's caller", + "cause": "an unhandled error path in vuln's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11183,22 +11208,22 @@ "REQ-VULN001" ], "failureModes": [ - "Returns unexpected error" + "vuln returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to vuln's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-457", + "id": "FMEA-458", "item": "vuln.Render", "component": "vuln", "function": "Render", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "vuln/vuln.go", + "failureMode": "vuln returns an unexpected error", + "effect": "silent failure propagated to vuln's caller", + "cause": "an unhandled error path in vuln's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11208,22 +11233,22 @@ "REQ-VULN005" ], "failureModes": [ - "Returns unexpected error" + "vuln returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to vuln's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-458", + "id": "FMEA-459", "item": "vuln.Run", "component": "vuln", "function": "Run", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Returns unexpected error; Uncontrolled execution", - "effect": "Silent failure propagated to caller; Resource exhaustion", - "cause": "an unhandled error path in the function body or a callee; no bound on iteration count, input size, or execution time", + "file": "vuln/vuln.go", + "failureMode": "vuln returns an unexpected error; uncontrolled execution in vuln", + "effect": "silent failure propagated to vuln's caller; resource exhaustion triggered from vuln", + "cause": "an unhandled error path in vuln's function body or a callee; no bound on iteration count, input size, or execution time in vuln", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11234,24 +11259,24 @@ "REQ-VULN003" ], "failureModes": [ - "Returns unexpected error", - "Uncontrolled execution" + "vuln returns an unexpected error", + "uncontrolled execution in vuln" ], "effects": [ - "Silent failure propagated to caller", - "Resource exhaustion" + "silent failure propagated to vuln's caller", + "resource exhaustion triggered from vuln" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-459", + "id": "FMEA-460", "item": "vuln.Scan", "component": "vuln", "function": "Scan", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "vuln/vuln.go", + "failureMode": "vuln returns an unexpected error", + "effect": "silent failure propagated to vuln's caller", + "cause": "an unhandled error path in vuln's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11262,22 +11287,22 @@ "REQ-VULN002" ], "failureModes": [ - "Returns unexpected error" + "vuln returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to vuln's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-460", + "id": "FMEA-461", "item": "vuln.ScanWithGovulncheck", "component": "vuln", "function": "ScanWithGovulncheck", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "vuln/vuln.go", + "failureMode": "vuln returns an unexpected error", + "effect": "silent failure propagated to vuln's caller", + "cause": "an unhandled error path in vuln's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11287,22 +11312,22 @@ "REQ-VULN006" ], "failureModes": [ - "Returns unexpected error" + "vuln returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to vuln's caller" ], "detectionControl": "requirement testing + unit tests" }, { - "id": "FMEA-461", + "id": "FMEA-462", "item": "vuln.ScanWithURL", "component": "vuln", "function": "ScanWithURL", - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln.go", - "failureMode": "Returns unexpected error", - "effect": "Silent failure propagated to caller", - "cause": "an unhandled error path in the function body or a callee", + "file": "vuln/vuln.go", + "failureMode": "vuln returns an unexpected error", + "effect": "silent failure propagated to vuln's caller", + "cause": "an unhandled error path in vuln's function body or a callee", "severity": "high", "actionPriority": "high", "mitigations": [ @@ -11312,19 +11337,19 @@ "REQ-VULN004" ], "failureModes": [ - "Returns unexpected error" + "vuln returns an unexpected error" ], "effects": [ - "Silent failure propagated to caller" + "silent failure propagated to vuln's caller" ], "detectionControl": "requirement testing + unit tests" } ], "summary": { - "total": 461, - "highPriority": 280, - "componentsAnalyzed": 461, - "componentsInProject": 461, + "total": 462, + "highPriority": 281, + "componentsAnalyzed": 462, + "componentsInProject": 462, "coveragePct": 100, "componentsInProjectMethod": "raw regex scan for top-level exported func declarations in non-test .go files under non-vendor/testdata/dot-directories (CountProjectFunctions) — independent of Scan's own go/ast parse, so a file Scan's parser rejects still counts toward the denominator; componentsAnalyzed counts entries Scan actually emitted (every exported function in every file it could parse — Scan does not curate a subset)" } diff --git a/fmea/fmea.go b/fmea/fmea.go index d75e40d..9af4493 100644 --- a/fmea/fmea.go +++ b/fmea/fmea.go @@ -32,6 +32,7 @@ import ( fusa "github.com/SoundMatt/go-FuSa" "github.com/SoundMatt/go-FuSa/config" "github.com/SoundMatt/go-FuSa/engine" + "github.com/SoundMatt/go-FuSa/trace" ) // FMEAFile and FMEACSVFile are the default output filenames. @@ -170,6 +171,14 @@ func Scan(projectRoot string) (*Report, error) { }) for i := range report.Entries { report.Entries[i].ID = fmt.Sprintf("FMEA-%03d", i+1) + // §4 MUST: entries[].file is project-relative, forward-slash — the + // same rule lint/analyze/cyber already apply to their own findings. + // scanFile assigns the raw (often absolute, under the default + // --dir-omitted invocation) walked path; relativize it here rather + // than threading projectRoot through scanDir/scanFile. + // + //fusa:req REQ-LOC-REL003 + report.Entries[i].File = relFile(projectRoot, report.Entries[i].File) } report.Summary = buildSummary(report, projectRoot) @@ -202,6 +211,16 @@ func buildSummary(report *Report, projectRoot string) Summary { } else { s.CoveragePct = 100 } + // x-FuSa spec §9.2 MUST: coveragePct must never exceed 100. The fallback + // above already guarantees total >= ComponentsAnalyzed (so this can't + // currently trigger), but a defensive clamp is cheap insurance against a + // future change to the fallback logic silently reintroducing the + // overflow the spec calls out. + // + //fusa:req REQ-FMEA012 + if s.CoveragePct > 100 { + s.CoveragePct = 100 + } s.ComponentsInProjectMethod = "raw regex scan for top-level exported func declarations in non-test .go files " + "under non-vendor/testdata/dot-directories (CountProjectFunctions) — independent of Scan's own go/ast parse, " + "so a file Scan's parser rejects still counts toward the denominator; componentsAnalyzed counts entries Scan " + @@ -268,8 +287,13 @@ func scanFile(path string, hasTests bool) ([]Entry, error) { reqIDs := extractReqIDs(funcDecl.Doc) returnsErr := funcReturnsError(funcDecl) hasGo := funcHasGoroutine(funcDecl.Body) + hasReceiver := funcDecl.Recv != nil && len(funcDecl.Recv.List) > 0 + paramCount := 0 + if funcDecl.Type.Params != nil { + paramCount = funcDecl.Type.Params.NumFields() + } - modes, effects, causes, mitigations, sev := deriveAnalysis(funcDecl.Name.Name, returnsErr, hasGo, len(reqIDs) > 0) + modes, effects, causes, mitigations, sev := deriveAnalysis(funcDecl.Name.Name, component, returnsErr, hasGo, len(reqIDs) > 0, hasReceiver, paramCount) detection := detectionControl(hasTests, len(reqIDs) > 0) entries = append(entries, Entry{ @@ -364,6 +388,9 @@ var exportedFuncRE = regexp.MustCompile(`^func\s+(\([^)]*\)\s+)?[A-Z]\w*\s*\(`) // opening paren is not matched (rare in gofmt'd code), and it makes no // attempt to exclude trivial accessors/interface shims the way // trace.ScanFuncTagCoverage does — see Summary.ComponentsInProjectMethod. +// The test-tree/dot-directory exclusion itself reuses trace.IsExcludedDir +// (x-FuSa spec §1.6 rule 4 SHOULD) rather than an independently-drifting +// copy of the same three-way vendor/testdata/dot-dir check. // //fusa:req REQ-FMEA009 func CountProjectFunctions(root string) (int, error) { @@ -373,8 +400,7 @@ func CountProjectFunctions(root string) (int, error) { return walkErr } if d.IsDir() { - base := d.Name() - if path != root && (base == "vendor" || base == "testdata" || strings.HasPrefix(base, ".")) { + if path != root && trace.IsExcludedDir(d.Name()) { return filepath.SkipDir } return nil @@ -465,8 +491,18 @@ func funcHasGoroutine(body *ast.BlockStmt) bool { return found } +// deriveAnalysis buckets a scanned function into a failureMode/effect/cause/ +// mitigations template. x-FuSa spec §1.6 rule 3 allows heuristic templates +// "as long as the output measurably differs across distinct input shapes" — +// every branch below weaves in component (the function's own package/ +// directory, a genuine per-function signal, not a fabricated one) plus, +// where relevant, whether the function has a receiver and how many +// parameters it takes, so the generated text actually varies with the +// underlying function's shape rather than collapsing onto a handful of +// fixed strings regardless of which function produced them (go-FuSa#60). +// //fusa:req REQ-FMEA002 -func deriveAnalysis(name string, returnsErr, hasGoroutine, hasSafetyReq bool) (modes, effects, causes, mitigations []string, sev Severity) { +func deriveAnalysis(name, component string, returnsErr, hasGoroutine, hasSafetyReq, hasReceiver bool, paramCount int) (modes, effects, causes, mitigations []string, sev Severity) { switch { case hasSafetyReq: sev = SeverityHigh @@ -477,36 +513,59 @@ func deriveAnalysis(name string, returnsErr, hasGoroutine, hasSafetyReq bool) (m } if returnsErr { - modes = append(modes, "Returns unexpected error") - effects = append(effects, "Silent failure propagated to caller") - causes = append(causes, "an unhandled error path in the function body or a callee") + modes = append(modes, fmt.Sprintf("%s returns an unexpected error", component)) + effects = append(effects, fmt.Sprintf("silent failure propagated to %s's caller", component)) + causes = append(causes, fmt.Sprintf("an unhandled error path in %s's function body or a callee", component)) mitigations = append(mitigations, "add unit test coverage for every returned error path") } if hasGoroutine { - modes = append(modes, "Goroutine not terminated") - effects = append(effects, "Memory leak or deadlock") - causes = append(causes, "a spawned goroutine with no cancellation, timeout, or WaitGroup join") + modes = append(modes, fmt.Sprintf("goroutine spawned in %s not terminated", component)) + effects = append(effects, fmt.Sprintf("memory leak or deadlock in %s", component)) + causes = append(causes, fmt.Sprintf("a spawned goroutine in %s with no cancellation, timeout, or WaitGroup join", component)) mitigations = append(mitigations, "join or cancel the goroutine before the function returns") } lower := strings.ToLower(name) - if strings.Contains(lower, "write") || strings.Contains(lower, "save") || strings.Contains(lower, "store") { - modes = append(modes, "Partial write / data corruption") - effects = append(effects, "Incorrect system state") - causes = append(causes, "an interrupted write (crash, disk full, concurrent access) leaving a partial artifact") + switch { + case strings.Contains(lower, "write") || strings.Contains(lower, "save") || strings.Contains(lower, "store"): + modes = append(modes, fmt.Sprintf("partial write / data corruption in %s", component)) + effects = append(effects, fmt.Sprintf("incorrect persisted state for %s", component)) + causes = append(causes, fmt.Sprintf("an interrupted write in %s (crash, disk full, concurrent access) leaving a partial artifact", component)) mitigations = append(mitigations, "write via a temp file and atomic rename, or validate the write's result") - } else if !hasGoroutine && (strings.Contains(lower, "run") || strings.Contains(lower, "execute") || strings.Contains(lower, "start")) { - modes = append(modes, "Uncontrolled execution") - effects = append(effects, "Resource exhaustion") - causes = append(causes, "no bound on iteration count, input size, or execution time") + case !hasGoroutine && (strings.Contains(lower, "run") || strings.Contains(lower, "execute") || strings.Contains(lower, "start")): + modes = append(modes, fmt.Sprintf("uncontrolled execution in %s", component)) + effects = append(effects, fmt.Sprintf("resource exhaustion triggered from %s", component)) + causes = append(causes, fmt.Sprintf("no bound on iteration count, input size, or execution time in %s", component)) mitigations = append(mitigations, "add a context deadline or explicit resource bound") } + // No signal above matched — the largest bucket in most codebases. Split + // it by receiver/parameter shape (both genuine per-function signals, per + // §1.6 rule 3) rather than collapsing every such function onto one + // fixed "Incorrect output" string regardless of its actual shape. if len(modes) == 0 { - modes = []string{"Incorrect output"} - effects = []string{"Incorrect system behavior"} - causes = []string{"a logic error not surfaced as an error return or panic"} - mitigations = []string{"add requirement-traced unit tests covering this function's documented behaviour"} + switch { + case hasReceiver && paramCount == 0: + modes = []string{fmt.Sprintf("%s returns stale or inconsistent receiver state", component)} + effects = []string{fmt.Sprintf("caller of %s observes state that no longer reflects a concurrent mutation", component)} + causes = []string{fmt.Sprintf("%s reads receiver fields with no synchronisation against concurrent mutation", component)} + mitigations = []string{"add a mutex, or otherwise make the receiver's field access goroutine-safe"} + case hasReceiver: + modes = []string{fmt.Sprintf("%s derives incorrect output from receiver and argument state", component)} + effects = []string{fmt.Sprintf("incorrect system behavior from %s", component)} + causes = []string{fmt.Sprintf("a logic error in %s combining receiver state with its arguments, not surfaced as an error return or panic", component)} + mitigations = []string{"add requirement-traced unit tests covering this method's documented behaviour"} + case paramCount == 0: + modes = []string{fmt.Sprintf("%s produces incorrect output with no input to validate against", component)} + effects = []string{fmt.Sprintf("incorrect system behavior from %s", component)} + causes = []string{fmt.Sprintf("a logic error in %s not surfaced as an error return or panic", component)} + mitigations = []string{"add requirement-traced unit tests covering this function's documented behaviour"} + default: + modes = []string{fmt.Sprintf("%s produces incorrect output for a given input combination", component)} + effects = []string{fmt.Sprintf("incorrect system behavior from %s", component)} + causes = []string{fmt.Sprintf("a logic error in %s not surfaced as an error return or panic", component)} + mitigations = []string{"add requirement-traced unit tests covering this function's documented behaviour"} + } } return } @@ -549,6 +608,18 @@ func readModule(root string) string { return "" } +// relFile relativizes path against root and normalises it to forward +// slashes (§4 MUST). An unrelativisable path (rare — e.g. a different +// volume on Windows) is returned unchanged rather than erroring, matching +// lint.locationEnd/cyber.location's identical fallback. +func relFile(root, path string) string { + rel, err := filepath.Rel(root, path) + if err != nil { + return path + } + return filepath.ToSlash(rel) +} + // ─── engine rule ───────────────────────────────────────────────────────────── func init() { diff --git a/fmea/fmea_test.go b/fmea/fmea_test.go index fdafa2d..04f2d64 100644 --- a/fmea/fmea_test.go +++ b/fmea/fmea_test.go @@ -5,6 +5,7 @@ import ( "context" "encoding/csv" "encoding/json" + "fmt" "os" "path/filepath" "strings" @@ -548,3 +549,68 @@ func FuzzScan(f *testing.F) { _, _ = fmea.Scan(dir) // must not panic }) } + +// ─── §4 project-relative file paths ──────────────────────────────────────────── + +//fusa:test REQ-LOC-REL003 +func TestScan_EntryFileIsProjectRelative(t *testing.T) { + dir := testutil.ProjectDir(t, testutil.GoSource("mypkg/work.go", srcExported)) + r, err := fmea.Scan(dir) + if err != nil { + t.Fatalf("Scan: %v", err) + } + if len(r.Entries) == 0 { + t.Fatal("expected at least one entry") + } + for _, e := range r.Entries { + if filepath.IsAbs(e.File) { + t.Errorf("entry %s: File = %q, want a project-relative path (§4 MUST)", e.Function, e.File) + } + if strings.Contains(e.File, "\\") { + t.Errorf("entry %s: File = %q, want forward-slash separators", e.Function, e.File) + } + } + if r.Entries[0].File != "mypkg/work.go" { + t.Errorf("File = %q, want %q", r.Entries[0].File, "mypkg/work.go") + } +} + +// ─── §9.2 coveragePct MUST NOT exceed 100 ────────────────────────────────────── + +//fusa:test REQ-FMEA012 +func TestScan_CoveragePct_NeverExceeds100_WithNonTrivialTestTree(t *testing.T) { + // A fixture with a substantial test-source tree (many _test.go files, + // each with several exported Test* functions) alongside a small number + // of real exported functions — a fixture with no such test-tree cannot + // exercise the coveragePct-overflow bug the x-FuSa spec §9.2 MUST + // clamp guards against, since _test.go exclusion (or its absence) + // can't skew componentsAnalyzed vs componentsInProject without one. + files := map[string]string{ + "go.mod": "module example.com/fixture\n\ngo 1.22\n", + "pkg/real.go": "package pkg\n\n" + + "func A() error { return nil }\n" + + "func B() error { return nil }\n" + + "func C() error { return nil }\n", + } + for i := 0; i < 10; i++ { + name := fmt.Sprintf("pkg/thing%d_test.go", i) + files[name] = fmt.Sprintf("package pkg\n\nimport \"testing\"\n\n"+ + "func TestA%d(t *testing.T) {}\nfunc TestB%d(t *testing.T) {}\nfunc TestC%d(t *testing.T) {}\n", + i, i, i) + } + dir := testutil.ProjectDir(t, files) + + r, err := fmea.Scan(dir) + if err != nil { + t.Fatalf("Scan: %v", err) + } + if r.Summary.CoveragePct > 100 { + t.Errorf("CoveragePct = %.2f, want <= 100 (x-FuSa spec §9.2 MUST)", r.Summary.CoveragePct) + } + if r.Summary.ComponentsAnalyzed != 3 { + t.Errorf("ComponentsAnalyzed = %d, want 3 (test-file functions must not be counted)", r.Summary.ComponentsAnalyzed) + } + if r.Summary.ComponentsInProject < r.Summary.ComponentsAnalyzed { + t.Errorf("ComponentsInProject = %d, want >= ComponentsAnalyzed = %d", r.Summary.ComponentsInProject, r.Summary.ComponentsAnalyzed) + } +} diff --git a/fusa.go b/fusa.go index 97d78a1..4b38350 100644 --- a/fusa.go +++ b/fusa.go @@ -23,7 +23,7 @@ import ( ) // Version is the current release of go-FuSa. -const Version = "0.37.0" +const Version = "0.40.0" // SpecVersion is the x-FuSa spec version this release implements. const SpecVersion = "1.14.0" diff --git a/tara.json b/tara.json index 48bb629..f955205 100644 --- a/tara.json +++ b/tara.json @@ -2,9 +2,9 @@ "schemaVersion": "1.14", "kind": "tara-report", "tool": "go-FuSa", - "toolVersion": "0.36.0", + "toolVersion": "0.40.0", "language": "go", - "generatedAt": "2026-07-28T19:39:11.246008Z", + "generatedAt": "2026-07-28T22:02:44.835077Z", "format": "go-FuSa TARA v1", "module": "github.com/SoundMatt/go-FuSa", "threats": [ @@ -34,11 +34,11 @@ "currentControl": "Use exec.Command with fixed command and sanitised args", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 23 }, "cyberRuleId": "CYBER005", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 23 }, { @@ -67,11 +67,11 @@ "currentControl": "Use exec.Command with fixed command and sanitised args", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 35 }, "cyberRuleId": "CYBER005", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 35 }, { @@ -101,11 +101,11 @@ "currentControl": "Add range check before conversion", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_trace_funccov_test.go", + "file": "cmd/gofusa/cmd_trace_funccov_test.go", "line": 77 }, "cyberRuleId": "CYBER009", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_trace_funccov_test.go", + "sourceFile": "cmd/gofusa/cmd_trace_funccov_test.go", "sourceLine": 77 }, { @@ -135,11 +135,11 @@ "currentControl": "Add range check before conversion", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_trace_reqcov_test.go", + "file": "cmd/gofusa/cmd_trace_reqcov_test.go", "line": 125 }, "cyberRuleId": "CYBER009", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_trace_reqcov_test.go", + "sourceFile": "cmd/gofusa/cmd_trace_reqcov_test.go", "sourceLine": 125 }, { @@ -169,11 +169,11 @@ "currentControl": "Add range check before conversion", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/report/summary.go", + "file": "report/summary.go", "line": 149 }, "cyberRuleId": "CYBER009", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/report/summary.go", + "sourceFile": "report/summary.go", "sourceLine": 149 }, { @@ -202,11 +202,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_slsa_test.go", + "file": "cmd/gofusa/cmd_slsa_test.go", "line": 112 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_slsa_test.go", + "sourceFile": "cmd/gofusa/cmd_slsa_test.go", "sourceLine": 112 }, { @@ -235,11 +235,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "file": "cmd/gofusa/cmd_v020_test.go", "line": 372 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "sourceFile": "cmd/gofusa/cmd_v020_test.go", "sourceLine": 372 }, { @@ -268,11 +268,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage_test.go", + "file": "coverage/coverage_test.go", "line": 25 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage_test.go", + "sourceFile": "coverage/coverage_test.go", "sourceLine": 25 }, { @@ -301,11 +301,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 62 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 62 }, { @@ -334,11 +334,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 223 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 223 }, { @@ -367,11 +367,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "file": "fusa_test.go", "line": 256 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "sourceFile": "fusa_test.go", "sourceLine": 256 }, { @@ -400,11 +400,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "file": "fusa_test.go", "line": 275 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "sourceFile": "fusa_test.go", "sourceLine": 275 }, { @@ -433,11 +433,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "file": "fusa_test.go", "line": 293 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "sourceFile": "fusa_test.go", "sourceLine": 293 }, { @@ -466,11 +466,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "file": "iec61508/iec61508_test.go", "line": 61 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "sourceFile": "iec61508/iec61508_test.go", "sourceLine": 61 }, { @@ -499,11 +499,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/assess_test.go", + "file": "iec62443/assess_test.go", "line": 17 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/assess_test.go", + "sourceFile": "iec62443/assess_test.go", "sourceLine": 17 }, { @@ -532,11 +532,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 62 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 62 }, { @@ -565,11 +565,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas_test.go", + "file": "sas/sas_test.go", "line": 81 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas_test.go", + "sourceFile": "sas/sas_test.go", "sourceLine": 81 }, { @@ -598,11 +598,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "file": "sci/sci_test.go", "line": 73 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "sourceFile": "sci/sci_test.go", "sourceLine": 73 }, { @@ -631,11 +631,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 38 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 38 }, { @@ -664,11 +664,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 66 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 66 }, { @@ -697,11 +697,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 99 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 99 }, { @@ -730,11 +730,11 @@ "currentControl": "Create directory with mode 0750 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 129 }, "cyberRuleId": "CYBER016", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 129 }, { @@ -763,11 +763,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "file": "cmd/gofusa/cmd_comp_test.go", "line": 17 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "sourceFile": "cmd/gofusa/cmd_comp_test.go", "sourceLine": 17 }, { @@ -796,11 +796,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "file": "cmd/gofusa/cmd_comp_test.go", "line": 42 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "sourceFile": "cmd/gofusa/cmd_comp_test.go", "sourceLine": 42 }, { @@ -829,11 +829,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "file": "cmd/gofusa/cmd_comp_test.go", "line": 58 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "sourceFile": "cmd/gofusa/cmd_comp_test.go", "sourceLine": 58 }, { @@ -862,11 +862,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "file": "cmd/gofusa/cmd_comp_test.go", "line": 89 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "sourceFile": "cmd/gofusa/cmd_comp_test.go", "sourceLine": 89 }, { @@ -895,11 +895,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "file": "cmd/gofusa/cmd_comp_test.go", "line": 111 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "sourceFile": "cmd/gofusa/cmd_comp_test.go", "sourceLine": 111 }, { @@ -928,11 +928,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "file": "cmd/gofusa/cmd_comp_test.go", "line": 151 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_comp_test.go", + "sourceFile": "cmd/gofusa/cmd_comp_test.go", "sourceLine": 151 }, { @@ -961,11 +961,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "file": "cmd/gofusa/cmd_coupling_test.go", "line": 14 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "sourceFile": "cmd/gofusa/cmd_coupling_test.go", "sourceLine": 14 }, { @@ -994,11 +994,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "file": "cmd/gofusa/cmd_coupling_test.go", "line": 18 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "sourceFile": "cmd/gofusa/cmd_coupling_test.go", "sourceLine": 18 }, { @@ -1027,11 +1027,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "file": "cmd/gofusa/cmd_coupling_test.go", "line": 36 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "sourceFile": "cmd/gofusa/cmd_coupling_test.go", "sourceLine": 36 }, { @@ -1060,11 +1060,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "file": "cmd/gofusa/cmd_coupling_test.go", "line": 39 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coupling_test.go", + "sourceFile": "cmd/gofusa/cmd_coupling_test.go", "sourceLine": 39 }, { @@ -1093,11 +1093,11 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_hooks.go", + "file": "cmd/gofusa/cmd_hooks.go", "line": 84 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_hooks.go", + "sourceFile": "cmd/gofusa/cmd_hooks.go", "sourceLine": 84 }, { @@ -1126,15 +1126,81 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_iec62443_test.go", + "file": "cmd/gofusa/cmd_iec62443_test.go", "line": 119 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_iec62443_test.go", + "sourceFile": "cmd/gofusa/cmd_iec62443_test.go", "sourceLine": 119 }, { "id": "TARA-035", + "asset": "cmd_pathrel_test.go", + "threat": "World-readable/writable file allows unauthorised data access or tampering", + "stride": [ + "I", + "T" + ], + "cwe": "CWE-732", + "attackVector": "Local", + "attackFeasibility": "medium", + "impact": { + "safety": "medium", + "financial": "low", + "operational": "low", + "privacy": "medium" + }, + "risk": "medium", + "treatment": "mitigate", + "securityLevel": 2, + "mitigations": [ + "Create file with mode 0640 or stricter" + ], + "currentControl": "Create file with mode 0640 or stricter", + "residualRisk": "Low after remediation", + "location": { + "file": "cmd/gofusa/cmd_pathrel_test.go", + "line": 25 + }, + "cyberRuleId": "CYBER017", + "sourceFile": "cmd/gofusa/cmd_pathrel_test.go", + "sourceLine": 25 + }, + { + "id": "TARA-036", + "asset": "cmd_pathrel_test.go", + "threat": "World-readable/writable file allows unauthorised data access or tampering", + "stride": [ + "I", + "T" + ], + "cwe": "CWE-732", + "attackVector": "Local", + "attackFeasibility": "medium", + "impact": { + "safety": "medium", + "financial": "low", + "operational": "low", + "privacy": "medium" + }, + "risk": "medium", + "treatment": "mitigate", + "securityLevel": 2, + "mitigations": [ + "Create file with mode 0640 or stricter" + ], + "currentControl": "Create file with mode 0640 or stricter", + "residualRisk": "Low after remediation", + "location": { + "file": "cmd/gofusa/cmd_pathrel_test.go", + "line": 71 + }, + "cyberRuleId": "CYBER017", + "sourceFile": "cmd/gofusa/cmd_pathrel_test.go", + "sourceLine": 71 + }, + { + "id": "TARA-037", "asset": "cmd_slsa_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1159,15 +1225,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_slsa_test.go", + "file": "cmd/gofusa/cmd_slsa_test.go", "line": 115 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_slsa_test.go", + "sourceFile": "cmd/gofusa/cmd_slsa_test.go", "sourceLine": 115 }, { - "id": "TARA-036", + "id": "TARA-038", "asset": "cmd_slsa_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1192,15 +1258,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_slsa_test.go", + "file": "cmd/gofusa/cmd_slsa_test.go", "line": 119 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_slsa_test.go", + "sourceFile": "cmd/gofusa/cmd_slsa_test.go", "sourceLine": 119 }, { - "id": "TARA-037", + "id": "TARA-039", "asset": "cmd_v018_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1225,15 +1291,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "file": "cmd/gofusa/cmd_v018_test.go", "line": 142 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "sourceFile": "cmd/gofusa/cmd_v018_test.go", "sourceLine": 142 }, { - "id": "TARA-038", + "id": "TARA-040", "asset": "cmd_v018_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1258,15 +1324,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "file": "cmd/gofusa/cmd_v018_test.go", "line": 159 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "sourceFile": "cmd/gofusa/cmd_v018_test.go", "sourceLine": 159 }, { - "id": "TARA-039", + "id": "TARA-041", "asset": "cmd_v018_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1291,15 +1357,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "file": "cmd/gofusa/cmd_v018_test.go", "line": 175 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "sourceFile": "cmd/gofusa/cmd_v018_test.go", "sourceLine": 175 }, { - "id": "TARA-040", + "id": "TARA-042", "asset": "cmd_v018_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1324,15 +1390,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "file": "cmd/gofusa/cmd_v018_test.go", "line": 215 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "sourceFile": "cmd/gofusa/cmd_v018_test.go", "sourceLine": 215 }, { - "id": "TARA-041", + "id": "TARA-043", "asset": "cmd_v018_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1357,15 +1423,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "file": "cmd/gofusa/cmd_v018_test.go", "line": 249 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v018_test.go", + "sourceFile": "cmd/gofusa/cmd_v018_test.go", "sourceLine": 249 }, { - "id": "TARA-042", + "id": "TARA-044", "asset": "cmd_v020_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1390,15 +1456,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "file": "cmd/gofusa/cmd_v020_test.go", "line": 260 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "sourceFile": "cmd/gofusa/cmd_v020_test.go", "sourceLine": 260 }, { - "id": "TARA-043", + "id": "TARA-045", "asset": "cmd_v020_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1423,15 +1489,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "file": "cmd/gofusa/cmd_v020_test.go", "line": 365 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "sourceFile": "cmd/gofusa/cmd_v020_test.go", "sourceLine": 365 }, { - "id": "TARA-044", + "id": "TARA-046", "asset": "cmd_v020_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1456,15 +1522,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "file": "cmd/gofusa/cmd_v020_test.go", "line": 368 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "sourceFile": "cmd/gofusa/cmd_v020_test.go", "sourceLine": 368 }, { - "id": "TARA-045", + "id": "TARA-047", "asset": "cmd_v020_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1489,15 +1555,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "file": "cmd/gofusa/cmd_v020_test.go", "line": 394 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "sourceFile": "cmd/gofusa/cmd_v020_test.go", "sourceLine": 394 }, { - "id": "TARA-046", + "id": "TARA-048", "asset": "cmd_v020_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1522,15 +1588,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "file": "cmd/gofusa/cmd_v020_test.go", "line": 416 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "sourceFile": "cmd/gofusa/cmd_v020_test.go", "sourceLine": 416 }, { - "id": "TARA-047", + "id": "TARA-049", "asset": "cmd_v020_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1555,15 +1621,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "file": "cmd/gofusa/cmd_v020_test.go", "line": 433 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v020_test.go", + "sourceFile": "cmd/gofusa/cmd_v020_test.go", "sourceLine": 433 }, { - "id": "TARA-048", + "id": "TARA-050", "asset": "cmd_v021_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1588,15 +1654,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v021_test.go", + "file": "cmd/gofusa/cmd_v021_test.go", "line": 41 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v021_test.go", + "sourceFile": "cmd/gofusa/cmd_v021_test.go", "sourceLine": 41 }, { - "id": "TARA-049", + "id": "TARA-051", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1621,15 +1687,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 24 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 24 }, { - "id": "TARA-050", + "id": "TARA-052", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1654,15 +1720,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 36 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 36 }, { - "id": "TARA-051", + "id": "TARA-053", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1687,15 +1753,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 59 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 59 }, { - "id": "TARA-052", + "id": "TARA-054", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1720,15 +1786,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 66 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 66 }, { - "id": "TARA-053", + "id": "TARA-055", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1753,15 +1819,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 118 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 118 }, { - "id": "TARA-054", + "id": "TARA-056", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1786,15 +1852,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 135 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 135 }, { - "id": "TARA-055", + "id": "TARA-057", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1819,15 +1885,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 152 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 152 }, { - "id": "TARA-056", + "id": "TARA-058", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1852,15 +1918,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 175 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 175 }, { - "id": "TARA-057", + "id": "TARA-059", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1885,15 +1951,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 191 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 191 }, { - "id": "TARA-058", + "id": "TARA-060", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1918,15 +1984,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 196 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 196 }, { - "id": "TARA-059", + "id": "TARA-061", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1951,15 +2017,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 237 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 237 }, { - "id": "TARA-060", + "id": "TARA-062", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -1984,15 +2050,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 257 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 257 }, { - "id": "TARA-061", + "id": "TARA-063", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2017,15 +2083,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 274 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 274 }, { - "id": "TARA-062", + "id": "TARA-064", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2050,15 +2116,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 298 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 298 }, { - "id": "TARA-063", + "id": "TARA-065", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2083,15 +2149,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 319 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 319 }, { - "id": "TARA-064", + "id": "TARA-066", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2116,15 +2182,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 338 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 338 }, { - "id": "TARA-065", + "id": "TARA-067", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2149,15 +2215,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 346 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 346 }, { - "id": "TARA-066", + "id": "TARA-068", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2182,15 +2248,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 357 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 357 }, { - "id": "TARA-067", + "id": "TARA-069", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2215,15 +2281,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 371 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 371 }, { - "id": "TARA-068", + "id": "TARA-070", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2248,15 +2314,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 385 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 385 }, { - "id": "TARA-069", + "id": "TARA-071", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2281,15 +2347,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 395 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 395 }, { - "id": "TARA-070", + "id": "TARA-072", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2314,15 +2380,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 478 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 478 }, { - "id": "TARA-071", + "id": "TARA-073", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2347,15 +2413,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 495 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 495 }, { - "id": "TARA-072", + "id": "TARA-074", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2380,15 +2446,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 523 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 523 }, { - "id": "TARA-073", + "id": "TARA-075", "asset": "cmd_v023_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2413,15 +2479,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "file": "cmd/gofusa/cmd_v023_test.go", "line": 540 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v023_test.go", + "sourceFile": "cmd/gofusa/cmd_v023_test.go", "sourceLine": 540 }, { - "id": "TARA-074", + "id": "TARA-076", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2446,15 +2512,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 146 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 146 }, { - "id": "TARA-075", + "id": "TARA-077", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2479,15 +2545,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 158 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 158 }, { - "id": "TARA-076", + "id": "TARA-078", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2512,15 +2578,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 225 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 225 }, { - "id": "TARA-077", + "id": "TARA-079", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2545,15 +2611,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 237 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 237 }, { - "id": "TARA-078", + "id": "TARA-080", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2578,15 +2644,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 257 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 257 }, { - "id": "TARA-079", + "id": "TARA-081", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2611,15 +2677,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 266 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 266 }, { - "id": "TARA-080", + "id": "TARA-082", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2644,15 +2710,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 289 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 289 }, { - "id": "TARA-081", + "id": "TARA-083", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2677,15 +2743,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 317 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 317 }, { - "id": "TARA-082", + "id": "TARA-084", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2710,15 +2776,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 323 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 323 }, { - "id": "TARA-083", + "id": "TARA-085", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2743,15 +2809,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 340 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 340 }, { - "id": "TARA-084", + "id": "TARA-086", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2776,15 +2842,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 469 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 469 }, { - "id": "TARA-085", + "id": "TARA-087", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2809,15 +2875,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 496 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 496 }, { - "id": "TARA-086", + "id": "TARA-088", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2842,15 +2908,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 610 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 610 }, { - "id": "TARA-087", + "id": "TARA-089", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2875,15 +2941,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 727 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 727 }, { - "id": "TARA-088", + "id": "TARA-090", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2908,15 +2974,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 735 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 735 }, { - "id": "TARA-089", + "id": "TARA-091", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2941,15 +3007,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 741 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 741 }, { - "id": "TARA-090", + "id": "TARA-092", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -2974,15 +3040,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 766 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 766 }, { - "id": "TARA-091", + "id": "TARA-093", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3007,15 +3073,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 780 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 780 }, { - "id": "TARA-092", + "id": "TARA-094", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3040,15 +3106,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 820 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 820 }, { - "id": "TARA-093", + "id": "TARA-095", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3073,15 +3139,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 823 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 823 }, { - "id": "TARA-094", + "id": "TARA-096", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3106,15 +3172,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 890 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 890 }, { - "id": "TARA-095", + "id": "TARA-097", "asset": "cmd_v024b_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3139,15 +3205,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 927 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 927 }, { - "id": "TARA-096", + "id": "TARA-098", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3172,15 +3238,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 60 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 60 }, { - "id": "TARA-097", + "id": "TARA-099", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3205,15 +3271,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 69 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 69 }, { - "id": "TARA-098", + "id": "TARA-100", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3238,15 +3304,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 153 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 153 }, { - "id": "TARA-099", + "id": "TARA-101", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3271,15 +3337,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 166 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 166 }, { - "id": "TARA-100", + "id": "TARA-102", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3304,15 +3370,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 222 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 222 }, { - "id": "TARA-101", + "id": "TARA-103", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3337,15 +3403,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 441 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 441 }, { - "id": "TARA-102", + "id": "TARA-104", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3370,15 +3436,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 454 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 454 }, { - "id": "TARA-103", + "id": "TARA-105", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3403,15 +3469,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 539 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 539 }, { - "id": "TARA-104", + "id": "TARA-106", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3436,15 +3502,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 566 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 566 }, { - "id": "TARA-105", + "id": "TARA-107", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3469,15 +3535,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 605 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 605 }, { - "id": "TARA-106", + "id": "TARA-108", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3502,15 +3568,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 675 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 675 }, { - "id": "TARA-107", + "id": "TARA-109", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3535,15 +3601,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 723 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 723 }, { - "id": "TARA-108", + "id": "TARA-110", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3568,15 +3634,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 744 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 744 }, { - "id": "TARA-109", + "id": "TARA-111", "asset": "cmd_v024c_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3601,15 +3667,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "file": "cmd/gofusa/cmd_v024c_test.go", "line": 764 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024c_test.go", + "sourceFile": "cmd/gofusa/cmd_v024c_test.go", "sourceLine": 764 }, { - "id": "TARA-110", + "id": "TARA-112", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3634,15 +3700,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 225 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 225 }, { - "id": "TARA-111", + "id": "TARA-113", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3667,15 +3733,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 238 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 238 }, { - "id": "TARA-112", + "id": "TARA-114", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3700,15 +3766,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 253 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 253 }, { - "id": "TARA-113", + "id": "TARA-115", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3733,15 +3799,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 496 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 496 }, { - "id": "TARA-114", + "id": "TARA-116", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3766,15 +3832,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 515 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 515 }, { - "id": "TARA-115", + "id": "TARA-117", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3799,15 +3865,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 518 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 518 }, { - "id": "TARA-116", + "id": "TARA-118", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3832,15 +3898,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 534 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 534 }, { - "id": "TARA-117", + "id": "TARA-119", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3865,15 +3931,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 567 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 567 }, { - "id": "TARA-118", + "id": "TARA-120", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3898,15 +3964,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 705 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 705 }, { - "id": "TARA-119", + "id": "TARA-121", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3931,15 +3997,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 736 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 736 }, { - "id": "TARA-120", + "id": "TARA-122", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3964,15 +4030,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 752 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 752 }, { - "id": "TARA-121", + "id": "TARA-123", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -3997,15 +4063,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 758 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 758 }, { - "id": "TARA-122", + "id": "TARA-124", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4030,15 +4096,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 888 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 888 }, { - "id": "TARA-123", + "id": "TARA-125", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4063,15 +4129,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 914 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 914 }, { - "id": "TARA-124", + "id": "TARA-126", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4096,15 +4162,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 937 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 937 }, { - "id": "TARA-125", + "id": "TARA-127", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4129,15 +4195,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 963 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 963 }, { - "id": "TARA-126", + "id": "TARA-128", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4162,15 +4228,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 988 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 988 }, { - "id": "TARA-127", + "id": "TARA-129", "asset": "cmd_v024d_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4195,15 +4261,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "file": "cmd/gofusa/cmd_v024d_test.go", "line": 1067 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024d_test.go", + "sourceFile": "cmd/gofusa/cmd_v024d_test.go", "sourceLine": 1067 }, { - "id": "TARA-128", + "id": "TARA-130", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4228,15 +4294,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 17 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 17 }, { - "id": "TARA-129", + "id": "TARA-131", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4261,15 +4327,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 39 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 39 }, { - "id": "TARA-130", + "id": "TARA-132", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4294,15 +4360,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 68 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 68 }, { - "id": "TARA-131", + "id": "TARA-133", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4327,15 +4393,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 86 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 86 }, { - "id": "TARA-132", + "id": "TARA-134", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4360,15 +4426,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 122 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 122 }, { - "id": "TARA-133", + "id": "TARA-135", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4393,15 +4459,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 235 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 235 }, { - "id": "TARA-134", + "id": "TARA-136", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4426,15 +4492,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 254 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 254 }, { - "id": "TARA-135", + "id": "TARA-137", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4459,15 +4525,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 271 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 271 }, { - "id": "TARA-136", + "id": "TARA-138", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4492,15 +4558,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 285 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 285 }, { - "id": "TARA-137", + "id": "TARA-139", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4525,15 +4591,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 299 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 299 }, { - "id": "TARA-138", + "id": "TARA-140", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4558,15 +4624,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 314 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 314 }, { - "id": "TARA-139", + "id": "TARA-141", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4591,15 +4657,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 330 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 330 }, { - "id": "TARA-140", + "id": "TARA-142", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4624,15 +4690,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 336 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 336 }, { - "id": "TARA-141", + "id": "TARA-143", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4657,15 +4723,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 506 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 506 }, { - "id": "TARA-142", + "id": "TARA-144", "asset": "cmd_v024e_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4690,15 +4756,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "file": "cmd/gofusa/cmd_v024e_test.go", "line": 640 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024e_test.go", + "sourceFile": "cmd/gofusa/cmd_v024e_test.go", "sourceLine": 640 }, { - "id": "TARA-143", + "id": "TARA-145", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4723,15 +4789,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 136 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 136 }, { - "id": "TARA-144", + "id": "TARA-146", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4756,15 +4822,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 171 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 171 }, { - "id": "TARA-145", + "id": "TARA-147", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4789,15 +4855,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 185 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 185 }, { - "id": "TARA-146", + "id": "TARA-148", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4822,15 +4888,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 203 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 203 }, { - "id": "TARA-147", + "id": "TARA-149", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4855,15 +4921,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 222 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 222 }, { - "id": "TARA-148", + "id": "TARA-150", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4888,15 +4954,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 241 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 241 }, { - "id": "TARA-149", + "id": "TARA-151", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4921,15 +4987,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 349 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 349 }, { - "id": "TARA-150", + "id": "TARA-152", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4954,15 +5020,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 442 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 442 }, { - "id": "TARA-151", + "id": "TARA-153", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -4987,15 +5053,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 459 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 459 }, { - "id": "TARA-152", + "id": "TARA-154", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5020,15 +5086,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 476 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 476 }, { - "id": "TARA-153", + "id": "TARA-155", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5053,15 +5119,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 506 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 506 }, { - "id": "TARA-154", + "id": "TARA-156", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5086,15 +5152,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 523 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 523 }, { - "id": "TARA-155", + "id": "TARA-157", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5119,15 +5185,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 531 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 531 }, { - "id": "TARA-156", + "id": "TARA-158", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5152,15 +5218,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 608 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 608 }, { - "id": "TARA-157", + "id": "TARA-159", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5185,15 +5251,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 680 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 680 }, { - "id": "TARA-158", + "id": "TARA-160", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5218,15 +5284,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 701 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 701 }, { - "id": "TARA-159", + "id": "TARA-161", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5251,15 +5317,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 705 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 705 }, { - "id": "TARA-160", + "id": "TARA-162", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5284,15 +5350,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 720 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 720 }, { - "id": "TARA-161", + "id": "TARA-163", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5317,15 +5383,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 745 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 745 }, { - "id": "TARA-162", + "id": "TARA-164", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5350,15 +5416,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 778 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 778 }, { - "id": "TARA-163", + "id": "TARA-165", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5383,15 +5449,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 792 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 792 }, { - "id": "TARA-164", + "id": "TARA-166", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5416,15 +5482,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 835 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 835 }, { - "id": "TARA-165", + "id": "TARA-167", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5449,15 +5515,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 883 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 883 }, { - "id": "TARA-166", + "id": "TARA-168", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5482,15 +5548,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 903 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 903 }, { - "id": "TARA-167", + "id": "TARA-169", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5515,15 +5581,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 964 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 964 }, { - "id": "TARA-168", + "id": "TARA-170", "asset": "cmd_v024f_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5548,15 +5614,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 999 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 999 }, { - "id": "TARA-169", + "id": "TARA-171", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5581,15 +5647,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 245 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 245 }, { - "id": "TARA-170", + "id": "TARA-172", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5614,15 +5680,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 260 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 260 }, { - "id": "TARA-171", + "id": "TARA-173", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5647,15 +5713,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 263 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 263 }, { - "id": "TARA-172", + "id": "TARA-174", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5680,15 +5746,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 279 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 279 }, { - "id": "TARA-173", + "id": "TARA-175", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5713,15 +5779,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 495 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 495 }, { - "id": "TARA-174", + "id": "TARA-176", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5746,15 +5812,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 506 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 506 }, { - "id": "TARA-175", + "id": "TARA-177", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5779,15 +5845,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 524 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 524 }, { - "id": "TARA-176", + "id": "TARA-178", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5812,15 +5878,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 527 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 527 }, { - "id": "TARA-177", + "id": "TARA-179", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5845,15 +5911,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 569 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 569 }, { - "id": "TARA-178", + "id": "TARA-180", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5878,15 +5944,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 574 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 574 }, { - "id": "TARA-179", + "id": "TARA-181", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5911,15 +5977,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 593 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 593 }, { - "id": "TARA-180", + "id": "TARA-182", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5944,15 +6010,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 628 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 628 }, { - "id": "TARA-181", + "id": "TARA-183", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -5977,15 +6043,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 662 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 662 }, { - "id": "TARA-182", + "id": "TARA-184", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6010,15 +6076,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 703 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 703 }, { - "id": "TARA-183", + "id": "TARA-185", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6043,15 +6109,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 747 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 747 }, { - "id": "TARA-184", + "id": "TARA-186", "asset": "cmd_v024g_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6076,15 +6142,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "file": "cmd/gofusa/cmd_v024g_test.go", "line": 751 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024g_test.go", + "sourceFile": "cmd/gofusa/cmd_v024g_test.go", "sourceLine": 751 }, { - "id": "TARA-185", + "id": "TARA-187", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6109,15 +6175,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 36 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 36 }, { - "id": "TARA-186", + "id": "TARA-188", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6142,15 +6208,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 65 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 65 }, { - "id": "TARA-187", + "id": "TARA-189", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6175,15 +6241,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 86 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 86 }, { - "id": "TARA-188", + "id": "TARA-190", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6208,15 +6274,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 99 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 99 }, { - "id": "TARA-189", + "id": "TARA-191", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6241,15 +6307,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 114 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 114 }, { - "id": "TARA-190", + "id": "TARA-192", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6274,15 +6340,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 130 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 130 }, { - "id": "TARA-191", + "id": "TARA-193", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6307,15 +6373,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 162 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 162 }, { - "id": "TARA-192", + "id": "TARA-194", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6340,15 +6406,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 184 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 184 }, { - "id": "TARA-193", + "id": "TARA-195", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6373,15 +6439,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 201 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 201 }, { - "id": "TARA-194", + "id": "TARA-196", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6406,15 +6472,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 218 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 218 }, { - "id": "TARA-195", + "id": "TARA-197", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6439,15 +6505,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 238 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 238 }, { - "id": "TARA-196", + "id": "TARA-198", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6472,15 +6538,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 264 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 264 }, { - "id": "TARA-197", + "id": "TARA-199", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6505,15 +6571,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 308 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 308 }, { - "id": "TARA-198", + "id": "TARA-200", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6538,15 +6604,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 326 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 326 }, { - "id": "TARA-199", + "id": "TARA-201", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6571,15 +6637,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 425 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 425 }, { - "id": "TARA-200", + "id": "TARA-202", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6604,15 +6670,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 448 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 448 }, { - "id": "TARA-201", + "id": "TARA-203", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6637,15 +6703,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 467 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 467 }, { - "id": "TARA-202", + "id": "TARA-204", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6670,15 +6736,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 479 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 479 }, { - "id": "TARA-203", + "id": "TARA-205", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6703,15 +6769,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 496 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 496 }, { - "id": "TARA-204", + "id": "TARA-206", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6736,15 +6802,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 527 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 527 }, { - "id": "TARA-205", + "id": "TARA-207", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6769,15 +6835,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 547 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 547 }, { - "id": "TARA-206", + "id": "TARA-208", "asset": "cmd_v024h_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6802,15 +6868,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "file": "cmd/gofusa/cmd_v024h_test.go", "line": 615 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024h_test.go", + "sourceFile": "cmd/gofusa/cmd_v024h_test.go", "sourceLine": 615 }, { - "id": "TARA-207", + "id": "TARA-209", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6835,15 +6901,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 34 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 34 }, { - "id": "TARA-208", + "id": "TARA-210", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6868,15 +6934,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 97 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 97 }, { - "id": "TARA-209", + "id": "TARA-211", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6901,15 +6967,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 113 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 113 }, { - "id": "TARA-210", + "id": "TARA-212", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6934,15 +7000,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 203 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 203 }, { - "id": "TARA-211", + "id": "TARA-213", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -6967,15 +7033,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 214 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 214 }, { - "id": "TARA-212", + "id": "TARA-214", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7000,15 +7066,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 229 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 229 }, { - "id": "TARA-213", + "id": "TARA-215", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7033,15 +7099,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 393 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 393 }, { - "id": "TARA-214", + "id": "TARA-216", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7066,15 +7132,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 413 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 413 }, { - "id": "TARA-215", + "id": "TARA-217", "asset": "cmd_v025_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7099,15 +7165,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "file": "cmd/gofusa/cmd_v025_test.go", "line": 429 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v025_test.go", + "sourceFile": "cmd/gofusa/cmd_v025_test.go", "sourceLine": 429 }, { - "id": "TARA-216", + "id": "TARA-218", "asset": "conform_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7132,15 +7198,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/conform_test.go", + "file": "cmd/gofusa/conform_test.go", "line": 22 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/conform_test.go", + "sourceFile": "cmd/gofusa/conform_test.go", "sourceLine": 22 }, { - "id": "TARA-217", + "id": "TARA-219", "asset": "conform_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7165,15 +7231,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/conform_test.go", + "file": "cmd/gofusa/conform_test.go", "line": 25 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/conform_test.go", + "sourceFile": "cmd/gofusa/conform_test.go", "sourceLine": 25 }, { - "id": "TARA-218", + "id": "TARA-220", "asset": "comp_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7198,15 +7264,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp_extra_test.go", + "file": "comp/comp_extra_test.go", "line": 165 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp_extra_test.go", + "sourceFile": "comp/comp_extra_test.go", "sourceLine": 165 }, { - "id": "TARA-219", + "id": "TARA-221", "asset": "comp_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7231,15 +7297,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp_extra_test.go", + "file": "comp/comp_extra_test.go", "line": 168 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp_extra_test.go", + "sourceFile": "comp/comp_extra_test.go", "sourceLine": 168 }, { - "id": "TARA-220", + "id": "TARA-222", "asset": "comp_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7264,15 +7330,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp_extra_test.go", + "file": "comp/comp_extra_test.go", "line": 244 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/comp/comp_extra_test.go", + "sourceFile": "comp/comp_extra_test.go", "sourceLine": 244 }, { - "id": "TARA-221", + "id": "TARA-223", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7297,15 +7363,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 43 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 43 }, { - "id": "TARA-222", + "id": "TARA-224", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7330,15 +7396,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 67 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 67 }, { - "id": "TARA-223", + "id": "TARA-225", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7363,15 +7429,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 74 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 74 }, { - "id": "TARA-224", + "id": "TARA-226", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7396,15 +7462,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 100 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 100 }, { - "id": "TARA-225", + "id": "TARA-227", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7429,15 +7495,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 106 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 106 }, { - "id": "TARA-226", + "id": "TARA-228", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7462,15 +7528,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 129 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 129 }, { - "id": "TARA-227", + "id": "TARA-229", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7495,15 +7561,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 132 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 132 }, { - "id": "TARA-228", + "id": "TARA-230", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7528,15 +7594,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 154 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 154 }, { - "id": "TARA-229", + "id": "TARA-231", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7561,15 +7627,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 157 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 157 }, { - "id": "TARA-230", + "id": "TARA-232", "asset": "coupling_extra_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7594,15 +7660,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "file": "coupling/coupling_extra_test.go", "line": 180 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_extra_test.go", + "sourceFile": "coupling/coupling_extra_test.go", "sourceLine": 180 }, { - "id": "TARA-231", + "id": "TARA-233", "asset": "coupling_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7627,15 +7693,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_test.go", + "file": "coupling/coupling_test.go", "line": 26 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coupling/coupling_test.go", + "sourceFile": "coupling/coupling_test.go", "sourceLine": 26 }, { - "id": "TARA-232", + "id": "TARA-234", "asset": "coverage_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7660,15 +7726,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage_test.go", + "file": "coverage/coverage_test.go", "line": 37 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage_test.go", + "sourceFile": "coverage/coverage_test.go", "sourceLine": 37 }, { - "id": "TARA-233", + "id": "TARA-235", "asset": "coverage_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7693,15 +7759,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage_test.go", + "file": "coverage/coverage_test.go", "line": 40 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/coverage/coverage_test.go", + "sourceFile": "coverage/coverage_test.go", "sourceLine": 40 }, { - "id": "TARA-234", + "id": "TARA-236", "asset": "disposition_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7726,15 +7792,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "file": "disposition/disposition_test.go", "line": 35 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "sourceFile": "disposition/disposition_test.go", "sourceLine": 35 }, { - "id": "TARA-235", + "id": "TARA-237", "asset": "disposition_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7759,15 +7825,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "file": "disposition/disposition_test.go", "line": 51 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "sourceFile": "disposition/disposition_test.go", "sourceLine": 51 }, { - "id": "TARA-236", + "id": "TARA-238", "asset": "disposition_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7792,15 +7858,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "file": "disposition/disposition_test.go", "line": 158 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "sourceFile": "disposition/disposition_test.go", "sourceLine": 158 }, { - "id": "TARA-237", + "id": "TARA-239", "asset": "disposition_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7825,15 +7891,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "file": "disposition/disposition_test.go", "line": 176 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/disposition/disposition_test.go", + "sourceFile": "disposition/disposition_test.go", "sourceLine": 176 }, { - "id": "TARA-238", + "id": "TARA-240", "asset": "do178_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7858,15 +7924,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 40 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 40 }, { - "id": "TARA-239", + "id": "TARA-241", "asset": "do178_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7891,15 +7957,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 66 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 66 }, { - "id": "TARA-240", + "id": "TARA-242", "asset": "do178_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7924,15 +7990,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 226 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 226 }, { - "id": "TARA-241", + "id": "TARA-243", "asset": "do178_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7957,15 +8023,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 245 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 245 }, { - "id": "TARA-242", + "id": "TARA-244", "asset": "do178_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -7990,15 +8056,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 309 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 309 }, { - "id": "TARA-243", + "id": "TARA-245", "asset": "do178_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8023,15 +8089,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "file": "do178/do178_test.go", "line": 334 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/do178/do178_test.go", + "sourceFile": "do178/do178_test.go", "sourceLine": 334 }, { - "id": "TARA-244", + "id": "TARA-246", "asset": "fusa_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8056,15 +8122,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "file": "fusa_test.go", "line": 261 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "sourceFile": "fusa_test.go", "sourceLine": 261 }, { - "id": "TARA-245", + "id": "TARA-247", "asset": "fusa_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8089,15 +8155,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "file": "fusa_test.go", "line": 264 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "sourceFile": "fusa_test.go", "sourceLine": 264 }, { - "id": "TARA-246", + "id": "TARA-248", "asset": "fusa_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8122,15 +8188,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "file": "fusa_test.go", "line": 279 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "sourceFile": "fusa_test.go", "sourceLine": 279 }, { - "id": "TARA-247", + "id": "TARA-249", "asset": "fusa_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8155,15 +8221,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "file": "fusa_test.go", "line": 296 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/fusa_test.go", + "sourceFile": "fusa_test.go", "sourceLine": 296 }, { - "id": "TARA-248", + "id": "TARA-250", "asset": "hara_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8188,15 +8254,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara_test.go", + "file": "hara/hara_test.go", "line": 96 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/hara/hara_test.go", + "sourceFile": "hara/hara_test.go", "sourceLine": 96 }, { - "id": "TARA-249", + "id": "TARA-251", "asset": "iec61508_gap_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8221,15 +8287,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_gap_test.go", + "file": "iec61508/iec61508_gap_test.go", "line": 27 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_gap_test.go", + "sourceFile": "iec61508/iec61508_gap_test.go", "sourceLine": 27 }, { - "id": "TARA-250", + "id": "TARA-252", "asset": "iec61508_gap_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8254,15 +8320,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_gap_test.go", + "file": "iec61508/iec61508_gap_test.go", "line": 82 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_gap_test.go", + "sourceFile": "iec61508/iec61508_gap_test.go", "sourceLine": 82 }, { - "id": "TARA-251", + "id": "TARA-253", "asset": "iec61508_gap_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8287,15 +8353,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_gap_test.go", + "file": "iec61508/iec61508_gap_test.go", "line": 164 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_gap_test.go", + "sourceFile": "iec61508/iec61508_gap_test.go", "sourceLine": 164 }, { - "id": "TARA-252", + "id": "TARA-254", "asset": "iec61508_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8320,15 +8386,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "file": "iec61508/iec61508_test.go", "line": 40 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "sourceFile": "iec61508/iec61508_test.go", "sourceLine": 40 }, { - "id": "TARA-253", + "id": "TARA-255", "asset": "iec61508_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8353,15 +8419,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "file": "iec61508/iec61508_test.go", "line": 64 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "sourceFile": "iec61508/iec61508_test.go", "sourceLine": 64 }, { - "id": "TARA-254", + "id": "TARA-256", "asset": "iec61508_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8386,15 +8452,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "file": "iec61508/iec61508_test.go", "line": 198 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "sourceFile": "iec61508/iec61508_test.go", "sourceLine": 198 }, { - "id": "TARA-255", + "id": "TARA-257", "asset": "iec61508_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8419,15 +8485,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "file": "iec61508/iec61508_test.go", "line": 215 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "sourceFile": "iec61508/iec61508_test.go", "sourceLine": 215 }, { - "id": "TARA-256", + "id": "TARA-258", "asset": "iec61508_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8452,15 +8518,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "file": "iec61508/iec61508_test.go", "line": 321 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "sourceFile": "iec61508/iec61508_test.go", "sourceLine": 321 }, { - "id": "TARA-257", + "id": "TARA-259", "asset": "iec61508_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8485,15 +8551,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "file": "iec61508/iec61508_test.go", "line": 342 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec61508/iec61508_test.go", + "sourceFile": "iec61508/iec61508_test.go", "sourceLine": 342 }, { - "id": "TARA-258", + "id": "TARA-260", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8518,15 +8584,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/assess_test.go", + "file": "iec62443/assess_test.go", "line": 20 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iec62443/assess_test.go", + "sourceFile": "iec62443/assess_test.go", "sourceLine": 20 }, { - "id": "TARA-259", + "id": "TARA-261", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8551,15 +8617,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 59 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 59 }, { - "id": "TARA-260", + "id": "TARA-262", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8584,15 +8650,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 80 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 80 }, { - "id": "TARA-261", + "id": "TARA-263", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8617,15 +8683,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 86 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 86 }, { - "id": "TARA-262", + "id": "TARA-264", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8650,15 +8716,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 103 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 103 }, { - "id": "TARA-263", + "id": "TARA-265", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8683,15 +8749,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 115 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 115 }, { - "id": "TARA-264", + "id": "TARA-266", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8716,15 +8782,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 241 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 241 }, { - "id": "TARA-265", + "id": "TARA-267", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8749,15 +8815,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 247 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 247 }, { - "id": "TARA-266", + "id": "TARA-268", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8782,15 +8848,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 253 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 253 }, { - "id": "TARA-267", + "id": "TARA-269", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8815,15 +8881,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 261 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 261 }, { - "id": "TARA-268", + "id": "TARA-270", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8848,15 +8914,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 300 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 300 }, { - "id": "TARA-269", + "id": "TARA-271", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8881,15 +8947,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 306 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 306 }, { - "id": "TARA-270", + "id": "TARA-272", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8914,15 +8980,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 312 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 312 }, { - "id": "TARA-271", + "id": "TARA-273", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8947,15 +9013,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 336 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 336 }, { - "id": "TARA-272", + "id": "TARA-274", "asset": "impact_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -8980,15 +9046,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "file": "impact/impact_test.go", "line": 347 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/impact/impact_test.go", + "sourceFile": "impact/impact_test.go", "sourceLine": 347 }, { - "id": "TARA-273", + "id": "TARA-275", "asset": "iso21434_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9013,15 +9079,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "file": "iso21434/iso21434_test.go", "line": 44 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "sourceFile": "iso21434/iso21434_test.go", "sourceLine": 44 }, { - "id": "TARA-274", + "id": "TARA-276", "asset": "iso21434_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9046,15 +9112,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "file": "iso21434/iso21434_test.go", "line": 63 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "sourceFile": "iso21434/iso21434_test.go", "sourceLine": 63 }, { - "id": "TARA-275", + "id": "TARA-277", "asset": "iso21434_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9079,15 +9145,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "file": "iso21434/iso21434_test.go", "line": 135 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "sourceFile": "iso21434/iso21434_test.go", "sourceLine": 135 }, { - "id": "TARA-276", + "id": "TARA-278", "asset": "iso21434_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9112,15 +9178,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "file": "iso21434/iso21434_test.go", "line": 252 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso21434/iso21434_test.go", + "sourceFile": "iso21434/iso21434_test.go", "sourceLine": 252 }, { - "id": "TARA-277", + "id": "TARA-279", "asset": "iso26262_gap_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9145,15 +9211,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_gap_test.go", + "file": "iso26262/iso26262_gap_test.go", "line": 27 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_gap_test.go", + "sourceFile": "iso26262/iso26262_gap_test.go", "sourceLine": 27 }, { - "id": "TARA-278", + "id": "TARA-280", "asset": "iso26262_gap_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9178,15 +9244,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_gap_test.go", + "file": "iso26262/iso26262_gap_test.go", "line": 86 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_gap_test.go", + "sourceFile": "iso26262/iso26262_gap_test.go", "sourceLine": 86 }, { - "id": "TARA-279", + "id": "TARA-281", "asset": "iso26262_gap_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9211,15 +9277,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_gap_test.go", + "file": "iso26262/iso26262_gap_test.go", "line": 171 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_gap_test.go", + "sourceFile": "iso26262/iso26262_gap_test.go", "sourceLine": 171 }, { - "id": "TARA-280", + "id": "TARA-282", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9244,15 +9310,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 41 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 41 }, { - "id": "TARA-281", + "id": "TARA-283", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9277,15 +9343,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 65 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 65 }, { - "id": "TARA-282", + "id": "TARA-284", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9310,15 +9376,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 199 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 199 }, { - "id": "TARA-283", + "id": "TARA-285", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9343,15 +9409,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 217 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 217 }, { - "id": "TARA-284", + "id": "TARA-286", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9376,15 +9442,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 256 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 256 }, { - "id": "TARA-285", + "id": "TARA-287", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9409,15 +9475,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 278 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 278 }, { - "id": "TARA-286", + "id": "TARA-288", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9442,15 +9508,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 303 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 303 }, { - "id": "TARA-287", + "id": "TARA-289", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9475,15 +9541,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 323 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 323 }, { - "id": "TARA-288", + "id": "TARA-290", "asset": "iso26262_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9508,15 +9574,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "file": "iso26262/iso26262_test.go", "line": 343 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/iso26262/iso26262_test.go", + "sourceFile": "iso26262/iso26262_test.go", "sourceLine": 343 }, { - "id": "TARA-289", + "id": "TARA-291", "asset": "metrics_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9541,15 +9607,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "file": "metrics/metrics_test.go", "line": 32 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "sourceFile": "metrics/metrics_test.go", "sourceLine": 32 }, { - "id": "TARA-290", + "id": "TARA-292", "asset": "metrics_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9574,15 +9640,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "file": "metrics/metrics_test.go", "line": 102 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "sourceFile": "metrics/metrics_test.go", "sourceLine": 102 }, { - "id": "TARA-291", + "id": "TARA-293", "asset": "metrics_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9607,15 +9673,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "file": "metrics/metrics_test.go", "line": 124 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "sourceFile": "metrics/metrics_test.go", "sourceLine": 124 }, { - "id": "TARA-292", + "id": "TARA-294", "asset": "metrics_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9640,15 +9706,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "file": "metrics/metrics_test.go", "line": 232 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "sourceFile": "metrics/metrics_test.go", "sourceLine": 232 }, { - "id": "TARA-293", + "id": "TARA-295", "asset": "metrics_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9673,15 +9739,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "file": "metrics/metrics_test.go", "line": 254 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/metrics/metrics_test.go", + "sourceFile": "metrics/metrics_test.go", "sourceLine": 254 }, { - "id": "TARA-294", + "id": "TARA-296", "asset": "pr_engine_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9706,15 +9772,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr_engine_test.go", + "file": "pr/pr_engine_test.go", "line": 116 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/pr/pr_engine_test.go", + "sourceFile": "pr/pr_engine_test.go", "sourceLine": 116 }, { - "id": "TARA-295", + "id": "TARA-297", "asset": "sas_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9739,15 +9805,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas_test.go", + "file": "sas/sas_test.go", "line": 56 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas_test.go", + "sourceFile": "sas/sas_test.go", "sourceLine": 56 }, { - "id": "TARA-296", + "id": "TARA-298", "asset": "sas_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9772,15 +9838,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas_test.go", + "file": "sas/sas_test.go", "line": 85 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sas/sas_test.go", + "sourceFile": "sas/sas_test.go", "sourceLine": 85 }, { - "id": "TARA-297", + "id": "TARA-299", "asset": "sci_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9805,15 +9871,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "file": "sci/sci_test.go", "line": 43 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "sourceFile": "sci/sci_test.go", "sourceLine": 43 }, { - "id": "TARA-298", + "id": "TARA-300", "asset": "sci_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9838,15 +9904,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "file": "sci/sci_test.go", "line": 76 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "sourceFile": "sci/sci_test.go", "sourceLine": 76 }, { - "id": "TARA-299", + "id": "TARA-301", "asset": "sci_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9871,15 +9937,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "file": "sci/sci_test.go", "line": 98 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/sci/sci_test.go", + "sourceFile": "sci/sci_test.go", "sourceLine": 98 }, { - "id": "TARA-300", + "id": "TARA-302", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9904,15 +9970,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 42 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 42 }, { - "id": "TARA-301", + "id": "TARA-303", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9937,15 +10003,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 47 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 47 }, { - "id": "TARA-302", + "id": "TARA-304", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -9970,15 +10036,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 69 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 69 }, { - "id": "TARA-303", + "id": "TARA-305", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10003,15 +10069,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 73 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 73 }, { - "id": "TARA-304", + "id": "TARA-306", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10036,15 +10102,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 76 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 76 }, { - "id": "TARA-305", + "id": "TARA-307", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10069,15 +10135,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 102 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 102 }, { - "id": "TARA-306", + "id": "TARA-308", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10102,15 +10168,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 106 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 106 }, { - "id": "TARA-307", + "id": "TARA-309", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10135,15 +10201,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 132 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 132 }, { - "id": "TARA-308", + "id": "TARA-310", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10168,15 +10234,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 154 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 154 }, { - "id": "TARA-309", + "id": "TARA-311", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10201,15 +10267,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 176 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 176 }, { - "id": "TARA-310", + "id": "TARA-312", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10234,15 +10300,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 196 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 196 }, { - "id": "TARA-311", + "id": "TARA-313", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10267,15 +10333,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 215 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 215 }, { - "id": "TARA-312", + "id": "TARA-314", "asset": "assess_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10300,15 +10366,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "file": "slsa/assess_test.go", "line": 312 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/slsa/assess_test.go", + "sourceFile": "slsa/assess_test.go", "sourceLine": 312 }, { - "id": "TARA-313", + "id": "TARA-315", "asset": "unece_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10333,15 +10399,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece_test.go", + "file": "unece/unece_test.go", "line": 57 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece_test.go", + "sourceFile": "unece/unece_test.go", "sourceLine": 57 }, { - "id": "TARA-314", + "id": "TARA-316", "asset": "unece_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10366,15 +10432,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece_test.go", + "file": "unece/unece_test.go", "line": 112 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/unece/unece_test.go", + "sourceFile": "unece/unece_test.go", "sourceLine": 112 }, { - "id": "TARA-315", + "id": "TARA-317", "asset": "vuln_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10399,15 +10465,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln_test.go", + "file": "vuln/vuln_test.go", "line": 451 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln_test.go", + "sourceFile": "vuln/vuln_test.go", "sourceLine": 451 }, { - "id": "TARA-316", + "id": "TARA-318", "asset": "vuln_test.go", "threat": "World-readable/writable file allows unauthorised data access or tampering", "stride": [ @@ -10432,15 +10498,15 @@ "currentControl": "Create file with mode 0640 or stricter", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln_test.go", + "file": "vuln/vuln_test.go", "line": 459 }, "cyberRuleId": "CYBER017", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/vuln/vuln_test.go", + "sourceFile": "vuln/vuln_test.go", "sourceLine": 459 }, { - "id": "TARA-317", + "id": "TARA-319", "asset": "cmd_coverage.go", "threat": "TOCTOU race allows attacker to substitute file between check and use", "stride": [ @@ -10465,15 +10531,15 @@ "currentControl": "Open file directly; handle ENOENT/EEXIST atomically", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coverage.go", + "file": "cmd/gofusa/cmd_coverage.go", "line": 46 }, "cyberRuleId": "CYBER019", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_coverage.go", + "sourceFile": "cmd/gofusa/cmd_coverage.go", "sourceLine": 46 }, { - "id": "TARA-318", + "id": "TARA-320", "asset": "cmd_v024b_test.go", "threat": "TOCTOU race allows attacker to substitute file between check and use", "stride": [ @@ -10498,15 +10564,15 @@ "currentControl": "Open file directly; handle ENOENT/EEXIST atomically", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "file": "cmd/gofusa/cmd_v024b_test.go", "line": 104 }, "cyberRuleId": "CYBER019", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024b_test.go", + "sourceFile": "cmd/gofusa/cmd_v024b_test.go", "sourceLine": 104 }, { - "id": "TARA-319", + "id": "TARA-321", "asset": "cmd_v024f_test.go", "threat": "TOCTOU race allows attacker to substitute file between check and use", "stride": [ @@ -10531,18 +10597,18 @@ "currentControl": "Open file directly; handle ENOENT/EEXIST atomically", "residualRisk": "Low after remediation", "location": { - "file": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "file": "cmd/gofusa/cmd_v024f_test.go", "line": 825 }, "cyberRuleId": "CYBER019", - "sourceFile": "/Users/matt/Documents/Coding/SoundMatt/go-FuSa/cmd/gofusa/cmd_v024f_test.go", + "sourceFile": "cmd/gofusa/cmd_v024f_test.go", "sourceLine": 825 } ], "summary": { - "assetsAnalyzed": 44, + "assetsAnalyzed": 45, "assetsInProject": 108, - "coveragePct": 40.74074074074074, + "coveragePct": 41.666666666666664, "assetInventoryMethod": "every non-test .go source file in the project (excluding vendor/testdata/dot-directories) is treated as one candidate asset (CountProjectFiles); assetsAnalyzed counts the distinct files that ended up with at least one CYBER-derived threat entry — this is file-level granularity, not a deeper per-symbol or per-data-flow asset model" } } diff --git a/tara.md b/tara.md index 3a0b475..8290cc7 100644 --- a/tara.md +++ b/tara.md @@ -1,9 +1,9 @@ # Threat Analysis and Risk Assessment (TARA) **Module:** github.com/SoundMatt/go-FuSa -**Generated:** 2026-07-28T19:39:11Z +**Generated:** 2026-07-28T22:02:44Z **Standard:** ISO/SAE 21434:2021 Clause 15 -**Coverage:** 44 / 108 assets (40.7%) +**Coverage:** 45 / 108 assets (41.7%) | ID | Asset | Threat | STRIDE | CWE | Vector | Feasibility | Impact (S/F/O/P) | Risk | Treatment | SL | Mitigation | |---|---|---|---|---|---|---|---|---|---|---|---| @@ -41,22 +41,22 @@ | TARA-032 | cmd_coupling_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-033 | cmd_hooks.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-034 | cmd_iec62443_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-035 | cmd_slsa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-036 | cmd_slsa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-037 | cmd_v018_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-038 | cmd_v018_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-035 | cmd_pathrel_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-036 | cmd_pathrel_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-037 | cmd_slsa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-038 | cmd_slsa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-039 | cmd_v018_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-040 | cmd_v018_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-041 | cmd_v018_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-042 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-043 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-042 | cmd_v018_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-043 | cmd_v018_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-044 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-045 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-046 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-047 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-048 | cmd_v021_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-049 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-050 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-048 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-049 | cmd_v020_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-050 | cmd_v021_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-051 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-052 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-053 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -80,8 +80,8 @@ | TARA-071 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-072 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-073 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-074 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-075 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-074 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-075 | cmd_v023_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-076 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-077 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-078 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -102,8 +102,8 @@ | TARA-093 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-094 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-095 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-096 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-097 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-096 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-097 | cmd_v024b_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-098 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-099 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-100 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -116,8 +116,8 @@ | TARA-107 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-108 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-109 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-110 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-111 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-110 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-111 | cmd_v024c_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-112 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-113 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-114 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -134,8 +134,8 @@ | TARA-125 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-126 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-127 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-128 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-129 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-128 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-129 | cmd_v024d_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-130 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-131 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-132 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -149,8 +149,8 @@ | TARA-140 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-141 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-142 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-143 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-144 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-143 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-144 | cmd_v024e_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-145 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-146 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-147 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -175,8 +175,8 @@ | TARA-166 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-167 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-168 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-169 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-170 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-169 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-170 | cmd_v024f_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-171 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-172 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-173 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -191,8 +191,8 @@ | TARA-182 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-183 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-184 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-185 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-186 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-185 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-186 | cmd_v024g_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-187 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-188 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-189 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -213,8 +213,8 @@ | TARA-204 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-205 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-206 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-207 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-208 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-207 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-208 | cmd_v024h_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-209 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-210 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-211 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -222,13 +222,13 @@ | TARA-213 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-214 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-215 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-216 | conform_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-217 | conform_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-218 | comp_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-219 | comp_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-216 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-217 | cmd_v025_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-218 | conform_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-219 | conform_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-220 | comp_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-221 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-222 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-221 | comp_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-222 | comp_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-223 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-224 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-225 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -237,36 +237,36 @@ | TARA-228 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-229 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-230 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-231 | coupling_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-232 | coverage_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-233 | coverage_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-234 | disposition_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-235 | disposition_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-231 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-232 | coupling_extra_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-233 | coupling_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-234 | coverage_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-235 | coverage_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-236 | disposition_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-237 | disposition_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-238 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-239 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-238 | disposition_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-239 | disposition_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-240 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-241 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-242 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-243 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-244 | fusa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-245 | fusa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-244 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-245 | do178_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-246 | fusa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-247 | fusa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-248 | hara_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-249 | iec61508_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-250 | iec61508_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-248 | fusa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-249 | fusa_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-250 | hara_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-251 | iec61508_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-252 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-253 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-252 | iec61508_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-253 | iec61508_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-254 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-255 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-256 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-257 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-258 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-259 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-260 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-258 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-259 | iec61508_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-260 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-261 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-262 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-263 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -279,15 +279,15 @@ | TARA-270 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-271 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-272 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-273 | iso21434_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-274 | iso21434_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-273 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-274 | impact_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-275 | iso21434_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-276 | iso21434_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-277 | iso26262_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-278 | iso26262_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-277 | iso21434_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-278 | iso21434_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-279 | iso26262_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-280 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-281 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-280 | iso26262_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-281 | iso26262_gap_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-282 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-283 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-284 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -295,19 +295,19 @@ | TARA-286 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-287 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-288 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-289 | metrics_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-290 | metrics_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-289 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-290 | iso26262_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-291 | metrics_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-292 | metrics_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-293 | metrics_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-294 | pr_engine_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-295 | sas_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-296 | sas_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-297 | sci_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-298 | sci_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-294 | metrics_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-295 | metrics_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-296 | pr_engine_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-297 | sas_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-298 | sas_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-299 | sci_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-300 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-301 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-300 | sci_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-301 | sci_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-302 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-303 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-304 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | @@ -319,10 +319,12 @@ | TARA-310 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-311 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | | TARA-312 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-313 | unece_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-314 | unece_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-315 | vuln_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-316 | vuln_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | -| TARA-317 | cmd_coverage.go | TOCTOU race allows attacker to substitute file between check and use | E/T | CWE-362 | Local | medium | medium/low/low/low | medium | mitigate | 2 | Open file directly; handle ENOENT/EEXIST atomically | -| TARA-318 | cmd_v024b_test.go | TOCTOU race allows attacker to substitute file between check and use | E/T | CWE-362 | Local | medium | medium/low/low/low | medium | mitigate | 2 | Open file directly; handle ENOENT/EEXIST atomically | -| TARA-319 | cmd_v024f_test.go | TOCTOU race allows attacker to substitute file between check and use | E/T | CWE-362 | Local | medium | medium/low/low/low | medium | mitigate | 2 | Open file directly; handle ENOENT/EEXIST atomically | +| TARA-313 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-314 | assess_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-315 | unece_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-316 | unece_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-317 | vuln_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-318 | vuln_test.go | World-readable/writable file allows unauthorised data access or tampering | I/T | CWE-732 | Local | medium | medium/low/low/medium | medium | mitigate | 2 | Create file with mode 0640 or stricter | +| TARA-319 | cmd_coverage.go | TOCTOU race allows attacker to substitute file between check and use | E/T | CWE-362 | Local | medium | medium/low/low/low | medium | mitigate | 2 | Open file directly; handle ENOENT/EEXIST atomically | +| TARA-320 | cmd_v024b_test.go | TOCTOU race allows attacker to substitute file between check and use | E/T | CWE-362 | Local | medium | medium/low/low/low | medium | mitigate | 2 | Open file directly; handle ENOENT/EEXIST atomically | +| TARA-321 | cmd_v024f_test.go | TOCTOU race allows attacker to substitute file between check and use | E/T | CWE-362 | Local | medium | medium/low/low/low | medium | mitigate | 2 | Open file directly; handle ENOENT/EEXIST atomically | diff --git a/tara/tara.go b/tara/tara.go index 0e85f08..fce9ee8 100644 --- a/tara/tara.go +++ b/tara/tara.go @@ -32,6 +32,7 @@ import ( fusa "github.com/SoundMatt/go-FuSa" "github.com/SoundMatt/go-FuSa/config" "github.com/SoundMatt/go-FuSa/engine" + "github.com/SoundMatt/go-FuSa/trace" ) // TARAFile is the default JSON output filename. @@ -285,6 +286,16 @@ func buildSummary(report *Report, projectRoot string) Summary { } else { s.CoveragePct = 100 } + // x-FuSa spec §9.2 MUST: coveragePct must never exceed 100. The fallback + // above already guarantees total >= AssetsAnalyzed (so this can't + // currently trigger), but a defensive clamp is cheap insurance against a + // future change to the fallback logic silently reintroducing the + // overflow the spec calls out. + // + //fusa:req REQ-TARA011 + if s.CoveragePct > 100 { + s.CoveragePct = 100 + } s.AssetInventoryMethod = "every non-test .go source file in the project (excluding vendor/testdata/dot-directories) " + "is treated as one candidate asset (CountProjectFiles); assetsAnalyzed counts the distinct files that ended up " + "with at least one CYBER-derived threat entry — this is file-level granularity, not a deeper per-symbol or " + @@ -295,7 +306,10 @@ func buildSummary(report *Report, projectRoot string) Summary { // CountProjectFiles returns the total count of non-test .go source files // under root (excluding vendor/, testdata/, and dot-directories) — the §9.2 // tara `coveragePct` denominator (assetsInProject). See buildSummary and -// Summary.AssetInventoryMethod for the file-level-granularity caveat. +// Summary.AssetInventoryMethod for the file-level-granularity caveat. The +// test-tree/dot-directory exclusion reuses trace.IsExcludedDir (x-FuSa spec +// §1.6 rule 4 SHOULD) rather than an independently-drifting copy of the +// same three-way vendor/testdata/dot-dir check. // //fusa:req REQ-TARA008 func CountProjectFiles(root string) (int, error) { @@ -305,8 +319,7 @@ func CountProjectFiles(root string) (int, error) { return walkErr } if d.IsDir() { - base := d.Name() - if path != root && (base == "vendor" || base == "testdata" || strings.HasPrefix(base, ".")) { + if path != root && trace.IsExcludedDir(d.Name()) { return filepath.SkipDir } return nil diff --git a/tara/tara_test.go b/tara/tara_test.go index c2349aa..bd588a0 100644 --- a/tara/tara_test.go +++ b/tara/tara_test.go @@ -3,6 +3,7 @@ package tara_test import ( "bytes" "context" + "fmt" "strings" "testing" @@ -279,3 +280,41 @@ func containsSTRIDE(stride []string, cat string) bool { } return false } + +// ─── §9.2 coveragePct MUST NOT exceed 100 ────────────────────────────────────── + +//fusa:test REQ-TARA011 +func TestScan_CoveragePct_NeverExceeds100_WithNonTrivialTestTree(t *testing.T) { + // A fixture with a substantial test-source tree (many _test.go files) + // alongside a small number of real source files — a fixture with no + // such test-tree cannot exercise the coveragePct-overflow bug the + // x-FuSa spec §9.2 MUST clamp guards against. + files := map[string]string{ + "go.mod": "module example.com/fixture\n\ngo 1.22\n", + "pkg/real.go": "package pkg\n\nfunc A() {}\n", + "pkg/real2.go": "package pkg\n\nfunc B() {}\n", + } + for i := 0; i < 10; i++ { + files[fmt.Sprintf("pkg/thing%d_test.go", i)] = fmt.Sprintf( + "package pkg\n\nimport \"testing\"\n\nfunc TestThing%d(t *testing.T) {}\n", i) + } + dir := testutil.ProjectDir(t, files) + + findings := []fusa.Finding{ + makeFinding("CYBER001", fusa.SeverityWarning, "pkg/real.go", 1), + makeFinding("CYBER002", fusa.SeverityWarning, "pkg/real2.go", 1), + } + r, err := tara.Scan(dir, findings) + if err != nil { + t.Fatalf("Scan: %v", err) + } + if r.Summary.CoveragePct > 100 { + t.Errorf("CoveragePct = %.2f, want <= 100 (x-FuSa spec §9.2 MUST)", r.Summary.CoveragePct) + } + if r.Summary.AssetsAnalyzed != 2 { + t.Errorf("AssetsAnalyzed = %d, want 2 (test-file assets must not be counted)", r.Summary.AssetsAnalyzed) + } + if r.Summary.AssetsInProject < r.Summary.AssetsAnalyzed { + t.Errorf("AssetsInProject = %d, want >= AssetsAnalyzed = %d", r.Summary.AssetsInProject, r.Summary.AssetsAnalyzed) + } +} diff --git a/trace/trace.go b/trace/trace.go index e75cf4e..901b204 100644 --- a/trace/trace.go +++ b/trace/trace.go @@ -150,6 +150,19 @@ func SaveRequirements(dir string, reqs []Requirement) error { return nil } +// IsExcludedDir reports whether a directory named name should be skipped +// when walking a project tree for Go source files: vendor/, testdata/, or +// a dot-directory. This is the canonical test-tree exclusion x-FuSa spec +// §1.6 rule 4 (SHOULD) recommends every coverage-denominator scanner in a +// tool reuse, rather than each maintaining its own independently-drifting +// copy — fmea.CountProjectFunctions and tara.CountProjectFiles both build +// on this instead of re-inlining the same three-way check. +// +//fusa:req REQ-TRACE012 +func IsExcludedDir(name string) bool { + return name == "vendor" || name == "testdata" || strings.HasPrefix(name, ".") +} + // ScanTags walks Go source files under root and returns all //fusa:req and // //fusa:test annotation tags found in comments. // @@ -164,9 +177,8 @@ func ScanTags(root string) ([]Tag, error) { if path == root { return nil // never skip the root itself } - name := d.Name() //fusa:req REQ-TRACE005 - if name == "vendor" || name == "testdata" || strings.HasPrefix(name, ".") { + if IsExcludedDir(d.Name()) { return filepath.SkipDir } return nil @@ -374,8 +386,7 @@ func ScanFuncCoverage(root string, tags []Tag) (*FuncCoverage, error) { if path == root { return nil } - name := d.Name() - if name == "vendor" || name == "testdata" || strings.HasPrefix(name, ".") { + if IsExcludedDir(d.Name()) { return filepath.SkipDir } return nil @@ -441,8 +452,7 @@ func ScanFuncTagCoverage(root string) (*FuncCoverage, error) { if path == root { return nil } - name := d.Name() - if name == "vendor" || name == "testdata" || strings.HasPrefix(name, ".") { + if IsExcludedDir(d.Name()) { return filepath.SkipDir } return nil diff --git a/trace/trace_test.go b/trace/trace_test.go index 147c17e..20acd81 100644 --- a/trace/trace_test.go +++ b/trace/trace_test.go @@ -1281,3 +1281,26 @@ func TestTRACE009_NoReqsFile(t *testing.T) { t.Error("TRACE009: unexpected finding when .fusa-reqs.json is absent") } } + +// ─── IsExcludedDir ────────────────────────────────────────────────────────── + +//fusa:test REQ-TRACE012 +func TestIsExcludedDir(t *testing.T) { + // "." also reports true — deliberately: IsExcludedDir is a pure leaf + // predicate over a directory's own basename, not root-aware. Every + // caller already guards the walk root separately (a `path == root` + // check before ever consulting IsExcludedDir), so a project root whose + // own basename happens to start with "." is never itself skipped. + excluded := []string{"vendor", "testdata", ".git", ".hidden", "."} + for _, name := range excluded { + if !trace.IsExcludedDir(name) { + t.Errorf("IsExcludedDir(%q) = false, want true", name) + } + } + included := []string{"pkg", "cmd", "internal"} + for _, name := range included { + if trace.IsExcludedDir(name) { + t.Errorf("IsExcludedDir(%q) = true, want false", name) + } + } +}