RepoTrust

Leaderboard github.com

ggirelli/folia-web

Folia: Multi-modality Rust Static Website Generator

  • View repository ↗
  • Rust
  • ★ 1
  • commit 7f2f7a1486b1
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

100%

explicit

Confidence
92%
Coverage
100%

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

Code quality

82/100

strong

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

100% explicit

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

How the score is built

  • Explicitly attributed share100%
  • Unattributed share in AI-pace bursts0%
  • Estimated AI-generated share100%
  • AI tool configuration files1
  • Work sessions at AI pace6
  • Releases at AI pace0
  • Coding-style index (1.0+ means possible)0.12

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Claude Code8941,3712026-10-252026-11-12

Lines added per month all AI-attributed share

  1. 2026-1010,748 · 100% AI
  2. 2026-1130,623 · 100% AI

Findings in AI-attributed lines vs the rest

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

Findings per 1,000 linesAI-attributedOtherRatio
Code quality0.47——
Security0.63——

Evidence by analyzer

Explicit AI attributionok26 items
attributed_commit_share
100.0%
attributed_commits
89
attributed_loc
41,371
attributed_loc_share
100.0%
commits
89
effective_loc
41,371
tools_detected
1
AI tool configurationok1 item
artifacts
1
earliest_adoption
2026-10-25
tools_configured
1
workflow_agents
0
Commit velocityok6 items
excluded_import_loc
0
flagged_loc
21,661
flagged_loc_share
52.4%
flagged_units
6
max_loc_per_hour
1,796.35
measured_loc
41,371
median_loc_per_hour
476.98
pr_timed_units
48
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
61
Release velocityok
flagged_releases
0
max_loc_per_day
1,759.60
releases
1
Coding styleok
count:assistant_voice
0
count:emoji_in_code
9
count:narrated_steps
0
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
3
files:narrated_steps
0
files:placeholder
0
index
0.12
lines_scanned
38,160
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0.24
per_kloc:narrated_steps
0
per_kloc:placeholder
0
Findings in AI-written linesok
ai_lines
38,160
blame_failures
0
files_blamed
130
other_lines
0
quality:ai_findings
18
quality:ai_per_kloc
0.47
quality:other_findings
0
security:ai_findings
24
security:ai_per_kloc
0.63
security:other_findings
0

Code quality

82 strong

Code quality is strong: test-to-source ratio 0.03, CI runs tests; 7% of function code in complex or long functions; 2% duplicated lines. Weakest area: type safety.

How the score is built

  • Complexity82
  • Duplication91
  • Lint and smells93
  • Tests and CI73
  • Documentation100
  • Type safety40
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
21
function_nloc
24,518
functions
1,511
long_functions
6
many_param_functions
2
mean_ccn
2.79
p90_ccn
7
risky_nloc_share
6.8%
Duplication (jscpd)ok10 items
compared_lines
28,617
duplicated_lines
432
duplicated_share
1.5%
files
130
Lintok
category:correctness
16
category:maintainability
2
findings
18
scanned_lines
38,160
weighted_findings
11.25
Tests and CIok5 items
  • CI config: .github/workflows/ci.yml .github/workflows/ci.yml
  • CI config: .github/workflows/docs.yml .github/workflows/docs.yml
  • CI config: .github/workflows/release.yml .github/workflows/release.yml
  • CI runs tests (go test, cargo test, just test)
  • CI runs linters (clippy, rustfmt)
check:ci_present
yes
check:ci_runs_lint
yes
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
no
check:tests_cochange
no
ci_files
3
cochange_commits
63
cochange_share
15.9%
source_lines
38,160
test_lines
1,301
test_ratio
0.03
Documentationok4 items
  • README.md README.md
  • LICENSE LICENSE
  • CONTRIBUTING.md CONTRIBUTING.md
  • CHANGELOG.md CHANGELOG.md
