rjwalters/vibesql
Vibe-coded NIST compatible database in Rust
- Repository: https://github.com/rjwalters/vibesql
- Commit:
018655222b52c37a25ab9424d0955aff4625e99f - Generated: 2026-11-13T23:46:47+00:00
- Scorer 0.1.0, scoring prov-4+qual-2+sec-2, report schema v2
Scores
| Pillar | Score | Signal | Confidence | Coverage |
|---|---|---|---|---|
| AI provenance (estimated AI-generated share) | 92 | explicit | 95% | 100% |
| Code quality | 72 | adequate | 90% | 100% |
| Security | 45 | poor | 85% | 100% |
AI provenance
Explicit AI attribution on 92% of first-party code added; an estimated 92% including velocity signals.
- Explicitly attributed share (lower bound): 91.9%
- Unattributed share in AI-consistent velocity bursts: 3.4%
- Estimated AI-generated share: 91.9%
| AI tool | Attributed commits | Lines added |
|---|---|---|
| Claude Code | 4,099 | 1,544,116 |
- AI tooling configured in repo: claude-code
Current source lines last changed by AI-attributed commits: 364,044 of 400,000 (sampled).
| Findings per 1,000 lines | AI-attributed | Other | Ratio |
|---|---|---|---|
| Quality | 0.266 | 0.584 | 0.46x |
| Security | 0.596 | 0.028 | 21.29x |
- Stylometry index: 0.38 per 1,000 lines (narrated steps 122, placeholders 8, assistant phrasing 1, emoji 173). Reported as a signal, not scored.
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2025-10 | 177,262 | 84% |
| 2025-11 | 563,950 | 93% |
| 2025-12 | 341,555 | 97% |
| 2026-01 | 48,344 | 100% |
| 2026-04 | 7,716 | 100% |
| 2026-05 | 27,267 | 35% |
| 2026-06 | 118,027 | 98% |
| 2026-07 | 112,920 | 88% |
| 2026-08 | 144,465 | 84% |
| 2026-09 | 76,649 | 100% |
| 2026-10 | 62,617 | 100% |
Evidence
- Claude Code: trailer 'Co-Authored-By: Claude' (018655222b52)
- Claude Code: trailer 'Co-Authored-By: Claude' (24e489adee37)
- Claude Code: trailer 'Co-authored-by: Claude' (38cca390088c)
- Claude Code: trailer 'Co-authored-by: Claude' (9ede236c491f)
- Claude Code: trailer 'Co-Authored-By: Claude' (788c02f8ce1b)
- Claude Code: trailer 'Co-authored-by: Claude' (b59b9d137551)
- Claude Code: trailer 'Co-authored-by: Claude' (71a8876c2810)
- Claude Code: trailer 'Co-authored-by: Claude' (5aa95e69cea8)
- Claude Code: trailer 'Co-authored-by: Claude' (51922f80927d)
- Claude Code: trailer 'Co-authored-by: Claude' (cf0f92081f14)
- Claude Code: trailer 'Co-authored-by: Claude' (5d9e5f2418e8)
- Claude Code: trailer 'Co-authored-by: Claude' (136ef82d81bb)
- Claude Code: trailer 'Co-authored-by: Claude' (b731e10f5d58)
- Claude Code: trailer 'Co-authored-by: Claude' (18b475a539a6)
- Claude Code: trailer 'Co-Authored-By: Claude' (c65ff692eb09)
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 adequate: test-to-source ratio 0.60, CI runs tests; 34% of function code in complex or long functions; 15% duplicated lines. Weakest area: complexity.
| Area | Score |
|---|---|
| Complexity (lizard) | 36 |
| Duplication | 40 |
| Code smells (Opengrep) | 96 |
| Tests and CI | 100 |
| Documentation | 85 |
| Type safety | 73 |
| Process (Scorecard review/maintenance) | n/a |
- Functions: 15,168; mean complexity 4.5, 90th percentile 10; 872 complex and 408 long functions
- Duplicated lines: 15.3% of 476,261 compared
- Tests: 382,135 test lines for 635,712 source lines (ratio 0.60); CI test commands: pytest, go test, cargo test, ctest; 55% of recent source commits also change tests
- Docs missing or thin: contributing
Most complex functions:
- fmt in crates/vibesql-parser/src/keywords.rs: complexity 308, 313 lines
- coerce_value in crates/vibesql-executor/src/insert/validation.rs: complexity 231, 501 lines
- execute_insert_internal in crates/vibesql-executor/src/insert/execution.rs: complexity 214, 933 lines
- write_expression in crates/vibesql-storage/src/persistence/binary/expression/mod.rs: complexity 185, 321 lines
- eval_scalar_function in crates/vibesql-executor/src/evaluator/functions/mod.rs: complexity 182, 251 lines
Security
Security posture is poor: 1 possible secret(s) in the tree, 0 only in history; 34 known vulnerabilities in 18 dependencies; 172 high-severity SAST findings; 71 high-severity workflow issues. Weakest area: ci actions.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 36 |
| Static analysis (Opengrep) | 90 |
| Vulnerable dependencies (OSV) | 37 |
| CI workflows (zizmor) | 0 |
| Posture (policy, updates, signing, lockfiles) | 60 |
| OpenSSF Scorecard | n/a |
-
Known vulnerabilities: 34 in 18 packages (critical 0, high 1, medium 6, low 1)
-
Posture checks passed: dependency updates, signed commits; missing: security policy, lockfiles
Top findings
| Severity | Finding | Location |
|---|---|---|
| high | gitleaks/private-key: Possible private-key secret in the current tree |
vendor/reqsign-google/src/provide_credential/static_provider.rs:87 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
.claude/skills/repo/scripts/repo-org-policy.py:48 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
.loom/scripts/gh-cached:415 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-tainted-env-args: Detected subprocess function 'run' with user controlled data. A malicious actor could leverage this to perform command injection. You may consider using 'shlex.quote()'. [confidence medium] |
.loom/scripts/gh-cached:416 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
.loom/scripts/gh-cached:467 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
.loom/scripts/gh-cached:499 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
.loom/scripts/gh-cached:526 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/backend_setup.py:57 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/benchmark_scenarios.py:33 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/benchmark_scenarios.py:56 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/benchmark_scenarios.py:79 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/benchmark_scenarios.py:98 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/python_overhead.py:20 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/python_overhead.py:48 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/python_overhead.py:114 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/python_overhead.py:147 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
benchmarks/suite/analyze.py:43 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
benchmarks/suite/analyze.py:152 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
benchmarks/suite/analyze.py:164 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
benchmarks/suite/analyze.py:186 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
benchmarks/suite/analyze.py:205 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
benchmarks/utils/database_setup.py:113 |
| high | opengrep/javascript.express.security.injection.tainted-sql-string: Detected user input used to manually construct a SQL string. This is usually bad practice because manual construction could accidentally result in a SQL injection. An attacker could use a SQL injection to steal or modify contents of the database. Instead, use a parameterized query which is available [confidence medium] |
packages/vibesql-client-ts/src/storage/client.ts:198 |
| high | opengrep/python.sqlalchemy.security.sqlalchemy-execute-raw-query: Avoiding SQL string concatenation: untrusted input concatenated with raw SQL query can result in SQL Injection. In order to execute raw query safely, prepared statement should be used. SQLAlchemy provides TextualSQL to easily used prepared statement with named parameters. For complex SQL composition [confidence low] |
scripts/analyze_benchmark_stability.py:27 |
| high | opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] |
scripts/bench:180 |
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: 635,712; test lines: 382,135
| Language | Lines |
|---|---|
| Rust | 728,449 |
| Shell | 240,117 |
| TypeScript | 24,273 |
| Python | 21,375 |
| SQL | 3,100 |
| JavaScript | 445 |
| Java | 88 |