RepoTrust

Leaderboard github.com

PartialScience/JSTC

Complete re-write and improvements on JavaTC using a modern tech stack

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

AI provenance

15%

explicit

Confidence
88%
Coverage
100%

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

Code quality

67/100

adequate

Confidence
90%
Coverage
100%

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

Security

61/100

weak

Confidence
85%
Coverage
100%

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

AI provenance

15% explicit

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

How the score is built

  • Explicitly attributed share15%
  • Unattributed share in AI-pace bursts10%
  • Estimated AI-generated share15%
  • AI tool configuration files0
  • Work sessions at AI pace3
  • Releases at AI pacenot measured
  • Coding-style index (1.0+ means possible)0.04

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Claude Code116,1802026-10-212026-10-21

Lines added per month all AI-attributed share

  1. 2025-10593 · 0% AI
  2. 2025-110 · 0% AI
  3. 2025-1214 · 0% AI
  4. 2026-012,051 · 0% AI
  5. 2026-024,158 · 0% AI
  6. 2026-03954 · 0% AI
  7. 2026-050 · 0% AI
  8. 2026-0724,635 · 0% AI
  9. 2026-08175 · 0% AI
  10. 2026-109,796 · 63% AI

Findings in AI-attributed lines vs the rest

From git blame: 4,002 lines trace to AI-attributed commits, 20,296 to others. Reported, not scored.

Findings per 1,000 linesAI-attributedOtherRatio
Code quality0.001.180.00×
Security0.000.00—

Evidence by analyzer

Explicit AI attributionok12 items
attributed_commit_share
15.1%
attributed_commits
11
attributed_loc
6,180
attributed_loc_share
14.6%
commits
73
effective_loc
42,376
tools_detected
1
AI tool configurationok
artifacts
0
tools_configured
0
workflow_agents
0
Commit velocityok3 items
excluded_import_loc
19,956
flagged_loc
9,955
flagged_loc_share
44.4%
flagged_units
3
max_loc_per_hour
1,074.17
measured_loc
22,420
median_loc_per_hour
172.28
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 velocityskipped
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.04
lines_scanned
24,298
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0.04
per_kloc:placeholder
0
Findings in AI-written linesok
ai_lines
4,002
blame_failures
0
files_blamed
164
other_lines
20,296
quality:ai_findings
0
quality:ai_per_kloc
0
quality:other_findings
24
quality:other_per_kloc
1.18
quality:ratio
0
security:ai_findings
0
security:ai_per_kloc
0
security:other_findings
0
security:other_per_kloc
0

Code quality

67 adequate

Code quality is adequate: test-to-source ratio 0.41, no CI test run detected; 8% of function code in complex or long functions; 3% duplicated lines. Weakest area: docs.

How the score is built

  • Complexity78
  • Duplication85
  • Lint and smells79
  • Tests and CI51
  • Documentation40
  • Type safety74
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
13
function_nloc
11,950
functions
1,508
long_functions
3
many_param_functions
4
mean_ccn
2.22
p90_ccn
5
risky_nloc_share
8.5%
Duplication (jscpd)ok10 items
compared_lines
18,032
duplicated_lines
483
duplicated_share
2.7%
files
164
Lintok
category:best-practice
8
category:correctness
4
category:maintainability
12
findings
24
scanned_lines
24,298
weighted_findings
23
Tests and CIok
check:ci_present
no
check:ci_runs_lint
no
check:ci_runs_tests
no
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
yes
ci_files
0
cochange_commits
59
cochange_share
62.7%
source_lines
24,298
test_lines
10,025
test_ratio
0.41
Documentationok1 item
  • README.md README.md
check:changelog
no
check:contributing
no
check:license
no
check:readme
yes
readme_lines
236
Type safetyok1 item
  • TypeScript strict type checking: frontend/tsconfig.app.json frontend/tsconfig.app.json
check:low_escape_density
yes
check:strict_config
no
escapes
7
escapes_per_kloc
0.29

Security

61 weak

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

How the score is built

  • Secrets100
  • Static analysis (SAST)97
  • Vulnerable dependencies6
  • CI workflowsnot measured
  • Security posture0
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
53
declared
53
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
1
findings_high
1
findings_low
0
findings_medium
0
parse_errors
1
scanned_lines
24,298
weighted_findings
1.80
Dependencies (osv-scanner)ok
penalty
164
vulnerabilities
58
vulnerable_packages
21
vulns_critical
4
vulns_high
32
vulns_low
4
vulns_medium
18
vulns_unknown
0
CI workflows (zizmor)skipped
Security postureok
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
no
check:signed_commits
no
signed_commit_share
12.3%
unpinned_manifests
0
Release downloadsok
binary_assets
0
signals
0
suspicious
0

