Leaderboard github.com
maragudk/hallucinationsearch
Hallucinated search results and websites.
AI provenance
0%
possible
- Confidence
- 51%
- Coverage
- 100%
Estimated share of AI-generated code. Explicit attribution is a lower bound.
Code quality
83/100
strong
- Confidence
- 90%
- Coverage
- 100%
Complexity, duplication, lint density, tests, CI, docs and review process.
Security
59/100
weak
- Confidence
- 85%
- Coverage
- 100%
Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.
AI provenance
0% possible
Weak signals consistent with AI-assisted development. 1 commit(s) carry explicit AI attribution, too few to characterize the codebase.
How the score is built
- Explicitly attributed share0%
- Unattributed share in AI-pace bursts0%
- Estimated AI-generated share0%
- AI tool configuration files2
- Work sessions at AI pace0
- Releases at AI pacenot measured
- Coding-style index (1.0+ means possible)0.16
Attributed AI tools
| Tool | Commits | Lines added | First seen | Last seen |
|---|---|---|---|---|
| GitHub Copilot coding agent | 1 | 0 | 2025-09-18 | 2025-09-18 |
| Claude Code | 1 | 0 | 2025-09-18 | 2025-09-18 |
Lines added per month all AI-attributed share
- 2025-09771 · 0% AI
- 2025-104 · 0% AI
- 2025-1179 · 0% AI
- 2026-0214 · 0% AI
- 2026-0397 · 0% AI
- 2026-043,747 · 0% AI
Findings in AI-attributed lines vs the rest
From git blame: 0 lines trace to AI-attributed commits, 3,195 to others. Too few lines in one group for a fair comparison. Reported, not scored.
| Findings per 1,000 lines | AI-attributed | Other | Ratio |
|---|---|---|---|
| Code quality | — | 2.19 | — |
| Security | — | 4.70 | — |
Evidence by analyzer
Explicit AI attributionok3 items
- GitHub Copilot coding agent: 1 attributed commits, 0 lines added
- Claude Code: 1 attributed commits, 0 lines added
- Claude Code: message 'claude.ai/code'
- attributed_commit_share
- 2.3%
- attributed_commits
- 1
- attributed_loc
- 0
- attributed_loc_share
- 0.0%
- commits
- 44
- effective_loc
- 4,712
- tools_detected
- 2
AI tool configurationok2 items
- artifacts
- 2
- earliest_adoption
- 2025-09-18
- tools_configured
- 2
- workflow_agents
- 0
Commit velocityok
- excluded_import_loc
- 0
- flagged_loc
- 0
- flagged_loc_share
- 0.0%
- flagged_units
- 0
- max_loc_per_hour
- 715.12
- measured_loc
- 4,712
- median_loc_per_hour
- 472.66
- pr_timed_units
- 8
- pre_ai_era_burst_loc
- 0
- pre_ai_era_bursts
- 0
- pre_ai_era_measured_loc
- 0
- work_units
- 18
Release velocityskipped
Coding styleok
- count:assistant_voice
- 0
- count:emoji_in_code
- 1
- count:narrated_steps
- 0
- count:placeholder
- 0
- files:assistant_voice
- 0
- files:emoji_in_code
- 1
- files:narrated_steps
- 0
- files:placeholder
- 0
- index
- 0.16
- lines_scanned
- 3,195
- per_kloc:assistant_voice
- 0
- per_kloc:emoji_in_code
- 0.31
- per_kloc:narrated_steps
- 0
- per_kloc:placeholder
- 0
Findings in AI-written linesok
- ai_lines
- 0
- blame_failures
- 0
- files_blamed
- 35
- other_lines
- 3,195
- quality:ai_findings
- 0
- quality:other_findings
- 7
- quality:other_per_kloc
- 2.19
- security:ai_findings
- 0
- security:other_findings
- 15
- security:other_per_kloc
- 4.70
Code quality
83 strong
Code quality is strong: test-to-source ratio 0.26, CI runs tests; 1% of function code in complex or long functions; 4% duplicated lines. Weakest area: docs.
How the score is built
- Complexity96
- Duplication80
- Lint and smells72
- Tests and CI88
- Documentation65
- Type safetynot measured
- Review processnot measured
Evidence by analyzer
Complexity (lizard)ok10 items
- it in public/scripts/datastar.js: complexity 30, 1 lines
- Xe in public/scripts/datastar.js: complexity 30, 1 lines
- qt in public/scripts/datastar.js: complexity 29, 1 lines
- sniffImageMime in http/image.go: complexity 23, 14 lines
- Jt in public/scripts/datastar.js: complexity 23, 1 lines
- D in public/scripts/datastar.js: complexity 22, 1 lines
- apply in public/scripts/datastar.js: complexity 21, 1 lines
- wn in public/scripts/datastar.js: complexity 20, 1 lines
- An in public/scripts/datastar.js: complexity 18, 1 lines
- apply in public/scripts/datastar.js: complexity 18, 1 lines
- complex_functions
- 14
- function_nloc
- 1,886
- functions
- 315
- long_functions
- 0
- many_param_functions
- 0
- mean_ccn
- 3.80
- p90_ccn
- 9
- risky_nloc_share
- 1.4%
Duplication (jscpd)ok5 items
- 6+ duplicated lines: html/results.go:161 and html/results.go:186
- 6+ duplicated lines: http/search.go:399 and http/search.go:489
- 6+ duplicated lines: jobs/ads.go:4 and jobs/search.go:4
- 6+ duplicated lines: llm/llm.go:171 and llm/llm.go:290
- 6+ duplicated lines: model/search.go:29 and model/search.go:52
- compared_lines
- 2,248
- duplicated_lines
- 84
- duplicated_share
- 3.7%
- files
- 35
Lintok
- category:correctness
- 7
- findings
- 7
- scanned_lines
- 3,095
- weighted_findings
- 4
Tests and CIok6 items
- CI config: .github/workflows/cd.yml
.github/workflows/cd.yml - CI config: .github/workflows/ci.yml
.github/workflows/ci.yml - CI config: .github/workflows/compatibility.yml
.github/workflows/compatibility.yml - CI config: .github/workflows/security.yml
.github/workflows/security.yml - CI runs tests (go test)
- CI runs linters (golangci-lint)
- 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
- yes
- ci_files
- 4
- cochange_commits
- 21
- cochange_share
- 33.3%
- source_lines
- 3,195
- test_lines
- 846
- test_ratio
- 0.26
Documentationok2 items
- README.md
README.md - LICENSE
LICENSE
- check:changelog
- no
- check:contributing
- no
- check:license
- yes
- check:readme
- yes
- readme_lines
- 20
Type safetyskipped
Security
59 weak
Security posture is weak: 53 known vulnerabilities in 13 dependencies; 1 high-severity SAST findings; 22 high-severity workflow issues. Weakest area: ci actions.
How the score is built
- Secrets100
- Static analysis (SAST)51
- Vulnerable dependencies37
- CI workflows1
- Security posture100
- OpenSSF Scorecardnot measured
Evidence by analyzer
OpenSSF Scorecardskipped
no published OpenSSF Scorecard result for this repo
Package registriesskipped
no registry dependencies declared
Secrets (gitleaks)ok
- secrets_current
- 0
- secrets_history
- 0
- secrets_low_confidence
- 0
- secrets_nonprod
- 0
Static analysis (opengrep)ok
- findings
- 16
- findings_high
- 1
- findings_low
- 0
- findings_medium
- 15
- parse_errors
- 0
- scanned_lines
- 3,095
- weighted_findings
- 5.90
Dependencies (osv-scanner)ok
- penalty
- 59
- vulnerabilities
- 53
- vulnerable_packages
- 13
- vulns_critical
- 8
- vulns_high
- 5
- vulns_low
- 4
- vulns_medium
- 12
- vulns_unknown
- 24
CI workflows (zizmor)ok
- findings
- 29
- findings_high
- 22
- findings_low
- 1
- findings_medium
- 6
- penalty
- 280.30
- workflows
- 4
Security postureok2 items
- Security policy: https://github.com/maragudk/hallucinationsearch/security/policy
https://github.com/maragudk/hallucinationsearch/security/policy - Dependency updates: .github/dependabot.yml
.github/dependabot.yml
- check:dependency_updates
- yes
- check:lockfiles
- yes
- check:security_policy
- yes
- check:signed_commits
- yes
- signed_commit_share
- 90.9%
- unpinned_manifests
- 0
Release downloadsok
- binary_assets
- 0
- signals
- 0
- suspicious
- 0
Findings
8 critical28 high60 medium9 low
| Severity | Rule | Location | Message | Tool |
|---|---|---|---|---|
| critical | osv/GHSA-5cgq-3rg8-m6cv |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5021, GHSA-5cgq-3rg8-m6cv | Dependencies (osv-scanner) |
| critical | osv/GHSA-89gr-r52h-f8rx |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5019, GHSA-89gr-r52h-f8rx | Dependencies (osv-scanner) |
| critical | osv/GHSA-f5wc-c3c7-36mc |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5006, GHSA-f5wc-c3c7-36mc | Dependencies (osv-scanner) |
| critical | osv/GHSA-jppx-rxg9-jmrx |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5005, GHSA-jppx-rxg9-jmrx | Dependencies (osv-scanner) |
| critical | osv/GHSA-p77j-4mvh-x3m3 |
go.mod | google.golang.org/[email protected] (Go) is affected by GO-2026-4762, GHSA-p77j-4mvh-x3m3 | Dependencies (osv-scanner) |
| critical | osv/GHSA-rm3j-f69w-wqmq |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5020, GHSA-rm3j-f69w-wqmq | Dependencies (osv-scanner) |
| critical | osv/GHSA-vgwf-h737-ff37 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5017, GHSA-vgwf-h737-ff37 | Dependencies (osv-scanner) |
| critical | osv/GHSA-x527-x647-q7gg |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5023, GHSA-x527-x647-q7gg | Dependencies (osv-scanner) |
| high | zizmor/unpinned-uses |
.github/workflows/cd.yml:18 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/cd.yml:21 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/cd.yml:24 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/cd.yml:27 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/cd.yml:34 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:105 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:21 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| 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:29 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:40 | 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:48 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-images |
.github/workflows/ci.yml:60 | unpinned image references [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:71 | 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:94 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/ci.yml:99 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-images |
.github/workflows/compatibility.yml:27 | unpinned image references [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/compatibility.yml:37 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/compatibility.yml:41 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/security.yml:22 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | zizmor/unpinned-uses |
.github/workflows/security.yml:26 | unpinned action reference [confidence high] | CI workflows (zizmor) |
| high | opengrep/dockerfile.security.missing-user |
Dockerfile:48 | By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile... | Static analysis (opengrep) |
| high | osv/GHSA-2v4p-qf9q-27wj |
go.mod | google.golang.org/[email protected] (Go) is affected by GO-2026-6443, GHSA-2v4p-qf9q-27wj | Dependencies (osv-scanner) |
| high | osv/GHSA-hrxh-6v49-42gf |
go.mod | google.golang.org/[email protected] (Go) is affected by GO-2026-6061, GHSA-hrxh-6v49-42gf | Dependencies (osv-scanner) |
| high | osv/GHSA-q4h4-gmj2-qvw2 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5013, GHSA-q4h4-gmj2-qvw2 | Dependencies (osv-scanner) |
| high | osv/GHSA-vp52-pcj8-j9qc |
go.mod | google.golang.org/[email protected] (Go) is affected by GO-2026-6348, GHSA-vp52-pcj8-j9qc | Dependencies (osv-scanner) |
| high | osv/GHSA-w879-237q-wc7r |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5018, GHSA-w879-237q-wc7r | Dependencies (osv-scanner) |
| medium | opengrep/go.lang.correctness.permissions.incorrect-default-permission |
cmd/app/main.go:60 | Detected file permissions that are set to more than `0600` (user/owner can read and write). Setting file permissions to higher than `0600` is most likely unnecessary and violates the principle of least privilege. Instead, set... | Lint |
| medium | opengrep/go.lang.correctness.permissions.incorrect-default-permission |
llm/image_store.go:79 | Detected file permissions that are set to more than `0600` (user/owner can read and write). Setting file permissions to higher than `0600` is most likely unnecessary and violates the principle of least privilege. Instead, set... | Lint |
| medium | opengrep/javascript.lang.correctness.no-stringify-keys |
public/scripts/datastar.js:8 | JSON stringify does not produce a stable key ordering, and should not be relied on for producing object keys. Consider using json-stable-stringify instead. | Lint |
| medium | zizmor/dependabot-cooldown |
.github/dependabot.yml:3 | insufficient cooldown in Dependabot updates [confidence high] | CI workflows (zizmor) |
| medium | zizmor/excessive-permissions |
.github/workflows/ci.yml:1 | overly broad permissions [confidence medium] | CI workflows (zizmor) |
| medium | zizmor/excessive-permissions |
.github/workflows/ci.yml:16 | overly broad permissions [confidence medium] | CI workflows (zizmor) |
| medium | zizmor/excessive-permissions |
.github/workflows/ci.yml:35 | overly broad permissions [confidence medium] | CI workflows (zizmor) |
| medium | zizmor/excessive-permissions |
.github/workflows/ci.yml:54 | overly broad permissions [confidence medium] | CI workflows (zizmor) |
| medium | zizmor/excessive-permissions |
.github/workflows/ci.yml:87 | overly broad permissions [confidence medium] | CI workflows (zizmor) |
| medium | osv/GHSA-3fxj-6jh8-hvhx |
go.mod | github.com/go-chi/chi/[email protected] (Go) is affected by GO-2026-5774, GHSA-3fxj-6jh8-hvhx | Dependencies (osv-scanner) |
| medium | osv/GHSA-45gg-vh54-h5m9 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5014, GHSA-45gg-vh54-h5m9 | Dependencies (osv-scanner) |
| medium | osv/GHSA-5cv4-jp36-h3mw |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5028, GHSA-5cv4-jp36-h3mw | Dependencies (osv-scanner) |
| medium | osv/GHSA-78mq-xcr3-xm33 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5015, GHSA-78mq-xcr3-xm33 | Dependencies (osv-scanner) |
| medium | osv/GHSA-9m57-25v3-79x9 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5033, GHSA-9m57-25v3-79x9 | Dependencies (osv-scanner) |
| medium | osv/GHSA-j6qf-3m9c-vwj3 |
go.mod | github.com/go-chi/chi/[email protected] (Go) is affected by GHSA-j6qf-3m9c-vwj3 | Dependencies (osv-scanner) |
| medium | osv/GHSA-q7gw-24fr-5p69 |
go.mod | go.opentelemetry.io/otel/[email protected] (Go) is affected by GHSA-q7gw-24fr-5p69 | Dependencies (osv-scanner) |
| medium | osv/GHSA-q7gw-24fr-5p69 |
go.mod | go.opentelemetry.io/otel/[email protected] (Go) is affected by GHSA-q7gw-24fr-5p69 | Dependencies (osv-scanner) |
| medium | osv/GHSA-qc2q-p7wx-3px3 |
go.mod | google.golang.org/[email protected] (Go) is affected by GO-2026-6441, GHSA-qc2q-p7wx-3px3 | Dependencies (osv-scanner) |
| medium | osv/GHSA-qpw4-5x99-6vjp |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5016, GHSA-qpw4-5x99-6vjp | Dependencies (osv-scanner) |
| medium | osv/GHSA-w8rr-5gcm-pp58 |
go.mod | go.opentelemetry.io/otel/exporters/otlp/otlpmetric/[email protected] (Go) is affected by GO-2026-4985, GHSA-w8rr-5gcm-pp58 | Dependencies (osv-scanner) |
| medium | osv/GHSA-w8rr-5gcm-pp58 |
go.mod | go.opentelemetry.io/otel/exporters/otlp/otlptrace/[email protected] (Go) is affected by GO-2026-4985, GHSA-w8rr-5gcm-pp58 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-4918 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-4918 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5024 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5024 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5025 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5025 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5026 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5026 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5027 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5027 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5029 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5029 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5030 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5030 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5158 |
go.mod | go.opentelemetry.io/[email protected] (Go) is affected by GO-2026-5158 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5775 |
go.mod | github.com/go-chi/chi/[email protected] (Go) is affected by GO-2026-5775 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5777 |
go.mod | github.com/go-chi/chi/[email protected] (Go) is affected by GO-2026-5777 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5932 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5932 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5942 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5942 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-5970 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-5970 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6303 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6303 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6354 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6354 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6355 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6355 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6603 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6603 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6610 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6610 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6611 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6611 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6612 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6612 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6617 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6617 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6629 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6629 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6860 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6860 | Dependencies (osv-scanner) |
| medium | osv/GO-2026-6866 |
go.mod | golang.org/x/[email protected] (Go) is affected by GO-2026-6866 | Dependencies (osv-scanner) |
| medium | opengrep/go.lang.security.audit.xss.no-direct-write-to-responsewriter |
http/image.go:113 | Detected directly writing or similar in 'http.ResponseWriter.write()'. This bypasses HTML escaping that prevents cross-site scripting vulnerabilities. Instead, use the 'html/template' package and render data using 'template.Execute()'.... | Static analysis (opengrep) |
| medium | opengrep/go.lang.security.audit.xss.no-fprintf-to-responsewriter |
http/search.go:348 | Detected 'Fprintf' or similar writing to 'http.ResponseWriter'. This bypasses HTML escaping that prevents cross-site scripting vulnerabilities. Instead, use the 'html/template' package to render data to users. [confidence low] | Static analysis (opengrep) |
| medium | opengrep/go.lang.security.audit.xss.no-direct-write-to-responsewriter |
http/search.go:535 | Detected directly writing or similar in 'http.ResponseWriter.write()'. This bypasses HTML escaping that prevents cross-site scripting vulnerabilities. Instead, use the 'html/template' package and render data using 'template.Execute()'.... | Static analysis (opengrep) |
| medium | opengrep/go.lang.security.audit.crypto.math-random-used |
llm/constraints.go:5 | Do not use `math/rand`. Use `crypto/rand` instead. [confidence medium] | Static analysis (opengrep) |
| medium | opengrep/javascript.lang.security.audit.detect-non-literal-regexp |
public/scripts/datastar.js:2 | RegExp() called with a `e` function argument, this might allow an attacker to cause a Regular Expression Denial-of-Service (ReDoS) within your application as RegExP blocks the main thread. For this reason, it is recommended to use... | Static analysis (opengrep) |
| medium | opengrep/javascript.lang.security.audit.prototype-pollution.prototype-pollution-loop |
public/scripts/datastar.js:2 | 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 |
public/scripts/datastar.js:2 | 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 |
public/scripts/datastar.js:2 | 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 |
public/scripts/datastar.js:2 | 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 |
public/scripts/datastar.js:2 | 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 |
public/scripts/datastar.js:2 | 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.jquery.security.audit.jquery-insecure-selector |
public/scripts/datastar.js:5 | 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 |
public/scripts/datastar.js:5 | 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.unsafe-dynamic-method |
public/scripts/datastar.js:5 | 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.html-in-template-string |
public/scripts/datastar.js:8 | This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... | Static analysis (opengrep) |
| low | opengrep/javascript.lang.correctness.useless-assignment |
public/scripts/datastar.js:8 | `s` is assigned twice; the first assignment is useless | Lint |
| low | opengrep/javascript.lang.correctness.useless-assignment |
public/scripts/datastar.js:8 | `s` is assigned twice; the first assignment is useless | Lint |
| low | opengrep/javascript.lang.correctness.useless-assignment |
public/scripts/datastar.js:8 | `a` is assigned twice; the first assignment is useless | Lint |
| low | opengrep/javascript.lang.correctness.useless-assignment |
public/scripts/datastar.js:8 | `s` is assigned twice; the first assignment is useless | Lint |
| low | zizmor/artipacked |
.github/workflows/cd.yml:18 | credential persistence through GitHub Actions artifacts [confidence low] | CI workflows (zizmor) |
| low | osv/GHSA-8wmf-6v46-5gfg |
go.mod | go.opentelemetry.io/otel/exporters/otlp/[email protected] (Go) is affected by GO-2026-6505, GHSA-8wmf-6v46-5gfg | Dependencies (osv-scanner) |
| low | osv/GHSA-8wmf-6v46-5gfg |
go.mod | go.opentelemetry.io/otel/exporters/otlp/otlptrace/[email protected] (Go) is affected by GO-2026-6505, GHSA-8wmf-6v46-5gfg | Dependencies (osv-scanner) |
| low | osv/GHSA-8wmf-6v46-5gfg |
go.mod | go.opentelemetry.io/otel/exporters/otlp/otlptrace/[email protected] (Go) is affected by GO-2026-6505, GHSA-8wmf-6v46-5gfg | Dependencies (osv-scanner) |
| low | osv/GHSA-8wmf-6v46-5gfg |
go.mod | go.opentelemetry.io/otel/[email protected] (Go) is affected by GO-2026-6505, GHSA-8wmf-6v46-5gfg | Dependencies (osv-scanner) |
Tools and coverage
Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.
| Analyzer | Pillar | Status | Version | Findings | Note |
|---|---|---|---|---|---|
| AI tool configuration | AI provenance | ok | signatures-v1 | 0 | |
| Explicit AI attribution | AI provenance | ok | signatures-v1 | 0 | |
| Release velocity | AI provenance | skipped | — | 0 | |
| Coding style | AI provenance | ok | — | 0 | |
| Commit velocity | AI provenance | ok | prov-4 | 0 | |
| Findings in AI-written lines | AI provenance | ok | git-blame | 0 | |
| Complexity (lizard) | Code quality | ok | lizard 1.25.1 | 0 | |
| Documentation | Code quality | ok | — | 0 | |
| Duplication (jscpd) | Code quality | ok | repotrust-dup-w6 | 0 | |
| Lint | Code quality | ok | opengrep 1.33.1; rules f1d2b562b414 | 7 | |
| Tests and CI | Code quality | ok | — | 0 | |
| Type safety | Code quality | skipped | — | 0 | |
| CI workflows (zizmor) | Security | ok | zizmor 1.32.0 | 29 | |
| Dependencies (osv-scanner) | Security | ok | osv-scanner version: 2.7.1 | 53 | |
| Release downloads | Security | ok | — | 0 | |
| Security posture | Security | ok | — | 0 | |
| Package registries | Security | skipped | — | 0 | no registry dependencies declared |
| Static analysis (opengrep) | Security | ok | opengrep 1.33.1; rules f1d2b562b414 | 16 | |
| OpenSSF Scorecard | Security | skipped | — | 0 | no published OpenSSF Scorecard result for this repo |
| Secrets (gitleaks) | Security | ok | gitleaks 8.30.1 | 0 |
Score history
Scores from different scoring versions aren't directly comparable.
| Scored | Commit | Scoring | AI provenance | Quality | Security |
|---|---|---|---|---|---|
| 2026-11-14 | 11be94fa1682 | prov-5+qual-2+sec-2 | 0% | 83 | 59 |
| 2026-11-14 | 11be94fa1682 | prov-4+qual-2+sec-2 | 0% | 83 | 59 |
Full text report
- Repository: https://github.com/maragudk/hallucinationsearch
- Commit:
11be94fa1682f40fde0159949edecf4283b2d58d - Generated: 2026-11-14T14:52:06+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) | 0 | possible | 51% | 100% |
| Code quality | 83 | strong | 90% | 100% |
| Security | 59 | weak | 85% | 100% |
AI provenance
Weak signals consistent with AI-assisted development. 1 commit(s) carry explicit AI attribution, too few to characterize the codebase.
- Explicitly attributed share (lower bound): 0.0%
- Unattributed share in AI-consistent velocity bursts: 0.0%
- Estimated AI-generated share: 0.0%
| AI tool | Attributed commits | Lines added |
|---|---|---|
| GitHub Copilot coding agent | 1 | 0 |
| Claude Code | 1 | 0 |
- AI tooling configured in repo: claude-code, generic-agent
Current source lines last changed by AI-attributed commits: 0 of 3,195.
Too few lines in one group to compare finding densities.
- Stylometry index: 0.16 per 1,000 lines (narrated steps 0, placeholders 0, assistant phrasing 0, emoji 1). Reported as a signal, not scored.
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2025-09 | 771 | 0% |
| 2025-10 | 4 | 0% |
| 2025-11 | 79 | 0% |
| 2026-02 | 14 | 0% |
| 2026-03 | 97 | 0% |
| 2026-04 | 3,747 | 0% |
Evidence
- Claude Code: message 'claude.ai/code' (e100148c8b92)
- CLAUDE.md (claude-code configuration) (CLAUDE.md)
- AGENTS.md (generic-agent configuration) (AGENTS.md)
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.26, CI runs tests; 1% of function code in complex or long functions; 4% duplicated lines. Weakest area: docs.
| Area | Score |
|---|---|
| Complexity (lizard) | 96 |
| Duplication | 80 |
| Code smells (Opengrep) | 72 |
| Tests and CI | 88 |
| Documentation | 65 |
| Type safety | n/a |
| Process (Scorecard review/maintenance) | n/a |
- Functions: 315; mean complexity 3.8, 90th percentile 9; 14 complex and 0 long functions
- Duplicated lines: 3.7% of 2,248 compared
- Tests: 846 test lines for 3,195 source lines (ratio 0.26); CI test commands: go test; 33% of recent source commits also change tests
- Docs missing or thin: contributing, changelog
Most complex functions:
- it in public/scripts/datastar.js: complexity 30, 1 lines
- Xe in public/scripts/datastar.js: complexity 30, 1 lines
- qt in public/scripts/datastar.js: complexity 29, 1 lines
- sniffImageMime in http/image.go: complexity 23, 14 lines
- Jt in public/scripts/datastar.js: complexity 23, 1 lines
Security
Security posture is weak: 53 known vulnerabilities in 13 dependencies; 1 high-severity SAST findings; 22 high-severity workflow issues. Weakest area: ci actions.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 100 |
| Static analysis (Opengrep) | 51 |
| Vulnerable dependencies (OSV) | 37 |
| CI workflows (zizmor) | 1 |
| Posture (policy, updates, signing, lockfiles) | 100 |
| OpenSSF Scorecard | n/a |
-
Known vulnerabilities: 53 in 13 packages (critical 8, high 5, medium 12, low 4)
-
Posture checks passed: security policy, dependency updates, signed commits, lockfiles; missing: none
Top findings
| Severity | Finding | Location |
|---|---|---|
| critical | osv/GHSA-jppx-rxg9-jmrx: golang.org/x/[email protected] (Go) is affected by GO-2026-5005, GHSA-jppx-rxg9-jmrx |
go.mod |
| critical | osv/GHSA-f5wc-c3c7-36mc: golang.org/x/[email protected] (Go) is affected by GO-2026-5006, GHSA-f5wc-c3c7-36mc |
go.mod |
| critical | osv/GHSA-vgwf-h737-ff37: golang.org/x/[email protected] (Go) is affected by GO-2026-5017, GHSA-vgwf-h737-ff37 |
go.mod |
| critical | osv/GHSA-89gr-r52h-f8rx: golang.org/x/[email protected] (Go) is affected by GO-2026-5019, GHSA-89gr-r52h-f8rx |
go.mod |
| critical | osv/GHSA-rm3j-f69w-wqmq: golang.org/x/[email protected] (Go) is affected by GO-2026-5020, GHSA-rm3j-f69w-wqmq |
go.mod |
| critical | osv/GHSA-5cgq-3rg8-m6cv: golang.org/x/[email protected] (Go) is affected by GO-2026-5021, GHSA-5cgq-3rg8-m6cv |
go.mod |
| critical | osv/GHSA-x527-x647-q7gg: golang.org/x/[email protected] (Go) is affected by GO-2026-5023, GHSA-x527-x647-q7gg |
go.mod |
| critical | osv/GHSA-p77j-4mvh-x3m3: google.golang.org/[email protected] (Go) is affected by GO-2026-4762, GHSA-p77j-4mvh-x3m3 |
go.mod |
| high | opengrep/dockerfile.security.missing-user: By not specifying a USER, a program in the container may run as 'root'. This is a security hazard. If an attacker can control a process running as root, they may have control over the container. Ensure that the last USER in a Dockerfile is a USER other than 'root'. [confidence medium] |
Dockerfile:48 |
| high | osv/GHSA-q4h4-gmj2-qvw2: golang.org/x/[email protected] (Go) is affected by GO-2026-5013, GHSA-q4h4-gmj2-qvw2 |
go.mod |
| high | osv/GHSA-w879-237q-wc7r: golang.org/x/[email protected] (Go) is affected by GO-2026-5018, GHSA-w879-237q-wc7r |
go.mod |
| high | osv/GHSA-hrxh-6v49-42gf: google.golang.org/[email protected] (Go) is affected by GO-2026-6061, GHSA-hrxh-6v49-42gf |
go.mod |
| high | osv/GHSA-vp52-pcj8-j9qc: google.golang.org/[email protected] (Go) is affected by GO-2026-6348, GHSA-vp52-pcj8-j9qc |
go.mod |
| high | osv/GHSA-2v4p-qf9q-27wj: google.golang.org/[email protected] (Go) is affected by GO-2026-6443, GHSA-2v4p-qf9q-27wj |
go.mod |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/cd.yml:18 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/cd.yml:21 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/cd.yml:24 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/cd.yml:27 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/cd.yml:34 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:21 |
| 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:29 |
| high | zizmor/unpinned-uses: unpinned action reference [confidence high] |
.github/workflows/ci.yml:40 |
| 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:48 |
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: 3,195; test lines: 846
| Language | Lines |
|---|---|
| Go | 3,932 |
| SQL | 100 |
| JavaScript | 9 |