RepoTrust

Leaderboard github.com

mastifdogo/Bookeeping

  • View repository ↗
  • TypeScript
  • ★ 0
  • commit 870cdaee1fe6
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

100%

explicit

Confidence
90%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

65/100

weak

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

78/100

adequate

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

AI provenance

100% explicit

Explicit AI attribution on 100% of first-party code added; an estimated 100% including velocity signals.

How the score is built

  • Explicitly attributed share100%
  • Unattributed share in AI-pace bursts0%
  • Estimated AI-generated share100%
  • AI tool configuration files11
  • Work sessions at AI pace7
  • Releases at AI pace0
  • Coding-style index (1.0+ means possible)0.03

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Claude Code7841,9232026-10-052026-11-14

Lines added per month all AI-attributed share

  1. 2026-1024,479 · 100% AI
  2. 2026-1117,444 · 100% AI

Findings in AI-attributed lines vs the rest

From git blame: 30,060 lines trace to AI-attributed commits, 0 to others. Too few lines in one group for a fair comparison. Reported, not scored.

Findings per 1,000 linesAI-attributedOtherRatio
Code quality1.13——
Security0.13——

Evidence by analyzer

Explicit AI attributionok26 items
attributed_commit_share
96.3%
attributed_commits
78
attributed_loc
41,923
attributed_loc_share
100.0%
commits
81
effective_loc
41,923
tools_detected
1
AI tool configurationok11 items
artifacts
11
earliest_adoption
2026-11-07
tools_configured
1
workflow_agents
0
Commit velocityok7 items
excluded_import_loc
9,358
flagged_loc
23,824
flagged_loc_share
73.2%
flagged_units
7
max_loc_per_hour
1,300.79
measured_loc
32,565
median_loc_per_hour
361.05
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
31
Release velocityok
flagged_releases
0
max_loc_per_day
49,704
releases
40
Coding styleok1 item
count:assistant_voice
0
count:emoji_in_code
0
count:narrated_steps
1
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
0
files:narrated_steps
1
files:placeholder
0
index
0.03
lines_scanned
30,060
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0.03
per_kloc:placeholder
0
Findings in AI-written linesok
ai_lines
30,060
blame_failures
0
files_blamed
158
other_lines
0
quality:ai_findings
34
quality:ai_per_kloc
1.13
quality:other_findings
0
security:ai_findings
4
security:ai_per_kloc
0.13
security:other_findings
0

Code quality

65 weak

Code quality is weak: test-to-source ratio 0.15, CI runs tests; 22% of function code in complex or long functions; 9% duplicated lines. Weakest area: docs.

How the score is built

  • Complexity52
  • Duplication58
  • Lint and smells80
  • Tests and CI73
  • Documentation40
  • Type safety100
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
47
function_nloc
10,562
functions
1,457
long_functions
5
many_param_functions
1
mean_ccn
3.44
p90_ccn
7
risky_nloc_share
21.8%
Duplication (jscpd)ok10 items
compared_lines
23,571
duplicated_lines
2,176
duplicated_share
9.2%
files
158
Lintok
category:correctness
34
findings
34
scanned_lines
29,290
weighted_findings
25.50
Tests and CIok2 items
  • CI config: .github/workflows/release.yml .github/workflows/release.yml
  • CI runs tests (make test)
check:ci_present
yes
check:ci_runs_lint
no
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
yes
ci_files
1
cochange_commits
58
cochange_share
74.1%
source_lines
30,060
test_lines
4,631
test_ratio
0.15
Documentationok1 item
  • README.md README.md
check:changelog
no
check:contributing
no
check:license
no
check:readme
yes
readme_lines
349
Type safetyok1 item
  • TypeScript strict type checking: backend/tsconfig.json backend/tsconfig.json
check:low_escape_density
yes
check:strict_config
yes
escapes
26
escapes_per_kloc
1.27

Security

78 adequate

Security posture is adequate: 9 known vulnerabilities in 4 dependencies; 2 high-severity SAST findings; 3 high-severity workflow issues. Weakest area: posture.