Findings

4 critical34 high37 medium8 low

SeverityRuleLocationMessageTool
critical osv/GHSA-5gmw-xhrv-c9v3 frontend/package-lock.json [email protected] (npm) is affected by GHSA-5gmw-xhrv-c9v3 Dependencies (osv-scanner)
critical osv/GHSA-5xrq-8626-4rwp frontend/package-lock.json [email protected] (npm) is affected by GHSA-5xrq-8626-4rwp Dependencies (osv-scanner)
critical osv/GHSA-85c8-ppgw-ccpr frontend/package-lock.json [email protected] (npm) is affected by GHSA-85c8-ppgw-ccpr Dependencies (osv-scanner)
critical osv/GHSA-pqg4-j6r4-53mv package-lock.json [email protected] (npm) is affected by GHSA-pqg4-j6r4-53mv Dependencies (osv-scanner)
high opengrep/python.lang.maintainability.useless-inner-function api/app/simulation/coupled/spice_export.py:125 function `node_idx` is defined inside a function but never used Lint
high opengrep/dockerfile.security.missing-user .devcontainer/Dockerfile:64 By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile... Static analysis (opengrep)
high osv/GHSA-2jv5-9r88-3w3p api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1850, GHSA-2jv5-9r88-3w3p Dependencies (osv-scanner)
high osv/GHSA-59g5-xgcq-4qw3 api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1851, GHSA-59g5-xgcq-4qw3 Dependencies (osv-scanner)
high osv/GHSA-5rvq-cxj2-64vf api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3036, GHSA-5rvq-cxj2-64vf Dependencies (osv-scanner)
high osv/GHSA-pp6c-gr5w-3c5g api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3039, GHSA-pp6c-gr5w-3c5g Dependencies (osv-scanner)
high osv/GHSA-wp53-j4wj-2cfg api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1852, GHSA-wp53-j4wj-2cfg Dependencies (osv-scanner)
high osv/PYSEC-2024-38 api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2024-38 Dependencies (osv-scanner)
high osv/GHSA-2883-xcg3-v3hh frontend/package-lock.json [email protected] (npm) is affected by GHSA-2883-xcg3-v3hh Dependencies (osv-scanner)
high osv/GHSA-2883-xcg3-v3hh frontend/package-lock.json [email protected] (npm) is affected by GHSA-2883-xcg3-v3hh Dependencies (osv-scanner)
high osv/GHSA-28wg-ghj8-5hjv frontend/package-lock.json [email protected] (npm) is affected by GHSA-28wg-ghj8-5hjv Dependencies (osv-scanner)
high osv/GHSA-2v37-7h3g-55p8 frontend/package-lock.json [email protected] (npm) is affected by GHSA-2v37-7h3g-55p8 Dependencies (osv-scanner)
high osv/GHSA-52cp-r559-cp3m frontend/package-lock.json [email protected] (npm) is affected by GHSA-52cp-r559-cp3m Dependencies (osv-scanner)
high osv/GHSA-587h-7wmj-h5pm frontend/package-lock.json [email protected] (npm) is affected by GHSA-587h-7wmj-h5pm Dependencies (osv-scanner)
high osv/GHSA-5p4m-2wfm-xmqj frontend/package-lock.json [email protected] (npm) is affected by GHSA-5p4m-2wfm-xmqj Dependencies (osv-scanner)
high osv/GHSA-5p4m-2wfm-xmqj frontend/package-lock.json [email protected] (npm) is affected by GHSA-5p4m-2wfm-xmqj Dependencies (osv-scanner)
high osv/GHSA-68fv-2mgg-jv7q frontend/package-lock.json [email protected] (npm) is affected by GHSA-68fv-2mgg-jv7q Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p frontend/package-lock.json [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p frontend/package-lock.json [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-6j4f-fj2g-mc7p frontend/package-lock.json [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p Dependencies (osv-scanner)
high osv/GHSA-73wf-gq98-2v4g frontend/package-lock.json [email protected] (npm) is affected by GHSA-73wf-gq98-2v4g Dependencies (osv-scanner)
high osv/GHSA-c83g-rgw3-j3cx frontend/package-lock.json [email protected] (npm) is affected by GHSA-c83g-rgw3-j3cx Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg frontend/package-lock.json [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg frontend/package-lock.json [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-mh99-v99m-4gvg frontend/package-lock.json [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg Dependencies (osv-scanner)
high osv/GHSA-px8p-9vwx-vf98 frontend/package-lock.json [email protected] (npm) is affected by GHSA-px8p-9vwx-vf98 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 frontend/package-lock.json [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 frontend/package-lock.json [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-qhr7-859c-m2p7 frontend/package-lock.json [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 Dependencies (osv-scanner)
high osv/GHSA-r28c-9q8g-f849 frontend/package-lock.json [email protected] (npm) is affected by GHSA-r28c-9q8g-f849 Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 frontend/package-lock.json [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 frontend/package-lock.json [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-rgw5-rvv9-x895 frontend/package-lock.json [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 Dependencies (osv-scanner)
high osv/GHSA-395f-4hp3-45gv package-lock.json [email protected] (npm) is affected by GHSA-395f-4hp3-45gv Dependencies (osv-scanner)
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:67 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:68 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:69 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:70 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:71 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:73 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:75 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:79 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:80 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:81 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function api/app/simulation/meshing/gmsh_to_mfem.py:82 `return` only makes sense inside a function Lint
medium opengrep/typescript.react.best-practice.react-props-spreading frontend/src/editor/shapes.tsx:258 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading frontend/src/editor/shapes.tsx:325 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading frontend/src/editor/shapes.tsx:464 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading frontend/src/ui/OperatingMode.tsx:279 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading frontend/src/ui/OperatingMode.tsx:280 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading frontend/src/ui/OperatingMode.tsx:289 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-spreading frontend/src/ui/OperatingMode.tsx:290 It's best practice to explicitly pass props to an HTML component rather than use the spread operator. The spread operator risks passing invalid HTML props to an HTML element, which can cause console warnings or worse, give malicious... Lint
medium opengrep/typescript.react.best-practice.react-props-in-state frontend/src/ui/Toolbar.tsx:29 Copying a prop into state in React -- this is bad practice as all updates to it are ignored. Instead, read props directly in your component and avoid copying props into state. Lint
medium osv/GHSA-6w46-j5rx-g56g api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1845, GHSA-6w46-j5rx-g56g Dependencies (osv-scanner)
medium osv/GHSA-mj87-hwqh-73pj api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3038, GHSA-mj87-hwqh-73pj Dependencies (osv-scanner)
medium osv/GHSA-4w7w-66w2-5vf9 frontend/package-lock.json [email protected] (npm) is affected by GHSA-4w7w-66w2-5vf9 Dependencies (osv-scanner)
medium osv/GHSA-67mh-4wv8-2f99 frontend/package-lock.json [email protected] (npm) is affected by GHSA-67mh-4wv8-2f99 Dependencies (osv-scanner)
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-82fw-gwwq-j7x9 frontend/package-lock.json @vitest/[email protected] (npm) is affected by GHSA-82fw-gwwq-j7x9 Dependencies (osv-scanner)
medium osv/GHSA-82fw-gwwq-j7x9 frontend/package-lock.json [email protected] (npm) is affected by GHSA-82fw-gwwq-j7x9 Dependencies (osv-scanner)
medium osv/GHSA-fx2h-pf6j-xcff frontend/package-lock.json [email protected] (npm) is affected by GHSA-fx2h-pf6j-xcff Dependencies (osv-scanner)
medium osv/GHSA-fxqj-rqcc-2cmp frontend/package-lock.json [email protected] (npm) is affected by GHSA-fxqj-rqcc-2cmp Dependencies (osv-scanner)
medium osv/GHSA-g3hv-75wg-m249 frontend/package-lock.json [email protected] (npm) is affected by GHSA-g3hv-75wg-m249 Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr frontend/package-lock.json [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr frontend/package-lock.json [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-q2hr-2g5m-vwhr frontend/package-lock.json [email protected] (npm) is affected by GHSA-q2hr-2g5m-vwhr Dependencies (osv-scanner)
medium osv/GHSA-qxg6-89mg-rqv8 frontend/package-lock.json @vitest/[email protected] (npm) is affected by GHSA-qxg6-89mg-rqv8 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-v6wh-96g9-6wx3 frontend/package-lock.json [email protected] (npm) is affected by GHSA-v6wh-96g9-6wx3 Dependencies (osv-scanner)
medium osv/GHSA-w5vr-8v7q-w6rv frontend/package-lock.json [email protected] (npm) is affected by GHSA-w5vr-8v7q-w6rv Dependencies (osv-scanner)
low opengrep/javascript.lang.correctness.missing-template-string-indicator frontend/src/ui/ContextMenu.tsx:128 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator frontend/src/ui/ContextMenu.tsx:128 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator frontend/src/ui/ContextMenu.tsx:128 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low opengrep/javascript.lang.correctness.missing-template-string-indicator frontend/src/ui/ContextMenu.tsx:128 This looks like a JavaScript template string. Are you missing a '$' in front of '{...}'? Lint
low osv/GHSA-6jv3-5f52-599m api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3037, GHSA-6jv3-5f52-599m Dependencies (osv-scanner)
low osv/GHSA-v9pg-7xvm-68hf api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3040, GHSA-v9pg-7xvm-68hf Dependencies (osv-scanner)
low osv/GHSA-vffw-93wf-4j4q api/requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-3041, GHSA-vffw-93wf-4j4q Dependencies (osv-scanner)
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 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 f1d2b562b41424
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 f1d2b562b4141
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-14ef6ececccea4prov-5+qual-2+sec-215%6761
2026-11-14ef6ececccea4prov-4+qual-2+sec-215%6761

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/PartialScience/JSTC/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/PartialScience/JSTC/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/PartialScience/JSTC/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/PartialScience/JSTC/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/PartialScience/JSTC/security.svg)](https://repotrust.synapticcyber.com/r/github.com/PartialScience/JSTC/)
Full text report
  • Repository: https://github.com/PartialScience/JSTC
  • Commit: ef6ececccea4fcf945c9db53a2d015a3fa4af552
  • Generated: 2026-11-14T14:52:01+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) 15 explicit 88% 100%
Code quality 67 adequate 90% 100%
Security 61 weak 85% 100%

AI provenance

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

  • Explicitly attributed share (lower bound): 14.6%
  • Unattributed share in AI-consistent velocity bursts: 10.3%
  • Estimated AI-generated share: 14.6%
AI tool Attributed commits Lines added
Claude Code 11 6,180

Current source lines last changed by AI-attributed commits: 4,002 of 24,298.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 0.0 1.182 0.0x
Security 0.0 0.0 n/a
  • Stylometry index: 0.04 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
2025-10 593 0%
2025-12 14 0%
2026-01 2,051 0%
2026-02 4,158 0%
2026-03 954 0%
2026-07 24,635 0%
2026-08 175 0%
2026-10 9,796 63%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (1b120f73740d)
  • Claude Code: trailer 'Co-Authored-By: Claude' (b06c578fc9b8)
  • Claude Code: trailer 'Co-Authored-By: Claude' (5ea60ed12e41)
  • Claude Code: trailer 'Co-Authored-By: Claude' (1da81bdba049)
  • Claude Code: trailer 'Co-Authored-By: Claude' (2a95c59e3ba1)
  • Claude Code: trailer 'Co-Authored-By: Claude' (04eec52dd5e5)
  • Claude Code: trailer 'Co-Authored-By: Claude' (d4310dd0702c)
  • Claude Code: trailer 'Co-Authored-By: Claude' (741e51e4f7ca)
  • Claude Code: trailer 'Co-Authored-By: Claude' (891e6399cca2)
  • Claude Code: trailer 'Co-Authored-By: Claude' (c29fd5ce044e)
  • Claude Code: trailer 'Co-Authored-By: Claude' (acb5b19e884e)
  • 5,603 lines of first-party code in ~5.2h (1,074 lines/hour, 8 commit session) (1da81bdba049)
  • 1,890 lines of first-party code in ~2.5h (759 lines/hour, 2 commit session) (9c82eeccfe9e)
  • 2,462 lines of first-party code in ~4.0h (616 lines/hour, 2 commit session) (51c805a08cf8)
  • step-by-step narration comment: * first, so any real angle is accepted. */ (frontend/src)

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 adequate: test-to-source ratio 0.41, no CI test run detected; 8% of function code in complex or long functions; 3% duplicated lines. Weakest area: docs.

Area Score
Complexity (lizard) 78
Duplication 85
Code smells (Opengrep) 79
Tests and CI 51
Documentation 40
Type safety 74
Process (Scorecard review/maintenance) n/a
  • Functions: 1,508; mean complexity 2.2, 90th percentile 5; 13 complex and 3 long functions
  • Duplicated lines: 2.7% of 18,032 compared
  • Tests: 10,025 test lines for 24,298 source lines (ratio 0.41); CI test commands: none detected; 63% of recent source commits also change tests
  • Docs missing or thin: license, contributing, changelog

Most complex functions:

Security

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

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 97
Vulnerable dependencies (OSV) 6
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Known vulnerabilities: 58 in 21 packages (critical 4, high 32, medium 18, low 4)

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

Top findings

Severity Finding Location
critical osv/GHSA-5gmw-xhrv-c9v3: [email protected] (npm) is affected by GHSA-5gmw-xhrv-c9v3 frontend/package-lock.json
critical osv/GHSA-85c8-ppgw-ccpr: [email protected] (npm) is affected by GHSA-85c8-ppgw-ccpr frontend/package-lock.json
critical osv/GHSA-5xrq-8626-4rwp: [email protected] (npm) is affected by GHSA-5xrq-8626-4rwp frontend/package-lock.json
critical osv/GHSA-pqg4-j6r4-53mv: [email protected] (npm) is affected by GHSA-pqg4-j6r4-53mv package-lock.json
high opengrep/dockerfile.security.missing-user: By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium] .devcontainer/Dockerfile:64
high osv/PYSEC-2024-38: [email protected] (PyPI) is affected by PYSEC-2024-38 api/requirements.txt
high osv/GHSA-2jv5-9r88-3w3p: [email protected] (PyPI) is affected by PYSEC-2026-1850, GHSA-2jv5-9r88-3w3p api/requirements.txt
high osv/GHSA-59g5-xgcq-4qw3: [email protected] (PyPI) is affected by PYSEC-2026-1851, GHSA-59g5-xgcq-4qw3 api/requirements.txt
high osv/GHSA-wp53-j4wj-2cfg: [email protected] (PyPI) is affected by PYSEC-2026-1852, GHSA-wp53-j4wj-2cfg api/requirements.txt
high osv/GHSA-5rvq-cxj2-64vf: [email protected] (PyPI) is affected by PYSEC-2026-3036, GHSA-5rvq-cxj2-64vf api/requirements.txt
high osv/GHSA-pp6c-gr5w-3c5g: [email protected] (PyPI) is affected by PYSEC-2026-3039, GHSA-pp6c-gr5w-3c5g api/requirements.txt
high osv/GHSA-6j4f-fj2g-mc7p: [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p frontend/package-lock.json
high osv/GHSA-mh99-v99m-4gvg: [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg frontend/package-lock.json
high osv/GHSA-qhr7-859c-m2p7: [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 frontend/package-lock.json
high osv/GHSA-rgw5-rvv9-x895: [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 frontend/package-lock.json
high osv/GHSA-6j4f-fj2g-mc7p: [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p frontend/package-lock.json
high osv/GHSA-mh99-v99m-4gvg: [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg frontend/package-lock.json
high osv/GHSA-qhr7-859c-m2p7: [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 frontend/package-lock.json
high osv/GHSA-rgw5-rvv9-x895: [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 frontend/package-lock.json
high osv/GHSA-6j4f-fj2g-mc7p: [email protected] (npm) is affected by GHSA-6j4f-fj2g-mc7p frontend/package-lock.json
high osv/GHSA-mh99-v99m-4gvg: [email protected] (npm) is affected by GHSA-mh99-v99m-4gvg frontend/package-lock.json
high osv/GHSA-qhr7-859c-m2p7: [email protected] (npm) is affected by GHSA-qhr7-859c-m2p7 frontend/package-lock.json
high osv/GHSA-rgw5-rvv9-x895: [email protected] (npm) is affected by GHSA-rgw5-rvv9-x895 frontend/package-lock.json
high osv/GHSA-73wf-gq98-2v4g: [email protected] (npm) is affected by GHSA-73wf-gq98-2v4g frontend/package-lock.json
high osv/GHSA-c83g-rgw3-j3cx: [email protected] (npm) is affected by GHSA-c83g-rgw3-j3cx frontend/package-lock.json

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: 24,298; test lines: 10,025
Language Lines
TypeScript 17,138
Python 17,117
JavaScript 68