jiayun/DevWorkbench
unreviewed-ai-risk
- Repository: https://github.com/jiayun/DevWorkbench
- Commit:
27f0d1a6d5dd851911d43a268d57ed39ccd3f81b - Generated: 2026-11-13T23:46:18+00:00
- Scorer 0.1.0, scoring prov-4+qual-2+sec-2, report schema v2
Scores
Unreviewed AI code risk: a large share of this code is explicitly AI-attributed, and its tests or review process are weak while quality or security scores are low.
| Pillar | Score | Signal | Confidence | Coverage |
|---|---|---|---|---|
| AI provenance (estimated AI-generated share) | 99 | explicit | 95% | 100% |
| Code quality | 51 | weak | 90% | 100% |
| Security | 36 | poor | 85% | 100% |
AI provenance
Explicit AI attribution on 99% of first-party code added; an estimated 99% including velocity signals.
- Explicitly attributed share (lower bound): 98.7%
- Unattributed share in AI-consistent velocity bursts: 0.0%
- Estimated AI-generated share: 98.7%
| AI tool | Attributed commits | Lines added |
|---|---|---|
| Claude Code | 106 | 13,179 |
- AI tooling configured in repo: claude-code
Current source lines last changed by AI-attributed commits: 10,583 of 10,755.
Too few lines in one group to compare finding densities.
- Stylometry index: 0.51 per 1,000 lines (narrated steps 0, placeholders 0, assistant phrasing 0, emoji 11). Reported as a signal, not scored.
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2025-06 | 3,258 | 100% |
| 2025-07 | 6,888 | 100% |
| 2025-08 | 93 | 100% |
| 2026-01 | 2,689 | 100% |
| 2026-04 | 204 | 100% |
| 2026-06 | 172 | 0% |
| 2026-07 | 47 | 100% |
Evidence
- Claude Code: trailer 'Co-Authored-By: Claude' (27f0d1a6d5dd)
- Claude Code: trailer 'Co-Authored-By: Claude' (ea50862107c3)
- Claude Code: trailer 'Co-Authored-By: Claude' (39921948fe54)
- Claude Code: trailer 'Co-Authored-By: Claude' (94ec46329368)
- Claude Code: trailer 'Co-Authored-By: Claude' (6354769a3bf1)
- Claude Code: trailer 'Co-Authored-By: Claude' (c66346771178)
- Claude Code: trailer 'Co-Authored-By: Claude' (a21f7dd9159f)
- Claude Code: trailer 'Co-Authored-By: Claude' (16e0e72e741f)
- Claude Code: trailer 'Co-Authored-By: Claude' (59c4cf1d5efa)
- Claude Code: trailer 'Co-Authored-By: Claude' (8ab303747450)
- Claude Code: trailer 'Co-Authored-By: Claude' (1a8b0648c943)
- Claude Code: trailer 'Co-Authored-By: Claude' (0a9b81312367)
- Claude Code: trailer 'Co-Authored-By: Claude' (08fc1bef7573)
- Claude Code: trailer 'Co-Authored-By: Claude' (cffea853aa48)
- Claude Code: trailer 'Co-Authored-By: Claude' (5892e5814905)
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, CI runs tests; 42% of function code in complex or long functions; 17% duplicated lines. Weakest area: complexity.
| Area | Score |
|---|---|
| Complexity (lizard) | 28 |
| Duplication | 37 |
| Code smells (Opengrep) | 64 |
| Tests and CI | 45 |
| Documentation | 85 |
| Type safety | 100 |
| Process (Scorecard review/maintenance) | n/a |
- Functions: 614; mean complexity 2.8, 90th percentile 6; 14 complex and 14 long functions
- Duplicated lines: 16.7% of 8,143 compared
- Tests: 0 test lines for 10,755 source lines (ratio 0.00); CI test commands: go test, cargo test; 0% of recent source commits also change tests
- Docs missing or thin: contributing
Most complex functions:
- JwtTool in src/components/JwtTool.tsx: complexity 35, 334 lines
- normalize_single_quoted_strings in src-tauri/src/json_repair.rs: complexity 33, 99 lines
- OpenApiSpecFilter in src/components/OpenApiSpecFilter.tsx: complexity 28, 221 lines
- UrlTools in src/components/UrlTools.tsx: complexity 26, 238 lines
- UpdateDialog in src/components/UpdateDialog.tsx: complexity 24, 142 lines
Security
Security posture is poor: 2 possible secret(s) in the tree, 0 only in history; 43 known vulnerabilities in 13 dependencies; 1 high-severity SAST findings; 15 high-severity workflow issues. Weakest area: posture.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 44 |
| Static analysis (Opengrep) | 85 |
| Vulnerable dependencies (OSV) | 21 |
| CI workflows (zizmor) | 6 |
| Posture (policy, updates, signing, lockfiles) | 0 |
| OpenSSF Scorecard | n/a |
-
Known vulnerabilities: 43 in 13 packages (critical 1, high 22, medium 16, low 4)
-
Posture checks passed: none; missing: security policy, dependency updates, signed commits, lockfiles
Top findings
| Severity | Finding | Location |
|---|---|---|
| critical | osv/GHSA-23hp-3jrh-7fpw: tar@7.4.3 (npm) is affected by GHSA-23hp-3jrh-7fpw |
package-lock.json |
| high | gitleaks/private-key: Possible private-key secret in the current tree |
src/components/JwtTool.tsx:651 |
| high | gitleaks/jwt: Possible jwt secret in the current tree |
src/components/JwtTool.tsx:39 |
| 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] |
docs/Dockerfile:20 |
| high | osv/GHSA-73wf-gq98-2v4g: browserslist@4.25.0 (npm) is affected by GHSA-73wf-gq98-2v4g |
package-lock.json |
| high | osv/GHSA-c83g-rgw3-j3cx: browserslist@4.25.0 (npm) is affected by GHSA-c83g-rgw3-j3cx |
package-lock.json |
| high | osv/GHSA-28wg-ghj8-5hjv: nanoid@3.3.11 (npm) is affected by GHSA-28wg-ghj8-5hjv |
package-lock.json |
| high | osv/GHSA-2v37-7h3g-55p8: nanoid@3.3.11 (npm) is affected by GHSA-2v37-7h3g-55p8 |
package-lock.json |
| high | osv/GHSA-xwg4-73v4-xw9w: nanoid@3.3.11 (npm) is affected by GHSA-xwg4-73v4-xw9w |
package-lock.json |
| high | osv/GHSA-c2c7-rcm5-vvqj: picomatch@2.3.1 (npm) is affected by GHSA-c2c7-rcm5-vvqj |
package-lock.json |
| high | osv/GHSA-c2c7-rcm5-vvqj: picomatch@4.0.2 (npm) is affected by GHSA-c2c7-rcm5-vvqj |
package-lock.json |
| high | osv/GHSA-6g55-p6wh-862q: postcss@8.5.6 (npm) is affected by GHSA-6g55-p6wh-862q |
package-lock.json |
| high | osv/GHSA-r28c-9q8g-f849: postcss@8.5.6 (npm) is affected by GHSA-r28c-9q8g-f849 |
package-lock.json |
| high | osv/GHSA-mw96-cpmx-2vgc: rollup@4.44.0 (npm) is affected by GHSA-mw96-cpmx-2vgc |
package-lock.json |
| high | osv/GHSA-68fv-2mgg-jv7q: source-map-js@1.2.1 (npm) is affected by GHSA-68fv-2mgg-jv7q |
package-lock.json |
| high | osv/GHSA-34x7-hfp2-rc4v: tar@7.4.3 (npm) is affected by GHSA-34x7-hfp2-rc4v |
package-lock.json |
| high | osv/GHSA-83g3-92jg-28cx: tar@7.4.3 (npm) is affected by GHSA-83g3-92jg-28cx |
package-lock.json |
| high | osv/GHSA-8qq5-rm4j-mr97: tar@7.4.3 (npm) is affected by GHSA-8qq5-rm4j-mr97 |
package-lock.json |
| high | osv/GHSA-8x88-c5mf-7j5w: tar@7.4.3 (npm) is affected by GHSA-8x88-c5mf-7j5w |
package-lock.json |
| high | osv/GHSA-9ppj-qmqm-q256: tar@7.4.3 (npm) is affected by GHSA-9ppj-qmqm-q256 |
package-lock.json |
| high | osv/GHSA-qffp-2rhf-9h96: tar@7.4.3 (npm) is affected by GHSA-qffp-2rhf-9h96 |
package-lock.json |
| high | osv/GHSA-r292-9mhp-454m: tar@7.4.3 (npm) is affected by GHSA-r292-9mhp-454m |
package-lock.json |
| high | osv/GHSA-r6q2-hw4h-h46w: tar@7.4.3 (npm) is affected by GHSA-r6q2-hw4h-h46w |
package-lock.json |
| high | osv/GHSA-587h-7wmj-h5pm: vite@6.3.5 (npm) is affected by GHSA-587h-7wmj-h5pm |
package-lock.json |
| high | osv/GHSA-p9ff-h696-f583: vite@6.3.5 (npm) is affected by GHSA-p9ff-h696-f583 |
package-lock.json |
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
- binary-release-asset: release v0.8.2 ships control.tar.gz (0 downloads)
- binary-release-asset: release v0.8.2 ships data.tar.gz (0 downloads)
- binary-release-asset: release v0.8.2 ships devworkbench.exe (2 downloads)
- binary-release-asset: release v0.8.2 ships DevWorkbench_0.8.2_aarch64.app.tar.gz (2 downloads)
- binary-release-asset: release v0.8.2 ships DevWorkbench_0.8.2_aarch64.dmg (0 downloads)
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: 10,755; test lines: 0
| Language | Lines |
|---|---|
| TypeScript | 9,237 |
| Rust | 1,379 |
| JavaScript | 139 |