RepoTrust

Leaderboard github.com

jIskCoder/work-sessions

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

unreviewed-ai-risk

AI provenance

64%

explicit

Confidence
71%
Coverage
100%

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

Code quality

52/100

weak

Confidence
90%
Coverage
100%

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

Security

66/100

weak

Confidence
85%
Coverage
100%

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

AI provenance

64% explicit

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

How the score is built

  • Explicitly attributed share64%
  • Unattributed share in AI-pace bursts0%
  • Estimated AI-generated share64%
  • AI tool configuration files0
  • Work sessions at AI pace0
  • Releases at AI pacenot measured
  • Coding-style index (1.0+ means possible)0.00

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Claude Code21,0112026-11-102026-11-10

Lines added per month all AI-attributed share

  1. 2026-111,587 · 64% AI

Findings in AI-attributed lines vs the rest

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

Findings per 1,000 linesAI-attributedOtherRatio
Code quality44.618.10—
Security14.150.00—

Evidence by analyzer

Explicit AI attributionok3 items
attributed_commit_share
33.3%
attributed_commits
2
attributed_loc
1,011
attributed_loc_share
63.7%
commits
6
effective_loc
1,587
tools_detected
1
AI tool configurationok
artifacts
0
tools_configured
0
workflow_agents
0
Commit velocityok
excluded_import_loc
0
flagged_loc
0
flagged_loc_share
0.0%
flagged_units
0
max_loc_per_hour
381.43
measured_loc
1,587
median_loc_per_hour
252.75
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
3
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
1,166
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
919
blame_failures
0
files_blamed
7
other_lines
247
quality:ai_findings
41
quality:ai_per_kloc
44.61
quality:other_findings
2
quality:other_per_kloc
8.10
security:ai_findings
13
security:ai_per_kloc
14.15
security:other_findings
0
security:other_per_kloc
0

Code quality

52 weak

Code quality is weak: test-to-source ratio 0.35, no CI test run detected; 16% of function code in complex or long functions; 1% duplicated lines. Weakest area: lint.

How the score is built

  • Complexity61
  • Duplication92
  • Lint and smells1
  • Tests and CI48
  • Documentation65
  • Type safety40
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
12
function_nloc
2,062
functions
1,377
long_functions
1
many_param_functions
0
mean_ccn
3.15
p90_ccn
6
risky_nloc_share
16.3%
Duplication (jscpd)ok1 item
compared_lines
991
duplicated_lines
14
duplicated_share
1.4%
files
7
Lintok
category:best-practice
2
category:correctness
31
category:maintainability
10
findings
43
scanned_lines
1,166
weighted_findings
19.75
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
4
cochange_share
25.0%
source_lines
1,166
test_lines
413
test_ratio
0.35
Documentationok2 items
  • README.md README.md
  • LICENSE LICENSE
check:changelog
no
check:contributing
no
check:license
yes
check:readme
yes
readme_lines
115
Type safetyok
check:low_escape_density
yes
check:strict_config
no
escapes
0
escapes_per_kloc
0

Security

66 weak

Security posture is weak: 4 high-severity SAST findings. Weakest area: posture.

How the score is built

  • Secrets100
  • Static analysis (SAST)22
  • Vulnerable dependencies100
  • CI workflowsnot measured
  • Security posture0
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
2
declared
2
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
13
findings_high
4
findings_low
1
findings_medium
8
parse_errors
1
scanned_lines
1,166
weighted_findings
5.06
Dependencies (osv-scanner)ok
penalty
0
vulnerabilities
0
vulnerable_packages
0
vulns_critical
0
vulns_high
0
vulns_low
0
vulns_medium
0
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
16.7%
unpinned_manifests
0
Release downloadsok
binary_assets
0
signals
0
suspicious
0

Findings

4 high20 medium32 low