check:changelog
yes
check:contributing
yes
check:license
yes
check:readme
yes
readme_lines
66
Type safetyok
check:low_escape_density
yes
check:strict_config
no
escapes
0
escapes_per_kloc
0

Security

77 adequate

Security posture is adequate: 1 known vulnerabilities in 1 dependencies; 21 high-severity workflow issues. Weakest area: ci actions.

How the score is built

  • Secrets100
  • Static analysis (SAST)94
  • Vulnerable dependencies95
  • CI workflows1
  • Security posture60
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
21
declared
21
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
24
findings_high
0
findings_low
23
findings_medium
1
parse_errors
4
scanned_lines
38,160
weighted_findings
6.35
Dependencies (osv-scanner)ok
penalty
3
vulnerabilities
1
vulnerable_packages
1
vulns_critical
0
vulns_high
0
vulns_low
0
vulns_medium
0
vulns_unknown
1
CI workflows (zizmor)ok
findings
27
findings_high
21
findings_low
0
findings_medium
6
penalty
262
workflows
3
Security postureok8 items
  • Dependency updates: .github/dependabot.yml .github/dependabot.yml
  • crates/blog/Cargo.toml has no lockfile alongside it (unpinned dependencies) crates/blog/Cargo.toml
  • crates/core/Cargo.toml has no lockfile alongside it (unpinned dependencies) crates/core/Cargo.toml
  • crates/folia/Cargo.toml has no lockfile alongside it (unpinned dependencies) crates/folia/Cargo.toml
  • crates/garden/Cargo.toml has no lockfile alongside it (unpinned dependencies) crates/garden/Cargo.toml
  • crates/micro/Cargo.toml has no lockfile alongside it (unpinned dependencies) crates/micro/Cargo.toml
  • crates/pages/Cargo.toml has no lockfile alongside it (unpinned dependencies) crates/pages/Cargo.toml
  • crates/parity/Cargo.toml has no lockfile alongside it (unpinned dependencies) crates/parity/Cargo.toml
check:dependency_updates
yes
check:lockfiles
no
check:security_policy
no
check:signed_commits
yes
signed_commit_share
100.0%
unpinned_manifests
7
Release downloadsok2 items
binary_assets
2
signals
1
suspicious
0

Findings

21 high17 medium32 low

