RepoTrust

Leaderboard github.com

gvmfhy/constitutional-seq

Principle-based canonical sequence retrieval for mRNA therapeutics. An AI-safety inspired approach to biological sequence selection.

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

unreviewed-ai-risk

AI provenance

76%

explicit

Confidence
84%
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

77/100

adequate

Confidence
85%
Coverage
100%

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

AI provenance

76% explicit

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

How the score is built

  • Explicitly attributed share76%
  • Unattributed share in AI-pace bursts9%
  • Estimated AI-generated share76%
  • AI tool configuration files0
  • Work sessions at AI pace2
  • Releases at AI pacenot measured
  • Coding-style index (1.0+ means possible)0.97

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Claude Code613,9312025-07-222025-08-06

Lines added per month all AI-attributed share

  1. 2025-0712,863 · 100% AI
  2. 2025-085,511 · 19% AI
  3. 2026-090 · 0% AI

Findings in AI-attributed lines vs the rest

From git blame: 9,515 lines trace to AI-attributed commits, 2,374 to others. Reported, not scored.

Findings per 1,000 linesAI-attributedOtherRatio
Code quality3.782.111.80×
Security0.320.00—

Evidence by analyzer

Explicit AI attributionok7 items
attributed_commit_share
10.9%
attributed_commits
6
attributed_loc
13,931
attributed_loc_share
75.8%
commits
55
effective_loc
18,374
tools_detected
1
AI tool configurationok
artifacts
0
tools_configured
0
workflow_agents
0
Commit velocityok2 items
excluded_import_loc
10,156
flagged_loc
4,220
flagged_loc_share
51.4%
flagged_units
2
max_loc_per_hour
822.01
measured_loc
8,218
median_loc_per_hour
242.57
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
8
Release velocityskipped
Coding styleok3 items
count:assistant_voice
0
count:emoji_in_code
15
count:narrated_steps
2
count:placeholder
1
files:assistant_voice
0
files:emoji_in_code
6
files:narrated_steps
2
files:placeholder
1
index
0.97
lines_scanned
11,889
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
1.26
per_kloc:narrated_steps
0.17
per_kloc:placeholder
0.08
Findings in AI-written linesok
ai_lines
9,515
blame_failures
0
files_blamed
38
other_lines
2,374
quality:ai_findings
36
quality:ai_per_kloc
3.78
quality:other_findings
5
quality:other_per_kloc
2.11
quality:ratio
1.80
security:ai_findings
3
security:ai_per_kloc
0.32
security:other_findings
0
security:other_per_kloc
0

Code quality

52 weak

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

How the score is built

  • Complexity46
  • Duplication54
  • Lint and smells40
  • Tests and CI49
  • Documentation65
  • Type safety100
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
14
function_nloc
6,834
functions
350
long_functions
6
many_param_functions
7
mean_ccn
4.34
p90_ccn
9
risky_nloc_share
25.9%
Duplication (jscpd)ok10 items
compared_lines
8,880
duplicated_lines
909
duplicated_share
10.2%
files
38
Lintok
category:best-practice
36
category:maintainability
5
findings
41
scanned_lines
11,889
weighted_findings
43
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
no
ci_files
0
cochange_commits
31
cochange_share
19.4%
source_lines
11,889
test_lines
5,019
test_ratio
0.42
Documentationok2 items
  • README.md README.md
  • LICENSE LICENSE
check:changelog
no
check:contributing
no
check:license
yes
check:readme
yes
readme_lines
183
Type safetyok1 item
  • Python strict type checking: pyproject.toml pyproject.toml
check:low_escape_density
yes
check:strict_config
yes
escapes
47
escapes_per_kloc
3.95

Security

77 adequate

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

How the score is built

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

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
16
declared
16
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
1
findings_medium
1
parse_errors
0
scanned_lines
11,889
weighted_findings
1.15
Dependencies (osv-scanner)ok
penalty
25
vulnerabilities
20
vulnerable_packages
5
vulns_critical
0
vulns_high
9
vulns_low
0
vulns_medium
11
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
9.1%
unpinned_manifests
0
Release downloadsok
binary_assets
0
signals
0
suspicious
0