SeverityRuleLocationMessageTool
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query app.py:345 Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used... Static analysis (opengrep)
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query app.py:420 Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used... Static analysis (opengrep)
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query app.py:431 Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used... Static analysis (opengrep)
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query app.py:452 Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used... Static analysis (opengrep)
medium opengrep/python.lang.best-practice.unspecified-open-encoding app.py:105 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 import_monday.py:332 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.maintainability.return-not-in-function import_monday.py:42 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:43 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:44 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:45 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:46 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:47 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:48 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:49 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:50 `return` only makes sense inside a function Lint
medium opengrep/python.lang.maintainability.return-not-in-function import_monday.py:51 `return` only makes sense inside a function Lint
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector static/chart.umd.js:13 User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector static/chart.umd.js:13 User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector static/chart.umd.js:13 User controlled data in a `$(...)` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop static/chart.umd.js:13 Possibility of prototype polluting function detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can... Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method static/chart.umd.js:13 Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method static/chart.umd.js:13 Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method static/chart.umd.js:13 Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] Static analysis (opengrep)
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method static/chart.umd.js:13 Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] Static analysis (opengrep)
low opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command macos/make-mac-app.sh:28 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-variable-expansion-in-command macos/make-mac-app.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/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `e` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `i` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `c` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `h` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `o` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `a` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s.garbageCollect` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `e` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `i` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `i` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `i` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `h` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `p` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `p` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `n` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `i` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `n` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `i` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `s` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `c` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:13 `h` is assigned twice; the first assignment is useless Lint
low opengrep/javascript.lang.correctness.useless-assignment static/chart.umd.js:7 `i` is assigned twice; the first assignment is useless Lint
low opengrep/python.lang.security.use-defusedcsv app.py:460 Detected the generation of a CSV file using the built-in `csv` module. If user data is used to generate the data in this file, it is possible that an attacker could inject a formula when the CSV is imported into a spreadsheet... Static analysis (opengrep)

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 f1d2b562b41443
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityskipped—0
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.10
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b41413
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-14b850215f253bprov-5+qual-2+sec-264%5266
2026-11-14b850215f253bprov-4+qual-2+sec-264%5266

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

Scores

Unreviewed AI code risk: a large share of this code is explicitly AI-attributed, and its tests or review process are weak while quality or security scores are low.

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 64 explicit 71% 100%
Code quality 52 weak 90% 100%
Security 66 weak 85% 100%

AI provenance

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

  • Explicitly attributed share (lower bound): 63.7%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 63.7%
AI tool Attributed commits Lines added
Claude Code 2 1,011

Current source lines last changed by AI-attributed commits: 919 of 1,166.

Too few lines in one group to compare finding densities.

Month Lines added Attributed to AI
2026-11 1,587 64%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (6d4c580769cd)
  • Claude Code: trailer 'Co-Authored-By: Claude' (684b506fa00c)

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.35, no CI test run detected; 16% of function code in complex or long functions; 1% duplicated lines. Weakest area: lint.

Area Score
Complexity (lizard) 61
Duplication 92
Code smells (Opengrep) 1
Tests and CI 48
Documentation 65
Type safety 40
Process (Scorecard review/maintenance) n/a
  • Functions: 1,377; mean complexity 3.1, 90th percentile 6; 12 complex and 1 long functions
  • Duplicated lines: 1.4% of 991 compared
  • Tests: 413 test lines for 1,166 source lines (ratio 0.35); CI test commands: none detected; 25% of recent source commits also change tests
  • Docs missing or thin: contributing, changelog

Most complex functions:

Security

Security posture is weak: 4 high-severity SAST findings. Weakest area: posture.

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 22
Vulnerable dependencies (OSV) 100
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 0
OpenSSF Scorecard n/a
  • Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits

Top findings

Severity Finding Location
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] app.py:345
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] app.py:420
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] app.py:431
high opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] app.py:452
medium opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop: Possibility of prototype polluting function detected. By adding or modifying attributes of an object prototype, it is possible to create attributes that exist on every object, or replace critical attributes with malicious ones. This can be problematic if the software depends on existence or non-exis [confidence low] static/chart.umd.js:13
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method: Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] static/chart.umd.js:13
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method: Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] static/chart.umd.js:13
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method: Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] static/chart.umd.js:13
medium opengrep/javascript.lang.security.audit.unsafe-dynamic-method: Using non-static data to retrieve and run functions from the object is dangerous. If the data is user-controlled, it may allow executing arbitrary code. [confidence low] static/chart.umd.js:13
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] static/chart.umd.js:13
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] static/chart.umd.js:13
medium opengrep/javascript.jquery.security.audit.jquery-insecure-selector: User controlled data in a $(...) is an anti-pattern that can lead to XSS vulnerabilities [confidence low] static/chart.umd.js:13
low opengrep/python.lang.security.use-defusedcsv: Detected the generation of a CSV file using the built-in csv module. If user data is used to generate the data in this file, it is possible that an attacker could inject a formula when the CSV is imported into a spreadsheet application that runs an attacker script, which could steal data from the [confidence low] app.py:460

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: 1,166; test lines: 413
Language Lines
Python 1,415
Shell 150
JavaScript 14