RepoTrust

Leaderboard github.com

TreeFallSound/pistomp-recovery

Package update and recovery service for pi-Stomp.

  • View repository ↗
  • Python
  • ★ 1
  • commit e53bbce45ea1
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

1%

possible

Confidence
59%
Coverage
100%

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

Code quality

62/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

1% possible

Weak signals consistent with AI-assisted development. 2 commit(s) carry explicit AI attribution, too few to characterize the codebase.

How the score is built

  • Explicitly attributed share1%
  • Unattributed share in AI-pace bursts13%
  • Estimated AI-generated share1%
  • AI tool configuration files1
  • Work sessions at AI pace2
  • Releases at AI pacenot measured
  • Coding-style index (1.0+ means possible)0.00

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Claude Code22062026-07-222026-09-25

Lines added per month all AI-attributed share

  1. 2026-0617,036 · 0% AI
  2. 2026-072,275 · 5% AI
  3. 2026-08315 · 0% AI
  4. 2026-091,360 · 6% AI

Findings in AI-attributed lines vs the rest

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

Findings per 1,000 linesAI-attributedOtherRatio
Code quality0.001.63—
Security0.000.41—

Evidence by analyzer

Explicit AI attributionok3 items
attributed_commit_share
2.6%
attributed_commits
2
attributed_loc
206
attributed_loc_share
1.0%
commits
78
effective_loc
20,986
tools_detected
1
AI tool configurationok1 item
artifacts
1
earliest_adoption
2026-06-09
tools_configured
1
workflow_agents
0
Commit velocityok2 items
excluded_import_loc
5,723
flagged_loc
2,703
flagged_loc_share
17.7%
flagged_units
2
max_loc_per_hour
1,400.53
measured_loc
15,263
median_loc_per_hour
110.60
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
45
Release velocityskipped
Coding styleok
count:assistant_voice
0
count:emoji_in_code
0
count:narrated_steps
0
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
0
files:narrated_steps
0
files:placeholder
0
index
0
lines_scanned
7,493
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0
per_kloc:placeholder
0
Findings in AI-written linesok
ai_lines
118
blame_failures
0
files_blamed
54
other_lines
7,375
quality:ai_findings
0
quality:ai_per_kloc
0
quality:other_findings
12
quality:other_per_kloc
1.63
security:ai_findings
0
security:ai_per_kloc
0
security:other_findings
3
security:other_per_kloc
0.41

Code quality

62 weak

Code quality is weak: test-to-source ratio 0.63, no CI test run detected; 5% of function code in complex or long functions; 4% duplicated lines. Weakest area: docs.

How the score is built

  • Complexity87
  • Duplication77
  • Lint and smells42
  • Tests and CI55
  • Documentation40
  • Type safety60
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok4 items
complex_functions
4
function_nloc
4,591
functions
511
long_functions
0
many_param_functions
2
mean_ccn
2.72
p90_ccn
6
risky_nloc_share
4.6%
Duplication (jscpd)ok10 items
compared_lines
5,512
duplicated_lines
245
duplicated_share
4.4%
files
54
Lintok
category:best-practice
11
category:maintainability
1
findings
12
scanned_lines
7,493
weighted_findings
26
Tests and CIok
check:ci_present
no
check:ci_runs_lint
no
check:ci_runs_tests
no
check:has_tests
yes
check:test_ratio
yes
check:tests_cochange
yes
ci_files
0
cochange_commits
71
cochange_share
66.2%
source_lines
7,493
test_lines
4,697
test_ratio
0.63
Documentationok1 item
  • README.md README.md
check:changelog
no
check:contributing
no
check:license
no
check:readme
yes
readme_lines
54
Type safetyok1 item
  • Python strict type checking: pyproject.toml pyproject.toml
check:low_escape_density
no
check:strict_config
yes
escapes
70
escapes_per_kloc
9.38

Security

78 adequate

Security posture is adequate: 58 known vulnerabilities in 2 dependencies; 1 high-severity SAST findings. Weakest area: posture.

How the score is built

  • Secrets100
  • Static analysis (SAST)94
  • Vulnerable dependencies74
  • CI workflowsnot measured
  • Security posture0
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
14
declared
14
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
3
findings_high
1
findings_low
0
findings_medium
2
parse_errors
0
scanned_lines
7,493
weighted_findings
1.25
Dependencies (osv-scanner)ok
penalty
18
vulnerabilities
58
vulnerable_packages
2
vulns_critical
6
vulns_high
37
vulns_low
1
vulns_medium
13
vulns_unknown
1
CI workflows (zizmor)skipped
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
no
signed_commit_share
1.3%
unpinned_manifests
0
Release downloadsok
binary_assets
0
signals
0
suspicious
0