Findings

11 high52 medium1 low

SeverityRuleLocationMessageTool
high opengrep/python.lang.best-practice.arbitrary-sleep src/genbank_tool/network_recovery.py:99 time.sleep() call; did you mean to leave this in? Lint
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-5wmx-573v-2qwq requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-89, GHSA-5wmx-573v-2qwq 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-q2q7-5pp4-w6pg requirements.txt [email protected] (PyPI) is affected by PYSEC-2021-108, GHSA-q2q7-5pp4-w6pg 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 PYSEC-2023-192, 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)
high opengrep/python.lang.security.use-defused-xml src/genbank_tool/mane_selector.py:221 The Python documentation recommends using `defusedxml` instead of `xml` because the native Python `xml` library is vulnerable to XML External Entity (XXE) attacks. These attacks can leak confidential data and "XML bombs" can cause... Static analysis (opengrep)
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/genbank_tool/batch_processor.py:38 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/genbank_tool/batch_processor.py:44 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/genbank_tool/cache_manager.py:112 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/genbank_tool/cache_manager.py:165 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/genbank_tool/cache_manager.py:331 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/genbank_tool/cache_manager.py:360 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.pass-body-fn src/genbank_tool/cli_enhanced.py:245 `pass` is the body of function progress_callback. Consider removing this or raise NotImplementedError() if this is a TODO Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses src/genbank_tool/cli_old.py:171 Is "is_valid" a function or an attribute? If it is a function, you may have meant validation_result.is_valid() because validation_result.is_valid is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/genbank_tool/cli_old.py:54 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/genbank_tool/config.py:104 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/genbank_tool/config.py:81 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.is-function-without-parentheses src/genbank_tool/data_validator.py:447 Is "is_valid" a function or an attribute? If it is a function, you may have meant r.is_valid() because r.is_valid is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses src/genbank_tool/data_validator.py:472 Is "is_valid" a function or an attribute? If it is a function, you may have meant r.is_valid() because r.is_valid is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/genbank_tool/error_handler.py:440 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/genbank_tool/error_handler.py:462 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/genbank_tool/error_handler.py:495 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/genbank_tool/error_handler.py:597 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/genbank_tool/gene_resolver.py:152 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/genbank_tool/gene_resolver.py:170 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/genbank_tool/gui/main_window.py:676 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/genbank_tool/hgnc_resolver.py:237 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/genbank_tool/hgnc_resolver.py:267 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/genbank_tool/input_parser.py:103 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/genbank_tool/input_parser.py:215 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/genbank_tool/input_parser.py:269 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/genbank_tool/input_parser.py:280 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/genbank_tool/input_parser.py:79 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/genbank_tool/logging_config.py:296 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.best-practice.unspecified-open-encoding src/genbank_tool/mane_selector.py:452 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/genbank_tool/mane_selector.py:473 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.requests.best-practice.use-raise-for-status src/genbank_tool/network_recovery.py:62 There's an HTTP request made with requests, but the raise_for_status() utility method isn't used. This can result in request errors going unnoticed and your code behaving in unexpected ways, such as if your authorization API returns a... Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses src/genbank_tool/output_formatter.py:154 Is "is_valid" a function or an attribute? If it is a function, you may have meant validation.is_valid() because validation.is_valid is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses src/genbank_tool/output_formatter.py:183 Is "is_valid" a function or an attribute? If it is a function, you may have meant validation.is_valid() because validation.is_valid is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/genbank_tool/sequence_retriever.py:117 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/genbank_tool/sequence_retriever.py:99 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/genbank_tool/uniprot_canonical.py:271 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/genbank_tool/uniprot_canonical.py:58 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/genbank_tool/uniprot_downloader.py:186 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.requests.best-practice.use-timeout src/genbank_tool/uniprot_downloader.py:57 Detected a 'requests' call without a timeout set. By default, 'requests' calls wait until the connection is closed. This means a 'requests' call without a timeout will hang the program if a response is never received. Consider setting a... Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding src/genbank_tool/uniprot_downloader.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 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-5phf-pp7p-vc2r requirements.txt [email protected] (PyPI) is affected by PYSEC-2021-59, GHSA-5phf-pp7p-vc2r Dependencies (osv-scanner)
medium osv/GHSA-6p56-wp2h-9hxr requirements.txt [email protected] (PyPI) is affected by GHSA-6p56-wp2h-9hxr Dependencies (osv-scanner)
medium osv/GHSA-9hjg-9r4m-mvj7 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1872, GHSA-9hjg-9r4m-mvj7 Dependencies (osv-scanner)
medium osv/GHSA-9wx4-h78v-vm56 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1873, GHSA-9wx4-h78v-vm56 Dependencies (osv-scanner)
medium osv/GHSA-fpfv-jqm9-f5jm requirements.txt [email protected] (PyPI) is affected by GHSA-fpfv-jqm9-f5jm Dependencies (osv-scanner)
medium osv/GHSA-g4mx-q9vg-27p4 requirements.txt [email protected] (PyPI) is affected by PYSEC-2023-212, GHSA-g4mx-q9vg-27p4 Dependencies (osv-scanner)
medium osv/GHSA-gc5v-m9x4-r6x2 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-2275, GHSA-gc5v-m9x4-r6x2 Dependencies (osv-scanner)
medium osv/GHSA-j8r2-6x86-q33q requirements.txt [email protected] (PyPI) is affected by PYSEC-2023-74, GHSA-j8r2-6x86-q33q 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)
medium osv/GHSA-x3vf-39hj-gxr4 requirements.txt [email protected] (PyPI) is affected by PYSEC-2026-1221, GHSA-x3vf-39hj-gxr4 Dependencies (osv-scanner)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected src/genbank_tool/mane_database.py:32 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)
low opengrep/python.lang.security.audit.insecure-transport.requests.request-session-with-http src/genbank_tool/network_recovery.py:142 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 f1d2b562b41441
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityskipped—0
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.120
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-148f8c546d3e20prov-5+qual-2+sec-276%5277
2026-11-148f8c546d3e20prov-4+qual-2+sec-276%5277

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/gvmfhy/constitutional-seq/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/gvmfhy/constitutional-seq/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/gvmfhy/constitutional-seq/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/gvmfhy/constitutional-seq/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/gvmfhy/constitutional-seq/security.svg)](https://repotrust.synapticcyber.com/r/github.com/gvmfhy/constitutional-seq/)
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) 76 explicit 84% 100%
Code quality 52 weak 90% 100%
Security 77 adequate 85% 100%

