RepoTrust

Leaderboard github.com

noahweidig/tiger-roads-scraper

Convert TIGER Roads into Shapefiles

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

unreviewed-ai-risk

AI provenance

73%

explicit

Confidence
81%
Coverage
100%

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

Code quality

35/100

poor

Confidence
90%
Coverage
100%

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

Security

84/100

adequate

Confidence
85%
Coverage
100%

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

AI provenance

73% explicit

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

How the score is built

  • Explicitly attributed share73%
  • Unattributed share in AI-pace bursts0%
  • Estimated AI-generated share73%
  • AI tool configuration files1
  • 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 Code221,5672026-05-292026-10-14

Lines added per month all AI-attributed share

  1. 2026-05614 · 18% AI
  2. 2026-06631 · 97% AI
  3. 2026-08892 · 94% AI
  4. 2026-090 · 0% AI
  5. 2026-102 · 100% AI

Findings in AI-attributed lines vs the rest

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

Findings per 1,000 linesAI-attributedOtherRatio
Code quality3.2126.58—
Security1.600.00—

Evidence by analyzer

Explicit AI attributionok23 items
attributed_commit_share
51.2%
attributed_commits
22
attributed_loc
1,567
attributed_loc_share
73.3%
commits
43
effective_loc
2,139
tools_detected
1
AI tool configurationok1 item
artifacts
1
earliest_adoption
2026-06-01
tools_configured
1
workflow_agents
0
Commit velocityok
excluded_import_loc
0
flagged_loc
0
flagged_loc_share
0.0%
flagged_units
0
max_loc_per_hour
126
measured_loc
2,139
median_loc_per_hour
73.75
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
13
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,549
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
1,248
blame_failures
0
files_blamed
7
other_lines
301
quality:ai_findings
4
quality:ai_per_kloc
3.21
quality:other_findings
8
quality:other_per_kloc
26.58
security:ai_findings
2
security:ai_per_kloc
1.60
security:other_findings
0
security:other_per_kloc
0

Code quality

35 poor

Code quality is poor: test-to-source ratio 0.00, no CI test run detected; 36% of function code in complex or long functions; 2% duplicated lines. Weakest area: testing.

How the score is built

  • Complexity34
  • Duplication89
  • Lint and smells8
  • Tests and CI0
  • Documentation80
  • Type safety40
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok4 items
complex_functions
4
function_nloc
880
functions
51
long_functions
0
many_param_functions
0
mean_ccn
6.80
p90_ccn
14
risky_nloc_share
36.1%
Duplication (jscpd)ok2 items
compared_lines
1,240
duplicated_lines
24
duplicated_share
1.9%
files
7
Lintok
category:best-practice
11
category:maintainability
1
findings
12
scanned_lines
1,549
weighted_findings
16
Tests and CIok
check:ci_present
no
check:ci_runs_lint
no
check:ci_runs_tests
no
check:has_tests
no
check:test_ratio
no
check:tests_cochange
no
ci_files
0
cochange_commits
21
cochange_share
0.0%
source_lines
1,549
test_lines
0
test_ratio
0
Documentationok3 items
  • README.md README.md
  • LICENSE LICENSE
  • CONTRIBUTING.md CONTRIBUTING.md
check:changelog
no
check:contributing
yes
check:license
yes
check:readme
yes
readme_lines
207
Type safetyok
check:low_escape_density
yes
check:strict_config
no
escapes
0
escapes_per_kloc
0

Security

84 adequate

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

How the score is built

  • Secrets100
  • Static analysis (SAST)82
  • Vulnerable dependencies88
  • CI workflowsnot measured
  • Security posture40
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
3
declared
3
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
2
findings_high
1
findings_low
1
findings_medium
0
parse_errors
0
scanned_lines
1,549
weighted_findings
0.90
Dependencies (osv-scanner)ok
penalty
8
vulnerabilities
10
vulnerable_packages
1
vulns_critical
0
vulns_high
7
vulns_low
0
vulns_medium
3
vulns_unknown
0
CI workflows (zizmor)skipped
Security postureok1 item
  • Security policy: SECURITY.md SECURITY.md
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
yes
check:signed_commits
no
signed_commit_share
11.6%
unpinned_manifests
0
Release downloadsok
binary_assets
0
signals
0
suspicious
0

Findings

10 high13 medium1 low