How the score is built

  • Secrets100
  • Static analysis (SAST)95
  • Vulnerable dependencies75
  • CI workflows63
  • Security posture20
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
13
declared
13
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
0
secrets_low_confidence
0
secrets_nonprod
0
Static analysis (opengrep)ok
findings
4
findings_high
2
findings_low
0
findings_medium
2
parse_errors
5
scanned_lines
29,290
weighted_findings
4.10
Dependencies (osv-scanner)ok
penalty
17
vulnerabilities
9
vulnerable_packages
4
vulns_critical
0
vulns_high
1
vulns_low
1
vulns_medium
7
vulns_unknown
0
CI workflows (zizmor)ok
findings
4
findings_high
3
findings_low
1
findings_medium
0
penalty
27.90
workflows
1
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
yes
signed_commit_share
100.0%
unpinned_manifests
0
Release downloadsok6 items
binary_assets
10
signals
2
suspicious
0

Findings

7 high28 medium16 low

SeverityRuleLocationMessageTool
high opengrep/typescript.lang.correctness.useless-ternary backend/src/gmail.ts:437 It looks like no matter how typeof a.content === "string" is evaluated, this expression returns Buffer.from(a.content).toString("base64"). This is probably a copy-paste error. Lint
high zizmor/unpinned-uses .github/workflows/release.yml:56 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/cache-poisoning .github/workflows/release.yml:65 runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/release.yml:65 unpinned action reference [confidence high] CI workflows (zizmor)
high opengrep/javascript.express.security.injection.tainted-sql-string backend/src/ledger.ts:330 Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the... Static analysis (opengrep)
high opengrep/javascript.express.security.injection.tainted-sql-string backend/src/ledger.ts:392 Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the... Static analysis (opengrep)
high osv/GHSA-587h-7wmj-h5pm frontend/package-lock.json [email protected] (npm) is affected by GHSA-587h-7wmj-h5pm Dependencies (osv-scanner)
medium opengrep/javascript.lang.correctness.no-replaceall .claude/skills/ledger-module/scripts/check-module.ts:174 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/backup.ts:372 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/backup.ts:394 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/backup.ts:642 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/backup.ts:959 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/backup.ts:986 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/csv.ts:22 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/migrate.ts:699 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/module-host.ts:145 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/module-import.ts:131 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/module-installer.ts:257 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/module-installer.ts:258 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/module-installer.ts:56 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/restore.ts:254 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/restore.ts:255 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/search.ts:34 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall backend/src/updater.ts:454 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall frontend/src/lib/money.ts:20 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.correctness.no-replaceall frontend/src/lib/money.ts:39 The string method replaceAll is not supported in all versions of javascript, and is not supported by older browser versions. Consider using replace() with a regex as the first argument instead like mystring.replace(/bad/g, "good")... Lint
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp backend/src/migrate.ts:276 RegExp() called with a `words` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use... Static analysis (opengrep)
medium opengrep/bash.lang.security.ifs-tampering deploy/lxc-template/build-lxc-template.sh:143 The special variable IFS affects how splitting takes place when expanding unquoted variables. Don't set it globally. Prefer a dedicated utility such as 'cut' or 'awk' if you need to split input data. If you must use 'read', set IFS... Static analysis (opengrep)
medium osv/GHSA-698v-4r3x-3vcv frontend/package-lock.json [email protected] (npm) is affected by GHSA-698v-4r3x-3vcv Dependencies (osv-scanner)
medium osv/GHSA-gcqx-w48m-w2h4 frontend/package-lock.json [email protected] (npm) is affected by GHSA-gcqx-w48m-w2h4 Dependencies (osv-scanner)
medium osv/GHSA-jf9x-2fg2-hx4w frontend/package-lock.json @sveltejs/[email protected] (npm) is affected by GHSA-jf9x-2fg2-hx4w Dependencies (osv-scanner)
medium osv/GHSA-mw6w-2fmv-pvw3 frontend/package-lock.json @sveltejs/[email protected] (npm) is affected by GHSA-mw6w-2fmv-pvw3 Dependencies (osv-scanner)
medium osv/GHSA-r825-w8mm-5pxw frontend/package-lock.json [email protected] (npm) is affected by GHSA-r825-w8mm-5pxw Dependencies (osv-scanner)
medium osv/GHSA-rq7h-c2jc-7f22 frontend/package-lock.json [email protected] (npm) is affected by GHSA-rq7h-c2jc-7f22 Dependencies (osv-scanner)
medium osv/GHSA-vfpm-58rq-9qcg frontend/package-lock.json [email protected] (npm) is affected by GHSA-vfpm-58rq-9qcg Dependencies (osv-scanner)
low opengrep/javascript.lang.correctness.missing-template-string-indicator .claude/skills/ledger-module/scripts/check-module.ts:231 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator .claude/skills/ledger-module/scripts/check-module.ts:231 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator .claude/skills/ledger-module/scripts/check-module.ts:232 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator .claude/skills/ledger-module/scripts/check-module.ts:232 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.useless-assignment backend/src/module-import.ts:133 `hit` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator backend/src/module-settings.ts:88 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator backend/src/module-settings.ts:88 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator backend/src/search.ts:40 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator backend/src/search.ts:40 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator backend/src/search.ts:40 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command deploy/create-org-db.sh:30 Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may... Lint
low opengrep/bash.lang.correctness.unquoted-command-substitution-in-command deploy/install.sh:140 The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result. Lint
low opengrep/bash.lang.correctness.unquoted-command-substitution-in-command deploy/install.sh:140 The result of command substitution $(...) or `...`, if unquoted, is split on whitespace or other separators specified by the IFS variable. You should surround it with double quotes to avoid splitting the result. Lint
low opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command deploy/setup-db.sh:49 Variable expansions must be double-quoted so as to prevent being split into multiple pieces according to whitespace or whichever separator is specified by the IFS variable. If you really wish to split the variable's contents, you may... Lint
low zizmor/artipacked .github/workflows/release.yml:56 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
low osv/GHSA-9jrq-w75r-8gcw frontend/package-lock.json [email protected] (npm) is affected by GHSA-9jrq-w75r-8gcw Dependencies (osv-scanner)

