AI Slop Code Risk Monitor

veloren/veloren

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

[mirror of https://gitlab.com/veloren/veloren] An open world, open source voxel RPG inspired by Dwarf Fortress and Cube World. This repository is a mirror. Please submit all PRs and issues on our GitLab page.

1.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for veloren/veloren, a Rust project with 7,669 GitHub stars. SynthScan examined 417,130 lines of code across 1101 source files, recording 581 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 1.5 (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.

1.5
Adjusted Signal
1.5
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
7.7K
Stars
Rust
Language
417.1K
Lines of Code
1.1K
Files
581
Pattern Hits
2026-10-31
Scan Date
0.00
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 6.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.5/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 7.3/100 · LOW

Which changes need focused human review? 581 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 4HIGH 0MEDIUM 9LOW 568

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 581 distinct pattern matches across 9 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 Block552 hits · 543 pts
SeverityFileLineSnippetContext
LOWCargo.toml241specs = { git = "https://github.com/amethyst/specs.git", rev = "4e2da1df29ee840baa9b936593c45592b7c9ae27" }COMMENT
LOWclippy.toml1# TODO: do we want to use `#[deny(clippy::disallowed_method)]` to disallow all unwraps (possibly only in non-test code)?COMMENT
LOWnetwork/tests/closing.rs1//! How to read those tests:COMMENT
LOWnetwork/tests/integration.rs261 std::thread::sleep(SLEEP_EXTERNAL);COMMENT
LOWnetwork/protocol/src/types.rs1use bitflags::bitflags;COMMENT
LOWnetwork/protocol/src/types.rs21COMMENT
LOWnetwork/protocol/src/types.rs61#[derive(PartialEq, Eq, Hash, Clone, Copy)]COMMENT
LOWnetwork/protocol/src/lib.rs1//! Network ProtocolCOMMENT
LOWnetwork/protocol/src/lib.rs21//! will result in dropped data using UDP with a TCP socket will be a waste ofCOMMENT
LOWnetwork/protocol/src/lib.rs101/// [`ProtocolEvent`].COMMENT
LOWnetwork/protocol/src/lib.rs141 /// it cannot recover from the error.COMMENT
LOWnetwork/protocol/src/metrics.rs21pub struct ProtocolMetrics {COMMENT
LOWnetwork/src/message.rs21/// [`send_raw`]: crate::api::Stream::send_rawCOMMENT
LOWnetwork/src/message.rs61 #[cfg(not(feature = "compression"))]COMMENT
LOWnetwork/src/message.rs81 /// # use std::sync::Arc;COMMENT
LOWnetwork/src/lib.rs1#![deny(unsafe_code)]COMMENT
LOWnetwork/src/lib.rs21//! This [`Participant`] represents the connection between those 2 applications.COMMENT
LOWnetwork/src/lib.rs41//! use std::sync::Arc;COMMENT
LOWnetwork/src/lib.rs61//! let mut server_network = Network::new(Pid::new(), runtime);COMMENT
LOWnetwork/src/lib.rs81//! }COMMENT
LOWnetwork/src/api.rs61 #[cfg(feature = "quic")]COMMENT
LOWnetwork/src/api.rs141 ///Participant was closed by remote sideCOMMENT
LOWnetwork/src/api.rs161COMMENT
LOWnetwork/src/api.rs181/// # ExamplesCOMMENT
LOWnetwork/src/api.rs221 ///COMMENT
LOWnetwork/src/api.rs241 /// let runtime = Runtime::new().unwrap();COMMENT
LOWnetwork/src/api.rs261COMMENT
LOWnetwork/src/api.rs341 /// support multiple Protocols or NICs.COMMENT
LOWnetwork/src/api.rs381 /// When the method returns the Network either returns a [`Participant`]COMMENT
LOWnetwork/src/api.rs401 /// # return Ok(());COMMENT
LOWnetwork/src/api.rs441 /// Returns a [`Participant`] created from a [`ListenAddr`] youCOMMENT
LOWnetwork/src/api.rs461 /// while let Ok(participant) = network.connected().await {COMMENT
LOWnetwork/src/api.rs561 a2s_disconnect_s: Arc::new(Mutex::new(Some(a2s_disconnect_s))),COMMENT
LOWnetwork/src/api.rs581 /// side, resulting in very fast creation and closing latency.COMMENT
LOWnetwork/src/api.rs601 /// drop(network);COMMENT
LOWnetwork/src/api.rs641 /// Use this method to handle [`Streams`] opened from remote site, like theCOMMENT
LOWnetwork/src/api.rs661 /// let mut p1 = network.connect(ConnectAddr::Tcp("127.0.0.1:2110".parse().unwrap())).await?;COMMENT
LOWnetwork/src/api.rs681 Ok(stream)COMMENT
LOWnetwork/src/api.rs701 /// is no longer reachable (e.g. as the network cable was unplugged) theCOMMENT
LOWnetwork/src/api.rs721 /// println!("Participant connected: {}", participant.remote_pid());COMMENT
LOWnetwork/src/api.rs781COMMENT
LOWnetwork/src/api.rs801 /// # remote.listen(ListenAddr::Tcp("127.0.0.1:2040".parse().unwrap())).await?;COMMENT
LOWnetwork/src/api.rs881 /// speed is needed. The other side needs to use the respective [`recv`]COMMENT
LOWnetwork/src/api.rs901 /// # ExampleCOMMENT
LOWnetwork/src/api.rs921 /// drop(network);COMMENT
LOWnetwork/src/api.rs941 ///COMMENT
LOWnetwork/src/api.rs961 /// let mut participant_a = network.connected().await?;COMMENT
LOWnetwork/src/api.rs1001COMMENT
LOWnetwork/src/api.rs1021 /// # let remote = Network::new(Pid::new(), &runtime);COMMENT
LOWnetwork/src/api.rs1041COMMENT
LOWnetwork/src/api.rs1061 /// let mut participant_a = network.connected().await?;COMMENT
LOWnetwork/src/api.rs1101 /// # ExampleCOMMENT
LOWnetwork/src/api.rs1121 /// println!("{:?}", stream_a.try_recv::<String>()?);COMMENT
LOWnetwork/src/participant.rs641 /// Situation AS, AR, BS, BR. A wants to close.COMMENT
LOWvoxygen/i18n-helpers/src/lib.rs41 // Current implementation just checks if our player is humanoid, and if so,COMMENT
LOWvoxygen/i18n-helpers/src/lib.rs61 // - Neuter (or fallback Male)COMMENT
LOWvoxygen/i18n-helpers/src/lib.rs81 // we address the comment above at least.COMMENT
LOWvoxygen/i18n-helpers/src/lib.rs101 // And what about Mindflayer? They do have varied body_type, but do theyCOMMENT
LOWvoxygen/src/discord.rs41 /// Rich Presence asset keys: the backgrounds used in the main menu andCOMMENT
LOWvoxygen/src/profile.rs81 profileCOMMENT
492 more matches not shown…
Hallucination Indicators4 hits · 40 pts
SeverityFileLineSnippetContext
CRITICALvoxygen/src/hud/bag.rs1373 self.global_state.settings.inventory.sort_order.next(),CODE
CRITICALvoxygen/src/hud/chat.rs184 &self.global_state.settings.chat.chat_cmd_prefix.to_string(),CODE
CRITICALvoxygen/src/hud/settings_window/video.rs597 Text::new(&self.global_state.settings.graphics.max_fps.to_string())CODE
CRITICALvoxygen/src/hud/settings_window/video.rs777 (self.global_state.settings.graphics.gamma.log2() * 8.0).round() as i32,CODE
AI Slop Vocabulary8 hits · 24 pts
SeverityFileLineSnippetContext
MEDIUMvoxygen/src/mesh/greedy.rs692 // FIXME: Either make more robust, or explicitly document that limits on textureCOMMENT
MEDIUMvoxygen/src/render/renderer/mod.rs206 // Enable seamless cubemaps globally, where available--they are essentially aCOMMENT
MEDIUMvoxygen/src/scene/math.rs201 // NOTE: Definitely non-ideal that we panic if the rounded value can't fit in anCOMMENT
MEDIUMserver/src/state_ext.rs765 // it is added in initialized_character (to be robust we can also insert it ifCOMMENT
MEDIUMcommon/systems/src/shockwave.rs152 // Might make this more nuanced if shockwaves are used for non damage effectsCOMMENT
MEDIUMcommon/systems/src/beam.rs158 // Might make this more nuanced if beams are used for non damage effectsCOMMENT
MEDIUMcommon/systems/src/projectile.rs289 // robust method.COMMENT
MEDIUMcommon/src/terrain/sprite/mod.rs10//! Fundamentally, sprites are composed of one or more elements: theCOMMENT
TODO Padding8 hits · 12 pts
SeverityFileLineSnippetContext
LOWnetwork/protocol/src/metrics.rs58 /// ping per CHANNEL //TODO: implementCOMMENT
LOWvoxygen/src/window.rs204// TODO: implement controller layout detection/configurationCOMMENT
LOWvoxygen/src/ui/widgets/radio_list.rs182 //TODO: implement default width / height functionsCOMMENT
LOWworld/examples/water.rs329 // TODO: implement removing horizon mapping.COMMENT
LOWworld/src/pathfinding.rs24 // TODO: implement this functionCOMMENT
LOWserver/src/cmd.rs3279 // TODO: implement atomic `insert_all_or_nothing` on InventoryCOMMENT
LOWserver/src/sys/agent/behavior_tree/mod.rs1016 // TODO: implement for rtsim2COMMENT
LOWcommon/assets/src/walk.rs31 // TODO: implement iterator?COMMENT
Slop Phrases4 hits · 6 pts
SeverityFileLineSnippetContext
LOWvoxygen/src/hud/mod.rs4921 // for this comment. Don't forget to update the code inCOMMENT
LOWvoxygen/src/hud/minimap.rs551 // Don't forget to update the code in src/mop/hud.rs:4728 in theCOMMENT
LOWserver/src/terrain_persistence.rs340/// Don't forget to increment the version number in theCOMMENT
LOWcommon/src/bin/asset_migrate.rs8// (don't forget to add serde derive-s, import if needed)COMMENT
Example Usage Blocks2 hits · 3 pts
SeverityFileLineSnippetContext
LOWvoxygen/src/ui/img_ids.rs128/// Example usage:COMMENT
LOWcommon/assets/src/lib.rs50 /// Example usage:COMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMrtsim/src/lib.rs109//! damping terms or parameter clamping), and should include guardrails thatCOMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWserver/src/persistence/character/conversions.rs52/// NOTE: This method does not yet handle persisting nested items withinCOMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWvoxygen/src/ui/widgets/item_tooltip.rs1334 widget::Text::new("placeholder")CODE