SeverityRuleLocationMessageTool
high zizmor/unpinned-uses .github/workflows/ci.yml:26 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:27 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:30 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:31 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:45 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:46 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:47 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:54 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:55 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:61 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:62 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:63 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:66 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:76 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:77 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/ci.yml:81 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/docs.yml:25 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/docs.yml:28 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/docs.yml:29 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/docs.yml:32 unpinned action reference [confidence high] CI workflows (zizmor)
high zizmor/unpinned-uses .github/workflows/docs.yml:48 unpinned action reference [confidence high] CI workflows (zizmor)
medium opengrep/python.lang.maintainability.return-not-in-function parity/accept.py:386 `return` only makes sense inside a function Lint
medium opengrep/python.lang.correctness.common-mistakes.string-concat-in-list parity/accept.py:446 Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list? Lint
medium opengrep/python.lang.maintainability.return-not-in-function parity/accept.py:537 `return` only makes sense inside a function Lint
medium opengrep/python.lang.correctness.common-mistakes.string-concat-in-list parity/accept.py:816 Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list? Lint
medium opengrep/python.lang.correctness.common-mistakes.string-concat-in-list parity/accept.py:826 Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list? Lint
medium opengrep/python.lang.correctness.common-mistakes.string-concat-in-list parity/accept.py:845 Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list? Lint
medium opengrep/python.lang.correctness.common-mistakes.string-concat-in-list parity/accept.py:849 Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list? Lint
medium opengrep/python.lang.correctness.common-mistakes.string-concat-in-list parity/accept.py:856 Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list? Lint
medium opengrep/python.lang.correctness.common-mistakes.string-concat-in-list parity/accept.py:895 Detected strings that are implicitly concatenated inside a list. Python will implicitly concatenate strings when not explicitly delimited. Was this supposed to be individual elements of the list? Lint
medium zizmor/dependabot-cooldown .github/dependabot.yml:6 insufficient cooldown in Dependabot updates [confidence high] CI workflows (zizmor)
medium zizmor/artipacked .github/workflows/ci.yml:26 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
medium zizmor/artipacked .github/workflows/ci.yml:45 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
medium zizmor/artipacked .github/workflows/ci.yml:54 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
medium zizmor/artipacked .github/workflows/ci.yml:61 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
medium zizmor/artipacked .github/workflows/ci.yml:76 credential persistence through GitHub Actions artifacts [confidence low] CI workflows (zizmor)
medium osv/RUSTSEC-2025-0141 Cargo.lock [email protected] (crates.io) is affected by RUSTSEC-2025-0141 Dependencies (osv-scanner)
medium opengrep/ruby.lang.security.dangerous-exec parity/jekyll/folia_dump.rb:195 Detected non-static command inside Open3.capture2. Audit the input to 'Open3.capture2'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute... Static analysis (opengrep)
low opengrep/bash.lang.correctness.unquoted-variable-expansion-in-command scripts/accept-negative.sh:346 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 scripts/baseline.sh:118 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 scripts/baseline.sh:137 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 scripts/baseline.sh:138 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 scripts/baseline.sh:264 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 scripts/baseline.sh:288 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 scripts/baseline.sh:292 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 scripts/baseline.sh:83 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 scripts/check-file-length.sh:16 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/rust.lang.security.temp-dir crates/core/src/content/git.rs:107 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/core/src/content/git.rs:187 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/config.rs:382 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/config.rs:404 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/discover/tests.rs:12 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/output/tests.rs:8 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/render/tests.rs:11 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/sass.rs:96 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/sass/tests.rs:12 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/serve/files.rs:157 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/folia/src/serve/http.rs:153 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/baseline.rs:123 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/builds.rs:211 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/builds/tests.rs:31 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/coverage/tests.rs:526 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/document/ledger/tests.rs:60 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/document/ledger/tests.rs:821 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/document/tests.rs:279 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/links/register/tests.rs:31 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/links/tests.rs:134 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/liquid/tests.rs:127 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/routes.rs:447 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... Static analysis (opengrep)
low opengrep/rust.lang.security.temp-dir crates/parity/src/warnings/tests.rs:191 temp_dir should not be used for security operations. From the docs: 'The temporary directory may be shared among users, or between processes with different privileges; thus, the creation of any files or directories in the temporary... 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 provenanceokprov-40
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 f1d2b562b41418
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityokzizmor 1.32.027
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.11
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b41424
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-147f2f7a1486b1prov-5+qual-2+sec-2100%8277
2026-11-147f2f7a1486b1prov-4+qual-2+sec-2100%8277

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/ggirelli/folia-web/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/ggirelli/folia-web/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/ggirelli/folia-web/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/ggirelli/folia-web/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/ggirelli/folia-web/security.svg)](https://repotrust.synapticcyber.com/r/github.com/ggirelli/folia-web/)
Full text report
  • Repository: https://github.com/ggirelli/folia-web
  • Commit: 7f2f7a1486b140b110c16ee819c845fbcc4b5ffc
  • Generated: 2026-11-14T14:52:04+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) 100 explicit 92% 100%
Code quality 82 strong 90% 100%
Security 77 adequate 85% 100%

AI provenance

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

  • Explicitly attributed share (lower bound): 100.0%
  • Unattributed share in AI-consistent velocity bursts: 0.0%
  • Estimated AI-generated share: 100.0%
AI tool Attributed commits Lines added
Claude Code 89 41,371
  • AI tooling configured in repo: claude-code

