AI Slop Code Risk Monitor

cberner/redb

SlopCodeMonitor badge for cberner/redb Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

An embedded key-value database in pure Rust

2.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for cberner/redb, a Rust project with 4,886 GitHub stars. SynthScan examined 68,554 lines of code across 119 source files, recording 141 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 2.4 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

2.4
Adjusted Signal
2.4
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
4.9K
Stars
Rust
Language
68.6K
Lines of Code
119
Files
141
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

Use each vector to guide manual verification of the underlying findings.

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 10.9/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 136 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.3/100 · LOW

Are imports declared and package/API names verified? 4 finding(s).

Agent Over-Engineering Ratio 1.7/100 · LOW

Are wrappers, guards, and repeated structures necessary? 15 finding(s).

PR Review Velocity Impact 10.2/100 · LOW

Which changes need focused human review? 141 finding(s).

What These Metrics Mean

Adjusted Signal
Legacy pattern score normalized per 1,000 scanned lines and multiplied by the repository-level time factor. It is not an estimate of AI authorship.
Raw Pattern Score
Sum of severity- and context-weighted pattern findings before applying the time factor.
Time Factor
A coarse multiplier based on repository last-push metadata. It does not identify when individual code was written.
Pattern Hits
Count of configured pattern findings. Review each location and surrounding code before acting.
HC Hit Rate
High- and critical-severity findings per scanned file. Severity is a configured detector weight, not proof of a vulnerability or authorship.
Lines / Files
Scan coverage denominators used by the legacy normalized score.

Pattern-Signal History

This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.

Severity Breakdown

Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.

CRITICAL 0HIGH 1MEDIUM 1LOW 139

Directory Score Breakdown

This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.

Pattern Findings