SeverityRuleLocationMessageTool
high opengrep/python.lang.best-practice.arbitrary-sleep 01_generate_urls.py:13 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.best-practice.arbitrary-sleep 05_upload_to_gee.py:80 time.sleep() call; did you mean to leave this in? Lint
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit 04_convert_zips.py:191 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-2xpw-w6gg-jr37 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1994, GHSA-2xpw-w6gg-jr37 Dependencies (osv-scanner)
high osv/GHSA-38jv-5279-wg99 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1996, GHSA-38jv-5279-wg99 Dependencies (osv-scanner)
high osv/GHSA-8988-9cw3-xx77 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4175, GHSA-8988-9cw3-xx77 Dependencies (osv-scanner)
high osv/GHSA-gm62-xv2j-4w53 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1998, GHSA-gm62-xv2j-4w53 Dependencies (osv-scanner)
high osv/GHSA-qccp-gfcp-xxvc requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-141, GHSA-qccp-gfcp-xxvc Dependencies (osv-scanner)
high osv/GHSA-v845-jxx5-vc9f requirements.txt [email protected] (PyPI) is affected by GHSA-v845-jxx5-vc9f Dependencies (osv-scanner)
high osv/GHSA-vxq7-64xx-v4gw requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-4177, GHSA-vxq7-64xx-v4gw Dependencies (osv-scanner)
medium opengrep/python.lang.best-practice.unspecified-open-encoding 01_generate_urls.py:106 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 01_generate_urls.py:121 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 01_generate_urls.py:21 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 01_generate_urls.py:73 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 01_generate_urls.py:89 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 02_check_urls.py:145 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 02_check_urls.py:156 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 02_check_urls.py:36 `return` only makes sense inside a function Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding 03_download_zips.py:179 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 05_upload_to_gee.py:114 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 osv/GHSA-34jh-p97f-mpxf requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1995, GHSA-34jh-p97f-mpxf Dependencies (osv-scanner)
medium osv/GHSA-g4mx-q9vg-27p4 requirements.txt [email protected] (PyPI) is affected by GHSA-g4mx-q9vg-27p4 Dependencies (osv-scanner)
medium osv/GHSA-pq67-6m6q-mj2v requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1999, GHSA-pq67-6m6q-mj2v Dependencies (osv-scanner)
low opengrep/python.lang.security.audit.insecure-transport.requests.request-session-with-http 03_download_zips.py:66 Detected a request using 'http://'. This request will be unencrypted. Use 'https://' instead. [confidence medium] 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 f1d2b562b41412
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityskipped—0
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.110
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b4142
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-14f8622dcc4633prov-5+qual-2+sec-273%3584
2026-11-14f8622dcc4633prov-4+qual-2+sec-273%3584

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/noahweidig/tiger-roads-scraper/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/noahweidig/tiger-roads-scraper/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/noahweidig/tiger-roads-scraper/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/noahweidig/tiger-roads-scraper/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/noahweidig/tiger-roads-scraper/security.svg)](https://repotrust.synapticcyber.com/r/github.com/noahweidig/tiger-roads-scraper/)
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) 73 explicit 81% 100%
Code quality 35 poor 90% 100%
Security 84 adequate 85% 100%

AI provenance

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

  • Explicitly attributed share (lower bound): 73.3%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 73.3%
AI tool Attributed commits Lines added
Claude Code 22 1,567
  • AI tooling configured in repo: generic-agent

Current source lines last changed by AI-attributed commits: 1,248 of 1,549.

Too few lines in one group to compare finding densities.

Month Lines added Attributed to AI
2026-05 614 18%
2026-06 631 97%
2026-08 892 94%
2026-10 2 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 poor: test-to-source ratio 0.00, no CI test run detected; 36% of function code in complex or long functions; 2% duplicated lines. Weakest area: testing.

Area Score
Complexity (lizard) 34
Duplication 89
Code smells (Opengrep) 8
Tests and CI 0
Documentation 80
Type safety 40
Process (Scorecard review/maintenance) n/a
  • Functions: 51; mean complexity 6.8, 90th percentile 14; 4 complex and 0 long functions
  • Duplicated lines: 1.9% of 1,240 compared
  • Tests: 0 test lines for 1,549 source lines (ratio 0.00); CI test commands: none detected; 0% of recent source commits also change tests
  • Docs missing or thin: changelog

Most complex functions:

Security

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

Area Score
Secrets (gitleaks, tree + history) 100
Static analysis (Opengrep) 82
Vulnerable dependencies (OSV) 88
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 40
OpenSSF Scorecard n/a
  • Known vulnerabilities: 10 in 1 packages (critical 0, high 7, medium 3, low 0)

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

Top findings

Severity Finding Location
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] 04_convert_zips.py:191
high osv/GHSA-qccp-gfcp-xxvc: [email protected] (PyPI) is affected by PYSEC-2026-141, GHSA-qccp-gfcp-xxvc requirements.txt
high osv/GHSA-2xpw-w6gg-jr37: [email protected] (PyPI) is affected by PYSEC-2026-1994, GHSA-2xpw-w6gg-jr37 requirements.txt
high osv/GHSA-38jv-5279-wg99: [email protected] (PyPI) is affected by PYSEC-2026-1996, GHSA-38jv-5279-wg99 requirements.txt
high osv/GHSA-gm62-xv2j-4w53: [email protected] (PyPI) is affected by PYSEC-2026-1998, GHSA-gm62-xv2j-4w53 requirements.txt
high osv/GHSA-8988-9cw3-xx77: [email protected] (PyPI) is affected by PYSEC-2026-4175, GHSA-8988-9cw3-xx77 requirements.txt
high osv/GHSA-vxq7-64xx-v4gw: [email protected] (PyPI) is affected by PYSEC-2026-4177, GHSA-vxq7-64xx-v4gw requirements.txt
high osv/GHSA-v845-jxx5-vc9f: [email protected] (PyPI) is affected by GHSA-v845-jxx5-vc9f requirements.txt
medium osv/GHSA-34jh-p97f-mpxf: [email protected] (PyPI) is affected by PYSEC-2026-1995, GHSA-34jh-p97f-mpxf requirements.txt
medium osv/GHSA-pq67-6m6q-mj2v: [email protected] (PyPI) is affected by PYSEC-2026-1999, GHSA-pq67-6m6q-mj2v requirements.txt
medium osv/GHSA-g4mx-q9vg-27p4: [email protected] (PyPI) is affected by GHSA-g4mx-q9vg-27p4 requirements.txt
low opengrep/python.lang.security.audit.insecure-transport.requests.request-session-with-http: Detected a request using 'http://'. This request will be unencrypted. Use 'https://' instead. [confidence medium] 03_download_zips.py:66

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,549; test lines: 0
Language Lines
Python 1,549