Current source lines last changed by AI-attributed commits: 38,160 of 38,160.

Too few lines in one group to compare finding densities.

  • Stylometry index: 0.12 per 1,000 lines (narrated steps 0, placeholders 0, assistant phrasing 0, emoji 9). Reported as a signal, not scored.
Month Lines added Attributed to AI
2026-10 10,748 100%
2026-11 30,623 100%

Evidence

  • Claude Code: trailer 'Co-authored-by: Claude' (7f2f7a1486b1)
  • Claude Code: trailer 'Co-authored-by: Claude' (a1d83c7c283e)
  • Claude Code: message 'Generated with [Claude Code' (d7b722d990df)
  • Claude Code: trailer 'Co-authored-by: Claude' (0c740dc72725)
  • Claude Code: message 'Generated with [Claude Code' (c216d038bf27)
  • Claude Code: message 'Generated with [Claude Code' (c541b2b74b02)
  • Claude Code: trailer 'Co-authored-by: Claude' (d9964b5bce7d)
  • Claude Code: trailer 'Co-authored-by: Claude' (83b5119561ea)
  • Claude Code: trailer 'Co-authored-by: Claude' (b9d0d880904a)
  • Claude Code: trailer 'Co-authored-by: Claude' (c341e54d5b49)
  • Claude Code: trailer 'Co-authored-by: Claude' (0d2561b95314)
  • Claude Code: trailer 'Co-authored-by: Claude' (5e47da9fce39)
  • Claude Code: PR description attribution (b49e35fc6c97)
  • Claude Code: PR description attribution (04cc9d1c940f)
  • Claude Code: PR description attribution (6ced507fd3c1)

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 strong: test-to-source ratio 0.03, CI runs tests; 7% of function code in complex or long functions; 2% duplicated lines. Weakest area: type safety.

Area Score
Complexity (lizard) 82
Duplication 91
Code smells (Opengrep) 93
Tests and CI 73
Documentation 100
Type safety 40
Process (Scorecard review/maintenance) n/a
  • Functions: 1,511; mean complexity 2.8, 90th percentile 7; 21 complex and 6 long functions
  • Duplicated lines: 1.5% of 28,617 compared
  • Tests: 1,301 test lines for 38,160 source lines (ratio 0.03); CI test commands: go test, cargo test, just test; 16% of recent source commits also change tests
  • Docs missing or thin: none

Most complex functions:

Security

Security posture is adequate: 1 known vulnerabilities in 1 dependencies; 21 high-severity workflow issues. Weakest area: ci actions.

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

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

Top findings

Severity Finding Location
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:26
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:27
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:30
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:31
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:45
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:46
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:47
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:54
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:55
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:61
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:62
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:63
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:66
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:76
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:77
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/ci.yml:81
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/docs.yml:25
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/docs.yml:28
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/docs.yml:29
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/docs.yml:32
high zizmor/unpinned-uses: unpinned action reference [confidence high] .github/workflows/docs.yml:48
medium opengrep/ruby.lang.security.dangerous-exec: Detected non-static command inside Open3.capture2. Audit the input to 'Open3.capture2'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute arbitrary code. [confidence medium] parity/jekyll/folia_dump.rb:195
medium osv/RUSTSEC-2025-0141: [email protected] (crates.io) is affected by RUSTSEC-2025-0141 Cargo.lock
medium zizmor/dependabot-cooldown: insufficient cooldown in Dependabot updates [confidence high] .github/dependabot.yml:6
medium zizmor/artipacked: credential persistence through GitHub Actions artifacts [confidence low] .github/workflows/ci.yml:26

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.

Distribution signals

Signals consistent with a repository that exists to distribute a download. They are heuristics, not a verdict; release files were not downloaded or inspected.

Repository profile

  • Source lines: 38,160; test lines: 1,301
Language Lines
Rust 35,340
Shell 2,375
Python 1,417
Ruby 294
JavaScript 35