The scanner identified 141 distinct pattern matches across 7 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Over-Commented Block89 hits · 86 pts
SeverityFileLineSnippetContext
LOWdeny.toml1# This template contains all of the possible sections and their default valuesCOMMENT
LOWdeny.toml21yanked = "warn"COMMENT
LOWdeny.toml41# List of explictly allowed licensesCOMMENT
LOWdeny.toml61 { allow = ["Unicode-3.0"], name = "unicode-ident", version = "*" }, # Used only by comfy-table in the benchmarksCOMMENT
LOWdeny.toml81 # Each entry is a crate relative path, and the (opaque) hash of its contentsCOMMENT
LOWdeny.toml101multiple-versions = "warn"COMMENT
LOWdeny.toml121]COMMENT
LOWcrates/redb-derive/tests/crate_attr_tests.rs1//! Tests for `#[redb(crate = "...")]`, which names the crate the implementations are generatedCOMMENT
LOWcrates/redb-derive/src/lib.rs41}COMMENT
LOWcrates/redb-derive-rename-test/src/lib.rs1// Intentionally empty: this package exists for the integration test in tests/, which must liveCOMMENT
LOWtests/borrow_markers.rs1// Every lifetime marker in the crate's types is a `ScopedBorrow`.COMMENT
LOWtests/integration_tests.rs4441COMMENT
LOWsrc/types.rs161 Self: 'a;COMMENT
LOWsrc/types.rs241 /// to `left`, and less than `right`, under [`compare()`](Self::compare).COMMENT
LOWsrc/transactions.rs861 // Persistent savepoints whose on-disk entry was deleted: release theirCOMMENT
LOWsrc/transactions.rs1141 }COMMENT
LOWsrc/transactions.rs1301 /// This savepoint will be freed as soon as the returned [`Savepoint`] is dropped.COMMENT
LOWsrc/transactions.rs1521 Durability::None => InternalDurability::None,COMMENT
LOWsrc/transactions.rs1541 /// attacker with an extremely high degree of control over the database's workload, includingCOMMENT
LOWsrc/transactions.rs1561 /// Security considerations: Many hard disk drives and SSDs do not actually guarantee that dataCOMMENT
LOWsrc/transactions.rs1581 /// Alternatively, you can enable quick-repair. In this mode, redb saves the allocator stateCOMMENT
LOWsrc/transactions.rs1681 .rename_multimap_table(self, &name, new_name.name())COMMENT
LOWsrc/transactions.rs1741 /// durable as consistent with the [`Durability`] level set by [`Self::set_durability`]COMMENT
LOWsrc/transactions.rs1921 }COMMENT
LOWsrc/io.rs1//! The error type that [`StorageBackend`](crate::StorageBackend) reports failures with.COMMENT
LOWsrc/error.rs681 /// generation of the multi-process locking protocolCOMMENT
LOWsrc/lib.rs21//!COMMENT
LOWsrc/lib.rs41//! fn main() -> Result<(), Error> {COMMENT
LOWsrc/lib.rs61//!COMMENT
LOWsrc/sync.rs21 use core::fmt::{Debug, Formatter};COMMENT
LOWsrc/db.rs41COMMENT
LOWsrc/db.rs61///COMMENT
LOWsrc/db.rs181pub(crate) const WRITER_BYTE: u64 = LOCK_BASE;COMMENT
LOWsrc/db.rs581 ///COMMENT
LOWsrc/db.rs601/// Multiple processes may open a [`ReadOnlyDatabase`], but it may not be opened concurrentlyCOMMENT
LOWsrc/db.rs621/// # let tmpfile = NamedTempFile::new_in("/tmp").unwrap();COMMENT
LOWsrc/db.rs721/// Opened redb database fileCOMMENT
LOWsrc/db.rs741///COMMENT
LOWsrc/db.rs841COMMENT
LOWsrc/db.rs1741 mem.check_active_transaction_id(transaction_id)?;COMMENT
LOWsrc/db.rs2001/// writes is chosen by `open()` or `open_read_only()`, not by the mode.COMMENT
LOWsrc/db.rs2021/// excluded by a writer in either mode: it must not be opened on a database such a writer hasCOMMENT
LOWsrc/db.rs2081 /// Set a callback which will be invoked periodically in the event that the database file needsCOMMENT
LOWsrc/legacy_types.rs1//! Types that open the tables written before redb 5.0, when the built-in types had no nicheCOMMENT
LOWsrc/legacy_types.rs21/// const OLD: TableDefinition<u64, Option<Legacy<&str>>> = TableDefinition::new("names");COMMENT
LOWsrc/table.rs161 ///COMMENT
LOWsrc/table.rs181 ///COMMENT
LOWsrc/table.rs201 /// `predicate` evaluates to `true` are returned in an iterator, and those which are read from the iterator are remoCOMMENT
LOWsrc/table.rs261 /// `predicate` evaluates to `false` are removed.COMMENT
LOWsrc/table.rs341 /// Returns the old value, if the key was present in the tableCOMMENT
LOWsrc/table.rs381 /// Passing `Bound::Unbounded` will return a cursor pointing to the gapCOMMENT
LOWsrc/table.rs401 /// # let tmpfile = NamedTempFile::new_in("/tmp").unwrap();COMMENT
LOWsrc/table.rs621COMMENT
LOWsrc/table.rs641 /// let mut table = write_txn.open_table(TABLE)?;COMMENT
LOWsrc/table.rs661 ///COMMENT
LOWsrc/table.rs681 /// table.insert("b", &1)?;COMMENT
LOWsrc/table.rs701 fn first(&self) -> Result<Option<(AccessGuard<'_, K>, AccessGuard<'_, V>)>>;COMMENT
LOWsrc/table.rs721 &self,COMMENT
LOWsrc/table.rs741 &self,COMMENT
LOWsrc/table.rs761 fn upper_bound<'a>(COMMENT
29 more matches not shown…
Verbosity Indicators16 hits · 26 pts
SeverityFileLineSnippetContext
LOW⚡tests/integration_tests.rs3862 // Step 1: Insert initial data and commit durablyCOMMENT
LOW⚡tests/integration_tests.rs3870 // Step 2: In a new write transaction, create a savepoint BEFORE any modificationsCOMMENT
LOW⚡tests/integration_tests.rs3874 // Step 3: Open table, insert new data, then close (drop) the table handle.COMMENT
LOW⚡tests/integration_tests.rs3883 // Step 4: Restore the savepoint. This restores the table tree root to theCOMMENT
LOW⚡tests/integration_tests.rs3888 // Step 5: Commit. During commit, flush_table_root_updates() drainsCOMMENT
LOW⚡tests/integration_tests.rs3893 // Step 6: Verify. After restoring the savepoint, keys 2 and 3 should NOT exist.COMMENT
LOW⚡tests/integration_tests.rs4578 // Step 3: Commit an empty transaction. During durable_commit(),COMMENT
LOW⚡tests/integration_tests.rs4584 // Step 4: Insert data into a DIFFERENT table (table_b) so that the allocator reusesCOMMENT
LOWtests/integration_tests.rs4458 // Step 1: Create initial data in the "original" table and commit.COMMENT
LOWtests/integration_tests.rs4470 // Step 2: Modify the table and rename it in the same transaction.COMMENT
LOWtests/integration_tests.rs4492 // Step 3: Reopen and verify data survives and integrity check passes.COMMENT
LOWtests/integration_tests.rs4525 // Step 1: Insert initial data into table_a and commit durably.COMMENT
LOWtests/integration_tests.rs4547 // Step 2: In a new write transaction, create a savepoint, then modify all ofCOMMENT
LOWtests/integration_tests.rs4596 // Step 5: Read table_a. If the bug is present, the original pages have been freedCOMMENT
LOWtests/integration_tests.rs4664 // Step 1: Insert several pages worth of committed data into table_a.COMMENT
LOWtests/integration_tests.rs4681 // Step 2: In a single transaction, create an ephemeral savepoint (which enables allocationCOMMENT
Structural Annotation Overuse16 hits · 26 pts
SeverityFileLineSnippetContext
LOW⚡tests/integration_tests.rs3862 // Step 1: Insert initial data and commit durablyCOMMENT
LOW⚡tests/integration_tests.rs3870 // Step 2: In a new write transaction, create a savepoint BEFORE any modificationsCOMMENT
LOW⚡tests/integration_tests.rs3874 // Step 3: Open table, insert new data, then close (drop) the table handle.COMMENT
LOW⚡tests/integration_tests.rs3883 // Step 4: Restore the savepoint. This restores the table tree root to theCOMMENT
LOW⚡tests/integration_tests.rs3888 // Step 5: Commit. During commit, flush_table_root_updates() drainsCOMMENT
LOW⚡tests/integration_tests.rs3893 // Step 6: Verify. After restoring the savepoint, keys 2 and 3 should NOT exist.COMMENT
LOW⚡tests/integration_tests.rs4578 // Step 3: Commit an empty transaction. During durable_commit(),COMMENT
LOW⚡tests/integration_tests.rs4584 // Step 4: Insert data into a DIFFERENT table (table_b) so that the allocator reusesCOMMENT
LOWtests/integration_tests.rs4458 // Step 1: Create initial data in the "original" table and commit.COMMENT
LOWtests/integration_tests.rs4470 // Step 2: Modify the table and rename it in the same transaction.COMMENT
LOWtests/integration_tests.rs4492 // Step 3: Reopen and verify data survives and integrity check passes.COMMENT
LOWtests/integration_tests.rs4525 // Step 1: Insert initial data into table_a and commit durably.COMMENT
LOWtests/integration_tests.rs4547 // Step 2: In a new write transaction, create a savepoint, then modify all ofCOMMENT
LOWtests/integration_tests.rs4596 // Step 5: Read table_a. If the bug is present, the original pages have been freedCOMMENT
LOWtests/integration_tests.rs4664 // Step 1: Insert several pages worth of committed data into table_a.COMMENT
LOWtests/integration_tests.rs4681 // Step 2: In a single transaction, create an ephemeral savepoint (which enables allocationCOMMENT
Hyper-Verbose Identifiers14 hits · 18 pts
SeverityFileLineSnippetContext
LOWcrates/redb-python/test/test_api.py16def test_errors_form_a_flat_hierarchy() -> None:CODE
LOW⚡crates/redb-python/test/test_api.py45def test_create_new_database_creates_file(tmp_db_path: Path) -> None:CODE
LOW⚡crates/redb-python/test/test_api.py51def test_create_on_non_database_file_raises(tmp_db_path: Path) -> None:CODE
LOW⚡crates/redb-python/test/test_api.py57def test_create_on_open_database_raises(tmp_db_path: Path) -> None:CODE
LOW⚡crates/redb-python/test/test_api.py65def test_open_requires_an_existing_database(tmp_db_path: Path) -> None:CODE
LOWcrates/redb-python/test/test_api.py85def test_completed_transaction_releases_database(tmp_db_path: Path) -> None:CODE
LOW⚡crates/redb-python/test/test_api.py98def test_drop_unfinalized_transaction_does_not_deadlock(tmp_db_path: Path) -> None:CODE
LOW⚡crates/redb-python/test/test_api.py107def test_transaction_outlives_anonymous_database(tmp_db_path: Path) -> None:CODE
LOW⚡crates/redb-python/test/test_api.py116def test_reentering_finalized_transaction_raises(tmp_db_path: Path) -> None:CODE
LOW⚡crates/redb-python/test/test_api.py126def test_context_manager_aborts_on_exception(tmp_db_path: Path) -> None:CODE
LOWcrates/redb-python/test/test_api.py141def test_finished_transaction_is_completed(tmp_db_path: Path, finish) -> None:CODE
LOWcrates/redb-python/test/test_api.py154def test_exit_after_explicit_finish_is_a_noop(tmp_db_path: Path) -> None:CODE
LOWcrates/redb-python/test/test_api.py164def test_blocked_writer_releases_the_gil(tmp_db_path: Path) -> None:CODE
LOWcrates/redb-python/test/test_api.py202def test_table_keeps_its_transaction_alive(tmp_db_path: Path) -> None:CODE
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHcrates/redb-python/test/test_fuzz.py82except OSError:CODE
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWcrates/redb-python/test/conftest.py1CODE
LOWcrates/redb-python/test/test_api.py3CODE
LOWcrates/redb-python/test/fuzz.py7CODE
LOWcrates/redb-python/test/test_fuzz.py8CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMcrates/redb-bench/Cargo.toml12# The shared harness is a library, so these have to be regular dependencies. Engines other than redbCOMMENT