AI provenance

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

  • Explicitly attributed share (lower bound): 75.8%
  • Unattributed share in AI-consistent velocity bursts: 9.4%
  • Estimated AI-generated share: 75.8%
AI tool Attributed commits Lines added
Claude Code 6 13,931

Current source lines last changed by AI-attributed commits: 9,515 of 11,889.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 3.783 2.106 1.8x
Security 0.315 0.0 n/a
  • Stylometry index: 0.97 per 1,000 lines (narrated steps 2, placeholders 1, assistant phrasing 0, emoji 15). Reported as a signal, not scored.
Month Lines added Attributed to AI
2025-07 12,863 100%
2025-08 5,511 19%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (ff2bbd648624)
  • Claude Code: trailer 'Co-Authored-By: Claude' (48c6eec9b97e)
  • Claude Code: trailer 'Co-Authored-By: Claude' (cb2c828b616a)
  • Claude Code: trailer 'Co-Authored-By: Claude' (905724183361)
  • Claude Code: trailer 'Co-Authored-By: Claude' (0a072e0e80b5)
  • Claude Code: trailer 'Co-Authored-By: Claude' (c28d369d018c)
  • 2,793 lines of first-party code in ~3.4h (822 lines/hour, 13 commit session) (5ac9b924af4c)
  • 1,427 lines of first-party code in ~2.4h (598 lines/hour, 1 commit session) (cb2c828b616a)
  • step-by-step narration comment: # First, get gene ID (src/genbank_)
  • placeholder or demo-only phrasing: # This is a simplified version - would need proper GenBank parsing (src/genbank_)
  • step-by-step narration comment: # First, get the UniProt entry (src/genbank_)

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