Findings

6 critical45 high21 medium1 low

SeverityRuleLocationMessageTool
critical osv/GHSA-332p-7hrc-92wf uv.lock [email protected] (PyPI) is affected by GHSA-332p-7hrc-92wf Dependencies (osv-scanner)
critical osv/GHSA-5x8w-8jj5-q52h uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h Dependencies (osv-scanner)
critical osv/GHSA-8g5g-8vmr-9782 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782 Dependencies (osv-scanner)
critical osv/GHSA-v9pv-5gc8-w2m6 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4339, GHSA-v9pv-5gc8-w2m6 Dependencies (osv-scanner)
critical osv/GHSA-w889-685w-c8fh uv.lock [email protected] (PyPI) is affected by GHSA-w889-685w-c8fh Dependencies (osv-scanner)
critical osv/GHSA-xvh5-g6gv-559v uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v Dependencies (osv-scanner)
high opengrep/python.lang.best-practice.arbitrary-sleep src/pistomp_recovery/app.py:171 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep src/pistomp_recovery/emulator/backends.py:335 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep src/pistomp_recovery/emulator/backends.py:360 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep src/pistomp_recovery/emulator/backends.py:434 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep src/pistomp_recovery/emulator/backends.py:443 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep src/pistomp_recovery/hardware/encoder.py:69 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep src/pistomp_recovery/hardware/lcd.py:168 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit src/pistomp_recovery/git_util.py:18 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
high osv/GHSA-22hg-r758-rrw9 uv.lock [email protected] (PyPI) is affected by GHSA-22hg-r758-rrw9 Dependencies (osv-scanner)
high osv/GHSA-27h8-gf7j-v5hc uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4326, GHSA-27h8-gf7j-v5hc Dependencies (osv-scanner)
high osv/GHSA-3j72-p6qg-6xp7 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4341, GHSA-3j72-p6qg-6xp7 Dependencies (osv-scanner)
high osv/GHSA-4558-3h8r-v8xp uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4327, GHSA-4558-3h8r-v8xp Dependencies (osv-scanner)
high osv/GHSA-45hq-cxwh-f6vc uv.lock [email protected] (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc Dependencies (osv-scanner)
high osv/GHSA-4rr5-89j8-mwwm uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4328, GHSA-4rr5-89j8-mwwm Dependencies (osv-scanner)
high osv/GHSA-58r4-6rv3-gfh8 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4329, GHSA-58r4-6rv3-gfh8 Dependencies (osv-scanner)
high osv/GHSA-5x94-69rx-g8h2 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2 Dependencies (osv-scanner)
high osv/GHSA-5xm2-6676-qcp9 uv.lock [email protected] (PyPI) is affected by GHSA-5xm2-6676-qcp9 Dependencies (osv-scanner)
high osv/GHSA-62p4-gmf7-7g93 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3493, GHSA-62p4-gmf7-7g93 Dependencies (osv-scanner)
high osv/GHSA-65qm-jvmh-6pqg uv.lock [email protected] (PyPI) is affected by GHSA-65qm-jvmh-6pqg Dependencies (osv-scanner)
high osv/GHSA-6r8x-57c9-28j4 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4 Dependencies (osv-scanner)
high osv/GHSA-78g4-xqwv-q3g8 uv.lock [email protected] (PyPI) is affected by GHSA-78g4-xqwv-q3g8 Dependencies (osv-scanner)
high osv/GHSA-7mwm-ghpf-9vrm uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4331, GHSA-7mwm-ghpf-9vrm Dependencies (osv-scanner)
high osv/GHSA-8v84-f9pq-wr9x uv.lock [email protected] (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x Dependencies (osv-scanner)
high osv/GHSA-9hw9-ch79-4vh6 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3453, GHSA-9hw9-ch79-4vh6 Dependencies (osv-scanner)
high osv/GHSA-9v9v-9qvf-h2hj uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4343, GHSA-9v9v-9qvf-h2hj Dependencies (osv-scanner)
high osv/GHSA-c6hw-5grf-ff96 uv.lock [email protected] (PyPI) is affected by GHSA-c6hw-5grf-ff96 Dependencies (osv-scanner)
high osv/GHSA-cp9v-662q-vvx9 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4333, GHSA-cp9v-662q-vvx9 Dependencies (osv-scanner)
high osv/GHSA-f2g6-542v-9j58 uv.lock [email protected] (PyPI) is affected by GHSA-f2g6-542v-9j58 Dependencies (osv-scanner)
high osv/GHSA-g4qv-2jxx-769h uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4342, GHSA-g4qv-2jxx-769h Dependencies (osv-scanner)
high osv/GHSA-g7cr-3p24-7wf7 uv.lock [email protected] (PyPI) is affected by GHSA-g7cr-3p24-7wf7 Dependencies (osv-scanner)
high osv/GHSA-g842-9rc4-69pw uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4338, GHSA-g842-9rc4-69pw Dependencies (osv-scanner)
high osv/GHSA-gg2r-wvfm-q9rx uv.lock [email protected] (PyPI) is affected by GHSA-gg2r-wvfm-q9rx Dependencies (osv-scanner)
high osv/GHSA-j4m9-6w36-pw47 uv.lock [email protected] (PyPI) is affected by GHSA-j4m9-6w36-pw47 Dependencies (osv-scanner)
high osv/GHSA-jg86-v3jv-hrpm uv.lock [email protected] (PyPI) is affected by GHSA-jg86-v3jv-hrpm Dependencies (osv-scanner)
high osv/GHSA-jjj6-mw9f-p565 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3495, GHSA-jjj6-mw9f-p565 Dependencies (osv-scanner)
high osv/GHSA-mrfp-p49p-3hf2 uv.lock [email protected] (PyPI) is affected by GHSA-mrfp-p49p-3hf2 Dependencies (osv-scanner)
high osv/GHSA-p4wg-p73j-c528 uv.lock [email protected] (PyPI) is affected by GHSA-p4wg-p73j-c528 Dependencies (osv-scanner)
high osv/GHSA-pchr-8j38-3x4p uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4334, GHSA-pchr-8j38-3x4p Dependencies (osv-scanner)
high osv/GHSA-pg7v-jwj7-p798 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3452, GHSA-pg7v-jwj7-p798 Dependencies (osv-scanner)
high osv/GHSA-phj9-mv4w-65pm uv.lock [email protected] (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm Dependencies (osv-scanner)
high osv/GHSA-q45j-58j2-45rg uv.lock [email protected] (PyPI) is affected by GHSA-q45j-58j2-45rg Dependencies (osv-scanner)
high osv/GHSA-vjc4-5qp5-m44j uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3496, GHSA-vjc4-5qp5-m44j Dependencies (osv-scanner)
high osv/GHSA-xcvg-w56q-r89m uv.lock [email protected] (PyPI) is affected by GHSA-xcvg-w56q-r89m Dependencies (osv-scanner)
high osv/GHSA-xgh8-jp6q-p5x8 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4335, GHSA-xgh8-jp6q-p5x8 Dependencies (osv-scanner)
high osv/GHSA-xj96-63gp-2gmr uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3454, GHSA-xj96-63gp-2gmr Dependencies (osv-scanner)
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/pistomp_recovery/hardware/lcd.py:25 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.logging-error-without-handling src/pistomp_recovery/hardware/lcd.py:82 Errors should only be logged when handled. The code logs the error and propogates the exception, consider reducing the level to warning or info. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses src/pistomp_recovery/hardware/switch.py:135 Is "is_pressed" a function or an attribute? If it is a function, you may have meant self._button.is_pressed() because self._button.is_pressed is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/pistomp_recovery/hardware/version.py:22 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/pistomp_recovery/hardware/version.py:33 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected src/pistomp_recovery/plugins.py:302 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected src/pistomp_recovery/plugins.py:322 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium osv/GHSA-24rc-8hj2-v98c uv.lock [email protected] (PyPI) is affected by GHSA-24rc-8hj2-v98c Dependencies (osv-scanner)
medium osv/GHSA-254f-3936-288h uv.lock [email protected] (PyPI) is affected by GHSA-254f-3936-288h Dependencies (osv-scanner)
medium osv/GHSA-462x-pgg6-55fp uv.lock [email protected] (PyPI) is affected by GHSA-462x-pgg6-55fp Dependencies (osv-scanner)
medium osv/GHSA-4rm8-3hmm-39fg uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4340, GHSA-4rm8-3hmm-39fg Dependencies (osv-scanner)
medium osv/GHSA-4x4j-2g7c-83w6 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-2257, GHSA-4x4j-2g7c-83w6 Dependencies (osv-scanner)
medium osv/GHSA-654x-cwwv-5j9c uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4336, GHSA-654x-cwwv-5j9c Dependencies (osv-scanner)
medium osv/GHSA-74r2-7ff9-mjj2 uv.lock [email protected] (PyPI) is affected by GHSA-74r2-7ff9-mjj2 Dependencies (osv-scanner)
medium osv/GHSA-fc9g-5qg7-mf45 uv.lock [email protected] (PyPI) is affected by GHSA-fc9g-5qg7-mf45 Dependencies (osv-scanner)
medium osv/GHSA-fj7v-r99m-22gq uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3494, GHSA-fj7v-r99m-22gq Dependencies (osv-scanner)
medium osv/GHSA-h35f-9h28-mq5c uv.lock [email protected] (PyPI) is affected by PYSEC-2026-3447, GHSA-h35f-9h28-mq5c Dependencies (osv-scanner)
medium osv/GHSA-p8hx-v2p6-rp84 uv.lock [email protected] (PyPI) is affected by PYSEC-2026-4337, GHSA-p8hx-v2p6-rp84 Dependencies (osv-scanner)
medium osv/GHSA-rfgq-q3w2-pmv2 uv.lock [email protected] (PyPI) is affected by GHSA-rfgq-q3w2-pmv2 Dependencies (osv-scanner)
medium osv/GHSA-vx6w-vv9f-6gvg uv.lock [email protected] (PyPI) is affected by GHSA-vx6w-vv9f-6gvg Dependencies (osv-scanner)
medium osv/GHSA-wqgw-9xfh-qf2g uv.lock [email protected] (PyPI) is affected by GHSA-wqgw-9xfh-qf2g Dependencies (osv-scanner)
low osv/GHSA-xmj3-9gf7-h52w uv.lock [email protected] (PyPI) is affected by GHSA-xmj3-9gf7-h52w 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 provenanceskipped—0
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 f1d2b562b41412
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityskipped—0
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.158
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b4143
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-14e53bbce45ea1prov-5+qual-2+sec-21%6278
2026-11-14e53bbce45ea1prov-4+qual-2+sec-21%6278

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/TreeFallSound/pistomp-recovery/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/TreeFallSound/pistomp-recovery/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/TreeFallSound/pistomp-recovery/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/TreeFallSound/pistomp-recovery/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/TreeFallSound/pistomp-recovery/security.svg)](https://repotrust.synapticcyber.com/r/github.com/TreeFallSound/pistomp-recovery/)
Full text report

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 1 possible 59% 100%
Code quality 62 weak 90% 100%
Security 78 adequate 85% 100%

AI provenance

Weak signals consistent with AI-assisted development. 2 commit(s) carry explicit AI attribution, too few to characterize the codebase.

  • Explicitly attributed share (lower bound): 1.0%
  • Unattributed share in AI-consistent velocity bursts: 12.9%
  • Estimated AI-generated share: 1.0%
AI tool Attributed commits Lines added
Claude Code 2 206
  • AI tooling configured in repo: claude-code

Current source lines last changed by AI-attributed commits: 118 of 7,493.

Too few lines in one group to compare finding densities.

Month Lines added Attributed to AI
2026-06 17,036 0%
2026-07 2,275 5%
2026-08 315 0%
2026-09 1,360 6%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (e53bbce45ea1)
  • Claude Code: trailer 'Co-Authored-By: Claude' (22d26df84717)
  • CLAUDE.md (claude-code configuration) (CLAUDE.md)
  • 1,618 lines of first-party code in ~1.2h (1,401 lines/hour, 1 commit session) (8d9fefbaf77d)
  • 1,085 lines of first-party code in ~0.9h (1,189 lines/hour, 1 commit session) (ae003235184e)

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.63, no CI test run detected; 5% of function code in complex or long functions; 4% duplicated lines. Weakest area: docs.

Area Score
Complexity (lizard) 87
Duplication 77
Code smells (Opengrep) 42
Tests and CI 55
Documentation 40
Type safety 60
Process (Scorecard review/maintenance) n/a
  • Functions: 511; mean complexity 2.7, 90th percentile 6; 4 complex and 0 long functions
  • Duplicated lines: 4.4% of 5,512 compared
  • Tests: 4,697 test lines for 7,493 source lines (ratio 0.63); CI test commands: none detected; 66% of recent source commits also change tests
  • Docs missing or thin: license, contributing, changelog

Most complex functions:

Security

Security posture is adequate: 58 known vulnerabilities in 2 dependencies; 1 high-severity SAST findings. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 94
Vulnerable dependencies (OSV) 74
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Known vulnerabilities: 58 in 2 packages (critical 6, high 37, medium 13, low 1)

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

Top findings

Severity Finding Location
critical osv/GHSA-5x8w-8jj5-q52h: [email protected] (PyPI) is affected by PYSEC-2026-4330, GHSA-5x8w-8jj5-q52h uv.lock
critical osv/GHSA-8g5g-8vmr-9782: [email protected] (PyPI) is affected by PYSEC-2026-4332, GHSA-8g5g-8vmr-9782 uv.lock
critical osv/GHSA-v9pv-5gc8-w2m6: [email protected] (PyPI) is affected by PYSEC-2026-4339, GHSA-v9pv-5gc8-w2m6 uv.lock
critical osv/GHSA-xvh5-g6gv-559v: [email protected] (PyPI) is affected by PYSEC-2026-4363, GHSA-xvh5-g6gv-559v uv.lock
critical osv/GHSA-332p-7hrc-92wf: [email protected] (PyPI) is affected by GHSA-332p-7hrc-92wf uv.lock
critical osv/GHSA-w889-685w-c8fh: [email protected] (PyPI) is affected by GHSA-w889-685w-c8fh uv.lock
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] src/pistomp_recovery/git_util.py:18
high osv/GHSA-8v84-f9pq-wr9x: [email protected] (PyPI) is affected by PYSEC-2026-2253, GHSA-8v84-f9pq-wr9x uv.lock
high osv/GHSA-5x94-69rx-g8h2: [email protected] (PyPI) is affected by PYSEC-2026-2254, GHSA-5x94-69rx-g8h2 uv.lock
high osv/GHSA-45hq-cxwh-f6vc: [email protected] (PyPI) is affected by PYSEC-2026-2255, GHSA-45hq-cxwh-f6vc uv.lock
high osv/GHSA-phj9-mv4w-65pm: [email protected] (PyPI) is affected by PYSEC-2026-2256, GHSA-phj9-mv4w-65pm uv.lock
high osv/GHSA-6r8x-57c9-28j4: [email protected] (PyPI) is affected by PYSEC-2026-3451, GHSA-6r8x-57c9-28j4 uv.lock
high osv/GHSA-pg7v-jwj7-p798: [email protected] (PyPI) is affected by PYSEC-2026-3452, GHSA-pg7v-jwj7-p798 uv.lock
high osv/GHSA-9hw9-ch79-4vh6: [email protected] (PyPI) is affected by PYSEC-2026-3453, GHSA-9hw9-ch79-4vh6 uv.lock
high osv/GHSA-xj96-63gp-2gmr: [email protected] (PyPI) is affected by PYSEC-2026-3454, GHSA-xj96-63gp-2gmr uv.lock
high osv/GHSA-62p4-gmf7-7g93: [email protected] (PyPI) is affected by PYSEC-2026-3493, GHSA-62p4-gmf7-7g93 uv.lock
high osv/GHSA-jjj6-mw9f-p565: [email protected] (PyPI) is affected by PYSEC-2026-3495, GHSA-jjj6-mw9f-p565 uv.lock
high osv/GHSA-vjc4-5qp5-m44j: [email protected] (PyPI) is affected by PYSEC-2026-3496, GHSA-vjc4-5qp5-m44j uv.lock
high osv/GHSA-27h8-gf7j-v5hc: [email protected] (PyPI) is affected by PYSEC-2026-4326, GHSA-27h8-gf7j-v5hc uv.lock
high osv/GHSA-4558-3h8r-v8xp: [email protected] (PyPI) is affected by PYSEC-2026-4327, GHSA-4558-3h8r-v8xp uv.lock
high osv/GHSA-4rr5-89j8-mwwm: [email protected] (PyPI) is affected by PYSEC-2026-4328, GHSA-4rr5-89j8-mwwm uv.lock
high osv/GHSA-58r4-6rv3-gfh8: [email protected] (PyPI) is affected by PYSEC-2026-4329, GHSA-58r4-6rv3-gfh8 uv.lock
high osv/GHSA-7mwm-ghpf-9vrm: [email protected] (PyPI) is affected by PYSEC-2026-4331, GHSA-7mwm-ghpf-9vrm uv.lock
high osv/GHSA-cp9v-662q-vvx9: [email protected] (PyPI) is affected by PYSEC-2026-4333, GHSA-cp9v-662q-vvx9 uv.lock
high osv/GHSA-pchr-8j38-3x4p: [email protected] (PyPI) is affected by PYSEC-2026-4334, GHSA-pchr-8j38-3x4p uv.lock

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.

Repository profile

  • Source lines: 7,493; test lines: 4,697
Language Lines
Python 12,159
Shell 31