Tools and coverage

Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.

AnalyzerPillarStatusVersionFindingsNote
AI tool configurationAI provenanceoksignatures-v10
Explicit AI attributionAI provenanceoksignatures-v10
Release velocityAI provenanceokprov-40
Coding styleAI provenanceok—0
Commit velocityAI provenanceokprov-40
Findings in AI-written linesAI provenanceokgit-blame0
Complexity (lizard)Code qualityoklizard 1.25.10
DocumentationCode qualityok—0
Duplication (jscpd)Code qualityokrepotrust-dup-w60
LintCode qualityokopengrep 1.33.1; rules f1d2b562b41434
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityokzizmor 1.32.04
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.19
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b4144
OpenSSF ScorecardSecurityskipped—0no published OpenSSF Scorecard result for this repo
Secrets (gitleaks)Securityokgitleaks 8.30.10

Score history

Scores from different scoring versions aren't directly comparable.

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-14870cdaee1fe6prov-5+qual-2+sec-2100%6578
2026-11-14870cdaee1fe6prov-4+qual-2+sec-2100%6578

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/mastifdogo/Bookeeping/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/mastifdogo/Bookeeping/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/mastifdogo/Bookeeping/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/mastifdogo/Bookeeping/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/mastifdogo/Bookeeping/security.svg)](https://repotrust.synapticcyber.com/r/github.com/mastifdogo/Bookeeping/)
Full text report
  • Repository: https://github.com/mastifdogo/Bookeeping
  • Commit: 870cdaee1fe616d3f567bd79f2f4f3e7a6634681
  • Generated: 2026-11-14T14:52:06+00:00
  • Scorer 0.1.0, scoring prov-5+qual-2+sec-2, report schema v2

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 100 explicit 90% 100%
Code quality 65 weak 90% 100%
Security 78 adequate 85% 100%

AI provenance

Explicit AI attribution on 100% of first-party code added; an estimated 100% including velocity signals.

  • Explicitly attributed share (lower bound): 100.0%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 100.0%
AI tool Attributed commits Lines added
Claude Code 78 41,923
  • AI tooling configured in repo: claude-code

Current source lines last changed by AI-attributed commits: 30,060 of 30,060.

Too few lines in one group to compare finding densities.

  • Stylometry index: 0.03 per 1,000 lines (narrated steps 1, placeholders 0, assistant phrasing 0, emoji 0). Reported as a signal, not scored.
Month Lines added Attributed to AI
2026-10 24,479 100%
2026-11 17,444 100%

Evidence

AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.

Code quality

Code quality is weak: test-to-source ratio 0.15, CI runs tests; 22% of function code in complex or long functions; 9% duplicated lines. Weakest area: docs.

Area Score
Complexity (lizard) 52
Duplication 58
Code smells (Opengrep) 80
Tests and CI 73
Documentation 40
Type safety 100
Process (Scorecard review/maintenance) n/a
  • Functions: 1,457; mean complexity 3.4, 90th percentile 7; 47 complex and 5 long functions
  • Duplicated lines: 9.2% of 23,571 compared
  • Tests: 4,631 test lines for 30,060 source lines (ratio 0.15); CI test commands: make test; 74% of recent source commits also change tests
  • Docs missing or thin: license, contributing, changelog

Most complex functions:

Security

Security posture is adequate: 9 known vulnerabilities in 4 dependencies; 2 high-severity SAST findings; 3 high-severity workflow issues. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 95
Vulnerable dependencies (OSV) 75
CI workflows (zizmor) 63
Posture (policy, updates, signing, lockfiles) 20
OpenSSF Scorecard n/a
  • Known vulnerabilities: 9 in 4 packages (critical 0, high 1, medium 7, low 1)

  • Posture checks passed: signed commits, lockfiles; missing: security policy, dependency updates

Top findings

Severity Finding Location
high opengrep/javascript.express.security.injection.tainted-sql-string: Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the database. Instead, use a parameterized query which is available [confidence medium] backend/src/ledger.ts:330
high opengrep/javascript.express.security.injection.tainted-sql-string: Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the database. Instead, use a parameterized query which is available [confidence medium] backend/src/ledger.ts:392
high osv/GHSA-587h-7wmj-h5pm: [email protected] (npm) is affected by GHSA-587h-7wmj-h5pm frontend/package-lock.json
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/release.yml:56
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/release.yml:65
high zizmor/cache-poisoning: runtime artifacts potentially vulnerable to a cache poisoning attack [confidence low] .github/workflows/release.yml:65
medium opengrep/javascript.lang.security.audit.detect-non-literal-regexp: RegExp() called with a words function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use hardcoded regexes instead. If your regex is run on user-controlle [confidence low] backend/src/migrate.ts:276
medium opengrep/bash.lang.security.ifs-tampering: The special variable IFS affects how splitting takes place when expanding unquoted variables. Don't set it globally. Prefer a dedicated utility such as 'cut' or 'awk' if you need to split input data. If you must use 'read', set IFS locally using e.g. 'IFS="," read -a my_array'. [confidence low] deploy/lxc-template/build-lxc-template.sh:143
medium osv/GHSA-jf9x-2fg2-hx4w: @sveltejs/[email protected] (npm) is affected by GHSA-jf9x-2fg2-hx4w frontend/package-lock.json
medium osv/GHSA-mw6w-2fmv-pvw3: @sveltejs/[email protected] (npm) is affected by GHSA-mw6w-2fmv-pvw3 frontend/package-lock.json
medium osv/GHSA-gcqx-w48m-w2h4: [email protected] (npm) is affected by GHSA-gcqx-w48m-w2h4 frontend/package-lock.json
medium osv/GHSA-698v-4r3x-3vcv: [email protected] (npm) is affected by GHSA-698v-4r3x-3vcv frontend/package-lock.json
medium osv/GHSA-r825-w8mm-5pxw: [email protected] (npm) is affected by GHSA-r825-w8mm-5pxw frontend/package-lock.json
medium osv/GHSA-rq7h-c2jc-7f22: [email protected] (npm) is affected by GHSA-rq7h-c2jc-7f22 frontend/package-lock.json
medium osv/GHSA-vfpm-58rq-9qcg: [email protected] (npm) is affected by GHSA-vfpm-58rq-9qcg frontend/package-lock.json
low osv/GHSA-9jrq-w75r-8gcw: [email protected] (npm) is affected by GHSA-9jrq-w75r-8gcw frontend/package-lock.json
low zizmor/artipacked: credential persistence through GitHub Actions artifacts [confidence low] .github/workflows/release.yml:56

Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.

Distribution signals

Signals consistent with a repository that exists to distribute a download. They are heuristics, not a verdict; release files were not downloaded or inspected.

Repository profile

  • Source lines: 30,060; test lines: 4,631
Language Lines
TypeScript 24,992
Svelte 7,340
Shell 1,477
SQL 778
JavaScript 104