Leaderboard github.com
maccman/monocle
Link and news sharing
AI provenance
0%
none-detected
- Confidence
- 44%
- Coverage
- 100%
Estimated share of AI-generated code. Explicit attribution is a lower bound.
Code quality
62/100
weak
- Confidence
- 90%
- Coverage
- 100%
Complexity, duplication, lint density, tests, CI, docs and review process.
Security
52/100
weak
- Confidence
- 85%
- Coverage
- 100%
Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.
AI provenance
0% none-detected
No AI attribution or AI-consistent velocity signals detected.
How the score is built
- Explicitly attributed share0%
- Unattributed share in AI-pace bursts0%
- Estimated AI-generated share0%
- AI tool configuration files0
- Work sessions at AI pace0
- Releases at AI pacenot measured
- Coding-style index (1.0+ means possible)0.00
Lines added per month all AI-attributed share
- 2013-093,453 · 0% AI
- 2013-100 · 0% AI
- 2013-1192 · 0% AI
- 2014-060 · 0% AI
Evidence by analyzer
Explicit AI attributionok
- attributed_commit_share
- 0.0%
- attributed_commits
- 0
- attributed_loc
- 0
- attributed_loc_share
- 0.0%
- commits
- 17
- effective_loc
- 3,545
- tools_detected
- 0
AI tool configurationok
- artifacts
- 0
- tools_configured
- 0
- workflow_agents
- 0
Commit velocityok
- excluded_import_loc
- 3,453
- flagged_loc
- 0
- flagged_loc_share
- 0.0%
- flagged_units
- 0
- max_loc_per_hour
- 14.06
- measured_loc
- 92
- median_loc_per_hour
- 0
- pr_timed_units
- 0
- pre_ai_era_burst_loc
- 0
- pre_ai_era_bursts
- 0
- pre_ai_era_measured_loc
- 92
- work_units
- 6
Release velocityskipped
Coding styleok
- count:assistant_voice
- 0
- count:emoji_in_code
- 0
- count:narrated_steps
- 0
- count:placeholder
- 0
- files:assistant_voice
- 0
- files:emoji_in_code
- 0
- files:narrated_steps
- 0
- files:placeholder
- 0
- index
- 0
- lines_scanned
- 3,311
- per_kloc:assistant_voice
- 0
- per_kloc:emoji_in_code
- 0
- per_kloc:narrated_steps
- 0
- per_kloc:placeholder
- 0
Code quality
62 weak
Code quality is weak: test-to-source ratio 0.00, no CI test run detected; 0% of function code in complex or long functions; 5% duplicated lines. Weakest area: testing.
How the score is built
- Complexity100
- Duplication73
- Lint and smells100
- Tests and CI0
- Documentation65
- Type safetynot measured
- Review processnot measured
Evidence by analyzer
Complexity (lizard)ok
- complex_functions
- 0
- function_nloc
- 894
- functions
- 156
- long_functions
- 0
- many_param_functions
- 0
- mean_ccn
- 1.83
- p90_ccn
- 3
- risky_nloc_share
- 0.0%
Duplication (jscpd)ok6 items
- 6+ duplicated lines: app/models/comment.rb:34 and app/models/post.rb:100
- 6+ duplicated lines: app/routes/static.rb:12 and lib/sinatra/static_cache.rb:3
- 6+ duplicated lines: db/migrations/001_setup.rb:110 and db/migrations/001_setup.rb:124
- 6+ duplicated lines: db/schema.rb:109 and db/schema.rb:123
- 6+ duplicated lines: db/schema.sql:180 and db/schema.sql:217
- 6+ duplicated lines: lib/rack/csrf.rb:9 and lib/rack/session_csrf.rb:3
- compared_lines
- 1,998
- duplicated_lines
- 104
- duplicated_share
- 5.2%
- files
- 51
Lintok
- findings
- 0
- scanned_lines
- 2,546
- weighted_findings
- 0
Tests and CIok
- check:ci_present
- no
- check:ci_runs_lint
- no
- check:ci_runs_tests
- no
- check:has_tests
- no
- check:test_ratio
- no
- check:tests_cochange
- no
- ci_files
- 0
- cochange_commits
- 10
- cochange_share
- 0.0%
- source_lines
- 3,311
- test_lines
- 0
- test_ratio
- 0
Documentationok1 item
- README.md
README.md
- check:changelog
- no
- check:contributing
- no
- check:license
- yes
- check:readme
- yes
- readme_lines
- 34
Type safetyskipped
Security
52 weak
Security posture is weak: 132 known vulnerabilities in 20 dependencies. Weakest area: posture.
How the score is built
- Secrets100
- Static analysis (SAST)63
- Vulnerable dependencies7
- CI workflowsnot measured
- Security posture0
- 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
- 12
- findings_high
- 0
- findings_low
- 0
- findings_medium
- 12
- parse_errors
- 5
- scanned_lines
- 2,546
- weighted_findings
- 3.35
Dependencies (osv-scanner)ok
- penalty
- 163
- vulnerabilities
- 132
- vulnerable_packages
- 20
- vulns_critical
- 7
- vulns_high
- 50
- vulns_low
- 11
- vulns_medium
- 39
- vulns_unknown
- 25
CI workflows (zizmor)skipped
Security postureok
- check:dependency_updates
- no
- check:lockfiles
- yes
- check:security_policy
- no
- check:signed_commits
- no
- signed_commit_share
- 0.0%
- unpinned_manifests
- 0
Release downloadsok
- binary_assets
- 0
- signals
- 0
- suspicious
- 0
Findings
7 critical50 high76 medium11 low
| Severity | Rule | Location | Message | Tool |
|---|---|---|---|---|
| critical | osv/GHSA-34r7-q49f-h37c |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-34r7-q49f-h37c | Dependencies (osv-scanner) |
| critical | osv/GHSA-cr5j-953j-xw5p |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-cr5j-953j-xw5p | Dependencies (osv-scanner) |
| critical | osv/GHSA-fr52-4hqw-p27f |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-fr52-4hqw-p27f | Dependencies (osv-scanner) |
| critical | osv/GHSA-pm55-qfxr-h247 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-pm55-qfxr-h247 | Dependencies (osv-scanner) |
| critical | osv/GHSA-qxcg-xjjg-66mj |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-qxcg-xjjg-66mj | Dependencies (osv-scanner) |
| critical | osv/GHSA-vx9g-377x-xwxq |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-vx9g-377x-xwxq | Dependencies (osv-scanner) |
| critical | osv/GHSA-wq4h-7r42-5hrr |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-wq4h-7r42-5hrr | Dependencies (osv-scanner) |
| high | osv/GHSA-242x-7cm6-4w8j |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-242x-7cm6-4w8j | Dependencies (osv-scanner) |
| high | osv/GHSA-2rr5-8q37-2w7h |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-2rr5-8q37-2w7h | Dependencies (osv-scanner) |
| high | osv/GHSA-34hf-g744-jw64 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-34hf-g744-jw64 | Dependencies (osv-scanner) |
| high | osv/GHSA-3h57-hmj3-gj3p |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-3h57-hmj3-gj3p | Dependencies (osv-scanner) |
| high | osv/GHSA-59gp-qqm7-cw4j |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-59gp-qqm7-cw4j | Dependencies (osv-scanner) |
| high | osv/GHSA-5f9h-9pjv-v6j7 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-5f9h-9pjv-v6j7 | Dependencies (osv-scanner) |
| high | osv/GHSA-5v64-555j-wjxm |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-5v64-555j-wjxm | Dependencies (osv-scanner) |
| high | osv/GHSA-625h-95r8-8xpm |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-625h-95r8-8xpm | Dependencies (osv-scanner) |
| high | osv/GHSA-65f5-mfpf-vfhj |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-65f5-mfpf-vfhj | Dependencies (osv-scanner) |
| high | osv/GHSA-6qvp-r6r3-9p7h |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-6qvp-r6r3-9p7h | Dependencies (osv-scanner) |
| high | osv/GHSA-6xw4-3v39-52mm |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-6xw4-3v39-52mm | Dependencies (osv-scanner) |
| high | osv/GHSA-7359-3c6r-hfc2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-7359-3c6r-hfc2 | Dependencies (osv-scanner) |
| high | osv/GHSA-7553-jr98-vx47 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-7553-jr98-vx47 | Dependencies (osv-scanner) |
| high | osv/GHSA-7hp2-xwpj-95jq |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-7hp2-xwpj-95jq | Dependencies (osv-scanner) |
| high | osv/GHSA-7wqh-767x-r66v |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-7wqh-767x-r66v | Dependencies (osv-scanner) |
| high | osv/GHSA-8474-xrp6-wh69 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-8474-xrp6-wh69 | Dependencies (osv-scanner) |
| high | osv/GHSA-8c56-cpmw-89x7 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-8c56-cpmw-89x7 | Dependencies (osv-scanner) |
| high | osv/GHSA-8vqr-qjwx-82mw |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-8vqr-qjwx-82mw | Dependencies (osv-scanner) |
| high | osv/GHSA-9pr6-grf4-x2fr |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-9pr6-grf4-x2fr | Dependencies (osv-scanner) |
| high | osv/GHSA-c32j-vqhx-rx3x |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-c32j-vqhx-rx3x | Dependencies (osv-scanner) |
| high | osv/GHSA-c4rq-3m3g-8wgx |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-c4rq-3m3g-8wgx | Dependencies (osv-scanner) |
| high | osv/GHSA-cf46-6xxh-pc75 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-cf46-6xxh-pc75 | Dependencies (osv-scanner) |
| high | osv/GHSA-cgx6-hpwq-fhv5 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-cgx6-hpwq-fhv5 | Dependencies (osv-scanner) |
| high | osv/GHSA-crjr-9rc5-ghw8 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-crjr-9rc5-ghw8 | Dependencies (osv-scanner) |
| high | osv/GHSA-gjh7-p2fx-99vx |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-gjh7-p2fx-99vx | Dependencies (osv-scanner) |
| high | osv/GHSA-gx8x-g87m-h5q6 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-gx8x-g87m-h5q6 | Dependencies (osv-scanner) |
| high | osv/GHSA-h2jq-g4cq-5ppq |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-h2jq-g4cq-5ppq | Dependencies (osv-scanner) |
| high | osv/GHSA-hm5p-x4rq-38w4 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-hm5p-x4rq-38w4 | Dependencies (osv-scanner) |
| high | osv/GHSA-hxqx-xwvh-44m2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-hxqx-xwvh-44m2 | Dependencies (osv-scanner) |
| high | osv/GHSA-j6w9-fv6q-3q52 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-j6w9-fv6q-3q52 | Dependencies (osv-scanner) |
| high | osv/GHSA-jc36-42cf-vqwj |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-jc36-42cf-vqwj | Dependencies (osv-scanner) |
| high | osv/GHSA-jphg-qwrw-7w9g |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-jphg-qwrw-7w9g | Dependencies (osv-scanner) |
| high | osv/GHSA-jw9f-hh49-cvp9 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-jw9f-hh49-cvp9 | Dependencies (osv-scanner) |
| high | osv/GHSA-mrxw-mxhj-p664 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-mrxw-mxhj-p664 | Dependencies (osv-scanner) |
| high | osv/GHSA-mxw3-3hh2-x2mh |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-mxw3-3hh2-x2mh | Dependencies (osv-scanner) |
| high | osv/GHSA-p543-xpfm-54cp |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-p543-xpfm-54cp | Dependencies (osv-scanner) |
| high | osv/GHSA-pf6m-fxpq-fg8v |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-pf6m-fxpq-fg8v | Dependencies (osv-scanner) |
| high | osv/GHSA-pp92-crg2-gfv9 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-pp92-crg2-gfv9 | Dependencies (osv-scanner) |
| high | osv/GHSA-pr3h-jjhj-573x |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-pr3h-jjhj-573x | Dependencies (osv-scanner) |
| high | osv/GHSA-qp49-3pvw-x4m5 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-qp49-3pvw-x4m5 | Dependencies (osv-scanner) |
| high | osv/GHSA-r58r-74gx-6wx3 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-r58r-74gx-6wx3 | Dependencies (osv-scanner) |
| high | osv/GHSA-v4f8-2847-rwm7 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-v4f8-2847-rwm7 | Dependencies (osv-scanner) |
| high | osv/GHSA-v569-hp3g-36wr |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-v569-hp3g-36wr | Dependencies (osv-scanner) |
| high | osv/GHSA-v6gp-9mmm-c6p5 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-v6gp-9mmm-c6p5 | Dependencies (osv-scanner) |
| high | osv/GHSA-vmfx-gcfq-wvm2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-vmfx-gcfq-wvm2 | Dependencies (osv-scanner) |
| high | osv/GHSA-w9pc-fmgc-vxvw |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-w9pc-fmgc-vxvw | Dependencies (osv-scanner) |
| high | osv/GHSA-wpv5-97wm-hp9c |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-wpv5-97wm-hp9c | Dependencies (osv-scanner) |
| high | osv/GHSA-ww4x-rwq6-qpgf |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-ww4x-rwq6-qpgf | Dependencies (osv-scanner) |
| high | osv/GHSA-x2fm-93ww-ggvx |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-x2fm-93ww-ggvx | Dependencies (osv-scanner) |
| high | osv/GHSA-xh29-r2w5-wx8m |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-xh29-r2w5-wx8m | Dependencies (osv-scanner) |
| medium | osv/GHSA-22f2-v57c-j9cx |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-22f2-v57c-j9cx | Dependencies (osv-scanner) |
| medium | osv/GHSA-286v-pcf5-25rc |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-286v-pcf5-25rc | Dependencies (osv-scanner) |
| medium | osv/GHSA-2j26-frm8-cmj9 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-2j26-frm8-cmj9 | Dependencies (osv-scanner) |
| medium | osv/GHSA-2qc6-mcvw-92cw |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-2qc6-mcvw-92cw | Dependencies (osv-scanner) |
| medium | osv/GHSA-33pp-3763-mrfp |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-33pp-3763-mrfp | Dependencies (osv-scanner) |
| medium | osv/GHSA-353f-x4gh-cqq8 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-353f-x4gh-cqq8 | Dependencies (osv-scanner) |
| medium | osv/GHSA-4hm9-844j-jmxp |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-4hm9-844j-jmxp | Dependencies (osv-scanner) |
| medium | osv/GHSA-54rr-7fvw-6x8f |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-54rr-7fvw-6x8f | Dependencies (osv-scanner) |
| medium | osv/GHSA-5pq7-52mg-hr42 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-5pq7-52mg-hr42 | Dependencies (osv-scanner) |
| medium | osv/GHSA-5prr-v3j2-97mh |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-5prr-v3j2-97mh | Dependencies (osv-scanner) |
| medium | osv/GHSA-5r2p-j47h-mhpg |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-5r2p-j47h-mhpg | Dependencies (osv-scanner) |
| medium | osv/GHSA-5w6v-399v-w3cc |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-5w6v-399v-w3cc | Dependencies (osv-scanner) |
| medium | osv/GHSA-62qp-3fxm-9wxf |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-62qp-3fxm-9wxf | Dependencies (osv-scanner) |
| medium | osv/GHSA-688c-3x49-6rqj |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-688c-3x49-6rqj | Dependencies (osv-scanner) |
| medium | osv/GHSA-6r34-94wq-jhrc |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-6r34-94wq-jhrc | Dependencies (osv-scanner) |
| medium | osv/GHSA-7g2v-jj9q-g3rg |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-7g2v-jj9q-g3rg | Dependencies (osv-scanner) |
| medium | osv/GHSA-7mqq-6cf9-v2qp |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-7mqq-6cf9-v2qp | Dependencies (osv-scanner) |
| medium | osv/GHSA-7rrm-v45f-jp64 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-7rrm-v45f-jp64 | Dependencies (osv-scanner) |
| medium | osv/GHSA-882p-jqgm-f45g |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-882p-jqgm-f45g | Dependencies (osv-scanner) |
| medium | osv/GHSA-89vf-4333-qx8v |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-89vf-4333-qx8v | Dependencies (osv-scanner) |
| medium | osv/GHSA-8cgq-6mh2-7j6v |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-8cgq-6mh2-7j6v | Dependencies (osv-scanner) |
| medium | osv/GHSA-9c2j-593q-3g82 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-9c2j-593q-3g82 | Dependencies (osv-scanner) |
| medium | osv/GHSA-9fh3-vh3h-q4g3 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-9fh3-vh3h-q4g3 | Dependencies (osv-scanner) |
| medium | osv/GHSA-cg4j-q9v8-6v38 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-cg4j-q9v8-6v38 | Dependencies (osv-scanner) |
| medium | osv/GHSA-fq42-c5rg-92c2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-fq42-c5rg-92c2 | Dependencies (osv-scanner) |
| medium | osv/GHSA-h835-75hw-pj89 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-h835-75hw-pj89 | Dependencies (osv-scanner) |
| medium | osv/GHSA-hrqr-hxpp-chr3 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-hrqr-hxpp-chr3 | Dependencies (osv-scanner) |
| medium | osv/GHSA-hxx2-7vcw-mqr3 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-hxx2-7vcw-mqr3 | Dependencies (osv-scanner) |
| medium | osv/GHSA-j6gc-792m-qgm2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-j6gc-792m-qgm2 | Dependencies (osv-scanner) |
| medium | osv/GHSA-j96r-xvjq-r9pg |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-j96r-xvjq-r9pg | Dependencies (osv-scanner) |
| medium | osv/GHSA-jmhh-w7xp-wg39 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-jmhh-w7xp-wg39 | Dependencies (osv-scanner) |
| medium | osv/GHSA-jppv-gw3r-w3q8 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-jppv-gw3r-w3q8 | Dependencies (osv-scanner) |
| medium | osv/GHSA-jxjr-5h69-qw3w |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-jxjr-5h69-qw3w | Dependencies (osv-scanner) |
| medium | osv/GHSA-m27g-v28p-f9fx |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-m27g-v28p-f9fx | Dependencies (osv-scanner) |
| medium | osv/GHSA-mvxr-6m87-mv2q |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-mvxr-6m87-mv2q | Dependencies (osv-scanner) |
| medium | osv/GHSA-pj73-v5mw-pm9j |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-pj73-v5mw-pm9j | Dependencies (osv-scanner) |
| medium | osv/GHSA-pxvg-2qj5-37jq |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-pxvg-2qj5-37jq | Dependencies (osv-scanner) |
| medium | osv/GHSA-q2ww-5357-x388 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-q2ww-5357-x388 | Dependencies (osv-scanner) |
| medium | osv/GHSA-q4qf-9j86-f5mh |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-q4qf-9j86-f5mh | Dependencies (osv-scanner) |
| medium | osv/GHSA-q86f-fmqf-qrf6 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-q86f-fmqf-qrf6 | Dependencies (osv-scanner) |
| medium | osv/GHSA-qv7j-4883-hwh7 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-qv7j-4883-hwh7 | Dependencies (osv-scanner) |
| medium | osv/GHSA-qv8p-v9qw-wc7g |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-qv8p-v9qw-wc7g | Dependencies (osv-scanner) |
| medium | osv/GHSA-r5hc-9xx5-97rw |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-r5hc-9xx5-97rw | Dependencies (osv-scanner) |
| medium | osv/GHSA-r657-rxjc-j557 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-r657-rxjc-j557 | Dependencies (osv-scanner) |
| medium | osv/GHSA-r95h-9x8f-r3f7 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-r95h-9x8f-r3f7 | Dependencies (osv-scanner) |
| medium | osv/GHSA-rgr4-9jh5-j4j6 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-rgr4-9jh5-j4j6 | Dependencies (osv-scanner) |
| medium | osv/GHSA-v2fc-qm4h-8hqv |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-v2fc-qm4h-8hqv | Dependencies (osv-scanner) |
| medium | osv/GHSA-v3rr-cph9-2g2q |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-v3rr-cph9-2g2q | Dependencies (osv-scanner) |
| medium | osv/GHSA-v9v4-7jp6-8c73 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-v9v4-7jp6-8c73 | Dependencies (osv-scanner) |
| medium | osv/GHSA-vgpv-f759-9wx3 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-vgpv-f759-9wx3 | Dependencies (osv-scanner) |
| medium | osv/GHSA-vpfw-47h7-xj4g |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-vpfw-47h7-xj4g | Dependencies (osv-scanner) |
| medium | osv/GHSA-vr8q-g5c7-m54m |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-vr8q-g5c7-m54m | Dependencies (osv-scanner) |
| medium | osv/GHSA-vvfq-8hwr-qm4m |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-vvfq-8hwr-qm4m | Dependencies (osv-scanner) |
| medium | osv/GHSA-wfpw-mmfh-qq69 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-wfpw-mmfh-qq69 | Dependencies (osv-scanner) |
| medium | osv/GHSA-whrj-4476-wvmp |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-whrj-4476-wvmp | Dependencies (osv-scanner) |
| medium | osv/GHSA-wvg4-6p58-3gh3 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-wvg4-6p58-3gh3 | Dependencies (osv-scanner) |
| medium | osv/GHSA-wx95-c6cv-8532 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-wx95-c6cv-8532 | Dependencies (osv-scanner) |
| medium | osv/GHSA-x7rv-cr6v-4vm4 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-x7rv-cr6v-4vm4 | Dependencies (osv-scanner) |
| medium | osv/GHSA-x8cg-fq8g-mxfx |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-x8cg-fq8g-mxfx | Dependencies (osv-scanner) |
| medium | osv/GHSA-xc9x-jj77-9p9j |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-xc9x-jj77-9p9j | Dependencies (osv-scanner) |
| medium | osv/GHSA-xgr2-v94m-rc9g |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-xgr2-v94m-rc9g | Dependencies (osv-scanner) |
| medium | osv/GHSA-xj5v-6v4g-jfw6 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-xj5v-6v4g-jfw6 | Dependencies (osv-scanner) |
| medium | osv/GHSA-xjqg-9jvg-fgx2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-xjqg-9jvg-fgx2 | Dependencies (osv-scanner) |
| medium | osv/GHSA-xxx9-3xcr-gjj3 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-xxx9-3xcr-gjj3 | Dependencies (osv-scanner) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.alias-for-html-safe |
app/views/authorized.erb:2 | The syntax `<%== ... %>` is an alias for `html_safe`. This means the content inside these tags will be rendered as raw HTML. This may expose your application to cross-site scripting. If you need raw HTML, prefer using the more explicit... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.var-in-script-tag |
app/views/authorized.erb:2 | Detected a template variable used in a script tag. Although template variables are HTML escaped, HTML escaping does not always prevent cross-site scripting (XSS) attacks when used directly in JavaScript. If you need to do this, use... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.var-in-script-tag |
app/views/index.erb:9 | Detected a template variable used in a script tag. Although template variables are HTML escaped, HTML escaping does not always prevent cross-site scripting (XSS) attacks when used directly in JavaScript. If you need to do this, use... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.var-in-script-tag |
app/views/mobile.erb:22 | Detected a template variable used in a script tag. Although template variables are HTML escaped, HTML escaping does not always prevent cross-site scripting (XSS) attacks when used directly in JavaScript. If you need to do this, use... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.alias-for-html-safe |
app/views/post_body.erb:31 | The syntax `<%== ... %>` is an alias for `html_safe`. This means the content inside these tags will be rendered as raw HTML. This may expose your application to cross-site scripting. If you need raw HTML, prefer using the more explicit... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.alias-for-html-safe |
app/views/setup.erb:3 | The syntax `<%== ... %>` is an alias for `html_safe`. This means the content inside these tags will be rendered as raw HTML. This may expose your application to cross-site scripting. If you need raw HTML, prefer using the more explicit... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.var-in-href |
app/views/spider_page.erb:11 | Detected a template variable used in an anchor tag with the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a relative URL, start with a... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.var-in-href |
app/views/spider_page.erb:15 | Detected a template variable used in an anchor tag with the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a relative URL, start with a... | Static analysis (opengrep) |
| medium | opengrep/ruby.rails.security.audit.xss.templates.alias-for-html-safe |
app/views/spider_page.erb:22 | The syntax `<%== ... %>` is an alias for `html_safe`. This means the content inside these tags will be rendered as raw HTML. This may expose your application to cross-site scripting. If you need raw HTML, prefer using the more explicit... | Static analysis (opengrep) |
| medium | opengrep/ruby.lang.security.weak-hashes-md5 |
lib/gravatar.rb:5 | Should not use md5 to generate hashes. md5 is proven to be vulnerable through the use of brute-force attacks. Could also result in collisions, leading to potential collision attacks. Use SHA256 or other hashing functions instead.... | Static analysis (opengrep) |
| medium | opengrep/ruby.lang.security.dangerous-subshell |
lib/tasks/release.rb:14 | Detected non-static command inside `...`. 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 low] | Static analysis (opengrep) |
| medium | opengrep/ruby.lang.security.dangerous-subshell |
lib/tasks/release.rb:27 | Detected non-static command inside `...`. 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 low] | Static analysis (opengrep) |
| low | osv/GHSA-3w22-6jfg-527w |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-3w22-6jfg-527w | Dependencies (osv-scanner) |
| low | osv/GHSA-3xg8-cc8f-9wv2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-3xg8-cc8f-9wv2 | Dependencies (osv-scanner) |
| low | osv/GHSA-5v8h-3h3q-446p |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-5v8h-3h3q-446p | Dependencies (osv-scanner) |
| low | osv/GHSA-8678-w3jw-xfc2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-8678-w3jw-xfc2 | Dependencies (osv-scanner) |
| low | osv/GHSA-9cv2-cfxc-v4v2 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-9cv2-cfxc-v4v2 | Dependencies (osv-scanner) |
| low | osv/GHSA-mr3q-g2mv-mr4q |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-mr3q-g2mv-mr4q | Dependencies (osv-scanner) |
| low | osv/GHSA-p67v-3w7g-wjg7 |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-p67v-3w7g-wjg7 | Dependencies (osv-scanner) |
| low | osv/GHSA-p8x9-v4hv-2w4g |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-p8x9-v4hv-2w4g | Dependencies (osv-scanner) |
| low | osv/GHSA-phwj-rprq-35pp |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-phwj-rprq-35pp | Dependencies (osv-scanner) |
| low | osv/GHSA-v995-44v6-5fqm |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-v995-44v6-5fqm | Dependencies (osv-scanner) |
| low | osv/GHSA-wjv4-x9w8-wm3h |
Gemfile.lock | [email protected] (RubyGems) is affected by GHSA-wjv4-x9w8-wm3h | 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 | |
| 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 | 0 | |
| Tests and CI | Code quality | ok | — | 0 | |
| Type safety | Code quality | skipped | — | 0 | |
| CI workflows (zizmor) | Security | skipped | — | 0 | |
| Dependencies (osv-scanner) | Security | ok | osv-scanner version: 2.7.1 | 132 | |
| 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 | 12 | |
| 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 | 793f00fad23d | prov-5+qual-2+sec-2 | 0% | 62 | 52 |
| 2026-11-14 | 793f00fad23d | prov-4+qual-2+sec-2 | 0% | 62 | 52 |
Full text report
- Repository: https://github.com/maccman/monocle
- Commit:
793f00fad23d3f84cf945f84fceacc4796bf5bf7 - 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 | none-detected | 44% | 100% |
| Code quality | 62 | weak | 90% | 100% |
| Security | 52 | weak | 85% | 100% |
AI provenance
No AI attribution or AI-consistent velocity signals detected.
- Explicitly attributed share (lower bound): 0.0%
- Unattributed share in AI-consistent velocity bursts: 0.0%
- Estimated AI-generated share: 0.0%
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2013-09 | 3,453 | 0% |
| 2013-11 | 92 | 0% |
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.00, no CI test run detected; 0% of function code in complex or long functions; 5% duplicated lines. Weakest area: testing.
| Area | Score |
|---|---|
| Complexity (lizard) | 100 |
| Duplication | 73 |
| Code smells (Opengrep) | 100 |
| Tests and CI | 0 |
| Documentation | 65 |
| Type safety | n/a |
| Process (Scorecard review/maintenance) | n/a |
- Functions: 156; mean complexity 1.8, 90th percentile 3; 0 complex and 0 long functions
- Duplicated lines: 5.2% of 1,998 compared
- Tests: 0 test lines for 3,311 source lines (ratio 0.00); CI test commands: none detected; 0% of recent source commits also change tests
- Docs missing or thin: contributing, changelog
Security
Security posture is weak: 132 known vulnerabilities in 20 dependencies. Weakest area: posture.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 100 |
| Static analysis (Opengrep) | 63 |
| Vulnerable dependencies (OSV) | 7 |
| CI workflows (zizmor) | n/a |
| Posture (policy, updates, signing, lockfiles) | 0 |
| OpenSSF Scorecard | n/a |
-
Known vulnerabilities: 132 in 20 packages (critical 7, high 50, medium 39, low 11)
-
Posture checks passed: lockfiles; missing: security policy, dependency updates, signed commits
Top findings
| Severity | Finding | Location |
|---|---|---|
| critical | osv/GHSA-vx9g-377x-xwxq: [email protected] (RubyGems) is affected by GHSA-vx9g-377x-xwxq |
Gemfile.lock |
| critical | osv/GHSA-cr5j-953j-xw5p: [email protected] (RubyGems) is affected by GHSA-cr5j-953j-xw5p |
Gemfile.lock |
| critical | osv/GHSA-fr52-4hqw-p27f: [email protected] (RubyGems) is affected by GHSA-fr52-4hqw-p27f |
Gemfile.lock |
| critical | osv/GHSA-qxcg-xjjg-66mj: [email protected] (RubyGems) is affected by GHSA-qxcg-xjjg-66mj |
Gemfile.lock |
| critical | osv/GHSA-pm55-qfxr-h247: [email protected] (RubyGems) is affected by GHSA-pm55-qfxr-h247 |
Gemfile.lock |
| critical | osv/GHSA-wq4h-7r42-5hrr: [email protected] (RubyGems) is affected by GHSA-wq4h-7r42-5hrr |
Gemfile.lock |
| critical | osv/GHSA-34r7-q49f-h37c: [email protected] (RubyGems) is affected by GHSA-34r7-q49f-h37c |
Gemfile.lock |
| high | osv/GHSA-8474-xrp6-wh69: [email protected] (RubyGems) is affected by GHSA-8474-xrp6-wh69 |
Gemfile.lock |
| high | osv/GHSA-hm5p-x4rq-38w4: [email protected] (RubyGems) is affected by GHSA-hm5p-x4rq-38w4 |
Gemfile.lock |
| high | osv/GHSA-34hf-g744-jw64: [email protected] (RubyGems) is affected by GHSA-34hf-g744-jw64 |
Gemfile.lock |
| high | osv/GHSA-jphg-qwrw-7w9g: [email protected] (RubyGems) is affected by GHSA-jphg-qwrw-7w9g |
Gemfile.lock |
| high | osv/GHSA-c32j-vqhx-rx3x: [email protected] (RubyGems) is affected by GHSA-c32j-vqhx-rx3x |
Gemfile.lock |
| high | osv/GHSA-242x-7cm6-4w8j: [email protected] (RubyGems) is affected by GHSA-242x-7cm6-4w8j |
Gemfile.lock |
| high | osv/GHSA-2rr5-8q37-2w7h: [email protected] (RubyGems) is affected by GHSA-2rr5-8q37-2w7h |
Gemfile.lock |
| high | osv/GHSA-59gp-qqm7-cw4j: [email protected] (RubyGems) is affected by GHSA-59gp-qqm7-cw4j |
Gemfile.lock |
| high | osv/GHSA-6qvp-r6r3-9p7h: [email protected] (RubyGems) is affected by GHSA-6qvp-r6r3-9p7h |
Gemfile.lock |
| high | osv/GHSA-7553-jr98-vx47: [email protected] (RubyGems) is affected by GHSA-7553-jr98-vx47 |
Gemfile.lock |
| high | osv/GHSA-7hp2-xwpj-95jq: [email protected] (RubyGems) is affected by GHSA-7hp2-xwpj-95jq |
Gemfile.lock |
| high | osv/GHSA-8c56-cpmw-89x7: [email protected] (RubyGems) is affected by GHSA-8c56-cpmw-89x7 |
Gemfile.lock |
| high | osv/GHSA-c4rq-3m3g-8wgx: [email protected] (RubyGems) is affected by GHSA-c4rq-3m3g-8wgx |
Gemfile.lock |
| high | osv/GHSA-cf46-6xxh-pc75: [email protected] (RubyGems) is affected by GHSA-cf46-6xxh-pc75 |
Gemfile.lock |
| high | osv/GHSA-cgx6-hpwq-fhv5: [email protected] (RubyGems) is affected by GHSA-cgx6-hpwq-fhv5 |
Gemfile.lock |
| high | osv/GHSA-crjr-9rc5-ghw8: [email protected] (RubyGems) is affected by GHSA-crjr-9rc5-ghw8 |
Gemfile.lock |
| high | osv/GHSA-gx8x-g87m-h5q6: [email protected] (RubyGems) is affected by GHSA-gx8x-g87m-h5q6 |
Gemfile.lock |
| high | osv/GHSA-jc36-42cf-vqwj: [email protected] (RubyGems) is affected by GHSA-jc36-42cf-vqwj |
Gemfile.lock |
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,311; test lines: 0
| Language | Lines |
|---|---|
| Ruby | 2,496 |
| SQL | 765 |
| JavaScript | 50 |