Area Score
Complexity (lizard) 46
Duplication 54
Code smells (Opengrep) 40
Tests and CI 49
Documentation 65
Type safety 100
Process (Scorecard review/maintenance) n/a
  • Functions: 350; mean complexity 4.3, 90th percentile 9; 14 complex and 6 long functions
  • Duplicated lines: 10.2% of 8,880 compared
  • Tests: 5,019 test lines for 11,889 source lines (ratio 0.42); CI test commands: none detected; 19% of recent source commits also change tests
  • Docs missing or thin: contributing, changelog

Most complex functions:

Security

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

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

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

Top findings

Severity Finding Location
high opengrep/python.lang.security.use-defused-xml: The Python documentation recommends using defusedxml instead of xml because the native Python xml library is vulnerable to XML External Entity (XXE) attacks. These attacks can leak confidential data and "XML bombs" can cause denial of service. [confidence low] src/genbank_tool/mane_selector.py:221
high osv/GHSA-5wmx-573v-2qwq: [email protected] (PyPI) is affected by PYSEC-2026-89, GHSA-5wmx-573v-2qwq requirements.txt
high osv/GHSA-q2q7-5pp4-w6pg: [email protected] (PyPI) is affected by PYSEC-2021-108, GHSA-q2q7-5pp4-w6pg requirements.txt
high osv/GHSA-v845-jxx5-vc9f: [email protected] (PyPI) is affected by PYSEC-2023-192, GHSA-v845-jxx5-vc9f requirements.txt
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
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected: 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 the URLs, or consider using the 'requests' library instead. [confidence low] src/genbank_tool/mane_database.py:32
medium osv/GHSA-x3vf-39hj-gxr4: [email protected] (PyPI) is affected by PYSEC-2026-1221, GHSA-x3vf-39hj-gxr4 requirements.txt
medium osv/GHSA-6p56-wp2h-9hxr: [email protected] (PyPI) is affected by GHSA-6p56-wp2h-9hxr requirements.txt
medium osv/GHSA-fpfv-jqm9-f5jm: [email protected] (PyPI) is affected by GHSA-fpfv-jqm9-f5jm requirements.txt
medium osv/GHSA-j8r2-6x86-q33q: [email protected] (PyPI) is affected by PYSEC-2023-74, GHSA-j8r2-6x86-q33q requirements.txt
medium osv/GHSA-9hjg-9r4m-mvj7: [email protected] (PyPI) is affected by PYSEC-2026-1872, GHSA-9hjg-9r4m-mvj7 requirements.txt
medium osv/GHSA-9wx4-h78v-vm56: [email protected] (PyPI) is affected by PYSEC-2026-1873, GHSA-9wx4-h78v-vm56 requirements.txt
medium osv/GHSA-gc5v-m9x4-r6x2: [email protected] (PyPI) is affected by PYSEC-2026-2275, GHSA-gc5v-m9x4-r6x2 requirements.txt
medium osv/GHSA-5phf-pp7p-vc2r: [email protected] (PyPI) is affected by PYSEC-2021-59, GHSA-5phf-pp7p-vc2r requirements.txt
medium osv/GHSA-g4mx-q9vg-27p4: [email protected] (PyPI) is affected by PYSEC-2023-212, GHSA-g4mx-q9vg-27p4 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
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] src/genbank_tool/network_recovery.py:142

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: 11,889; test lines: 5,019
Language Lines
Python 16,908