AI Slop Code RIsk Monitor

FyroxEngine/Fyrox

3D and 2D game engine written in Rust

5.9 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for FyroxEngine/Fyrox, a Rust project with 9,584 GitHub stars. SynthScan examined 295,546 lines of code across 738 source files, recording 1600 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 5.9 (Moderate 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.

5.9
Adjusted Signal
5.9
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
9.6K
Stars
Rust
Language
295.5K
Lines of Code
738
Files
1.6K
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 23.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 3.0/100 · LOW

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

PR Review Velocity Impact 25.1/100 · MEDIUM

Which changes need focused human review? 1600 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 2MEDIUM 48LOW 1550

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 1600 distinct pattern matches across 6 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 Block1548 hits · 1530 pts
SeverityFileLineSnippetContext
LOWARCHITECTURE.md321COMMENT
LOWfyrox/src/lib.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/thumb.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/thumb.rs41/// difference between its current position and its initial position. The user is responsible forCOMMENT
LOWfyrox-ui/src/thumb.rs61/// ThumbBuilder::new(COMMENT
LOWfyrox-ui/src/thumb.rs81/// match msg {COMMENT
LOWfyrox-ui/src/message.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/message.rs121pub enum DeliveryMode {COMMENT
LOWfyrox-ui/src/message.rs141/// and reliable mechanism that effectively decouples widgets from each other. There is no directCOMMENT
LOWfyrox-ui/src/message.rs161/// UserInterface, message::MessageData,COMMENT
LOWfyrox-ui/src/message.rs181/// ```COMMENT
LOWfyrox-ui/src/message.rs381 /// ```rustCOMMENT
LOWfyrox-ui/src/message.rs401 /// # let widget_handle = Handle::<UiNode>::NONE;COMMENT
LOWfyrox-ui/src/message.rs421 }COMMENT
LOWfyrox-ui/src/message.rs441 ///COMMENT
LOWfyrox-ui/src/message.rs581/// A set of possible touch phasesCOMMENT
LOWfyrox-ui/src/message.rs601 /// device.COMMENT
LOWfyrox-ui/src/message.rs761 Backquote,COMMENT
LOWfyrox-ui/src/message.rs781 /// <kbd>4</kbd> on a US keyboard.COMMENT
LOWfyrox-ui/src/message.rs801 /// Located between the <kbd>=</kbd> and <kbd>Backspace</kbd> keys.COMMENT
LOWfyrox-ui/src/message.rs841 /// <kbd>r</kbd> on a US keyboard.COMMENT
LOWfyrox-ui/src/message.rs861 /// QWERTZ (e.g., German) keyboard.COMMENT
LOWfyrox-ui/src/message.rs881 /// <kbd>CapsLock</kbd> or <kbd>⇪</kbd>COMMENT
LOWfyrox-ui/src/message.rs901 Space,COMMENT
LOWfyrox-ui/src/message.rs921 Lang5,COMMENT
LOWfyrox-ui/src/message.rs961 Numpad4,COMMENT
LOWfyrox-ui/src/message.rs981 ///COMMENT
LOWfyrox-ui/src/message.rs1001 NumpadMemoryAdd,COMMENT
LOWfyrox-ui/src/message.rs1021 /// This key is typically found below the <kbd>7</kbd> key and to the left ofCOMMENT
LOWfyrox-ui/src/message.rs1101 /// Use for dedicated <kbd>ひらがな</kbd> key found on some Japanese word processing keyboards.COMMENT
LOWfyrox-ui/src/message.rs1121 /// Usually found at the top of the keyboard.COMMENT
LOWfyrox-ui/src/message.rs1141 /// General-purpose function key.COMMENT
LOWfyrox-ui/src/message.rs1161 F19,COMMENT
LOWfyrox-ui/src/message.rs1361 /// A context menu is available for the object under the cursor. OftenCOMMENT
LOWfyrox-ui/src/message.rs1461COMMENT
LOWfyrox-ui/src/formatted_text.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/formatted_text.rs261COMMENT
LOWfyrox-ui/src/formatted_text.rs301 pub shadow_offset: InheritableVariable<Vector2<f32>>,COMMENT
LOWfyrox-ui/src/rect.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/rect.rs61/// ## ExampleCOMMENT
LOWfyrox-ui/src/rect.rs81/// ## ValueCOMMENT
LOWfyrox-ui/src/rect.rs101/// # use fyrox_ui::{COMMENT
LOWfyrox-ui/src/popup.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/popup.rs121 | Placement::Center(target)COMMENT
LOWfyrox-ui/src/popup.rs141/// fn create_popup_with_button(ctx: &mut BuildContext) -> Handle<Popup> {COMMENT
LOWfyrox-ui/src/popup.rs161/// # widget::WidgetBuilder,COMMENT
LOWfyrox-ui/src/popup.rs181///COMMENT
LOWfyrox-ui/src/popup.rs201/// ButtonBuilder::new(WidgetBuilder::new())COMMENT
LOWfyrox-ui/src/popup.rs221///COMMENT
LOWfyrox-ui/src/popup.rs241/// .build(&mut ui.build_ctx()),COMMENT
LOWfyrox-ui/src/popup.rs261///COMMENT
LOWfyrox-ui/src/popup.rs281/// .stays_open(true)COMMENT
LOWfyrox-ui/src/test.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/scroll_bar.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/scroll_bar.rs61 MinValue(f32),COMMENT
LOWfyrox-ui/src/scroll_bar.rs81/// # use fyrox_ui::{COMMENT
LOWfyrox-ui/src/scroll_bar.rs101/// # core::pool::Handle,COMMENT
LOWfyrox-ui/src/scroll_bar.rs121///COMMENT
LOWfyrox-ui/src/key.rs1// Copyright (c) 2019-present Dmitry Stepanov and Fyrox Engine contributors.COMMENT
LOWfyrox-ui/src/key.rs161///COMMENT
1488 more matches not shown…
Decorative Section Separators43 hits · 178 pts
SeverityFileLineSnippetContext
MEDIUM⚡fyrox-ui/src/lib.rs2285 /// ├─────────────────────────────◄───────────────────────────┐ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2288 /// ┌─────────▼─────────┐ ┌─────────────────────────────────────┐ │ ┌───────┼──────┐COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2290 /// │Queue │ │ Widget Sub-Tree │ │ ├──────────────┤COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2291 /// │ ┌───────────┐ │ │ │ └────┼ Sync Only? │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2292 /// │ │ Message │ │ │ Bubble Routing │ └───────▲──────┘COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2293 /// │ └───────────┘ │ │ ┌─────────────────────────────────┐ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2294 /// │ ┌───────────┐ │ │ │ Root::handle_routed_message ├─┼─────────►─────────┤COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2295 /// │ │ Message │ │ │ └────────────────▲────────────────┘ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2296 /// │ └───────────┘ │ │ ... │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2297 /// │ ... │ │ ┌────────────────┼────────────────┐ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2298 /// │ ┌───────────┐ │ │ │ Parent::handle_routed_message │ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2299 /// │ │ Message │ │ │ └────────────────▲────────────────┘ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2300 /// │ └───────────┘ │ │ │ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2301 /// │ ┌───────────┐ │ │ ┌────────────────┼────────────────┐ │ Direct Routing │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2302 /// │ │ Message │ │ │ │ Widget::handle_routed_message │ │ ┌────────────────┼────────────────┐COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2303 /// │ └─────────┬─┘ │ │ └────────────────▲────────────────┘ │ │ Widget::handle_routed_message │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2304 /// └─────────────┼─────┘ └──────────────────┼──────────────────┘ └────────────────▲────────────────┘COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2308 /// ┌─────────────┼───────────────┐ ┌──────────────────┐ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2310 /// │ ┌───────────▼─────────────┐ │ ├──────────────────┤ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2311 /// │ │ Widget::preview_message │ │ │ Direct Routing? ├───────────────────────────┘COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2312 /// │ └───────────┬─────────────┘ │ └──────────────────┘COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2314 /// │ ┌───────────▼─────────────┐ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2316 /// │ └───────────┬─────────────┘ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2318 /// │ ┌───────────▼─────────────┐ │ │COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2319 /// │ │ Widget::preview_message─┼─┼───────────┘COMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2320 /// │ └─────────────────────────┘ │ To destinationCOMMENT
MEDIUM⚡fyrox-ui/src/lib.rs2321 /// └─────────────────────────────┘ widgetCOMMENT
MEDIUM⚡fyrox-sound/src/bus.rs235/// ┌────────────┐ ┌────────────┐COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs237/// │ Source1 ├────────────┐ ┌──────────┤ Source2 │COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs239/// └────────────┘ │ │ └────────────┘COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs241/// ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs243/// │ Source3 ├─────►│ Bus1 │ │ BusN │◄───┤ Source4 │COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs244/// │ │ ├────────────┤ ├────────────┤ │ │COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs245/// └────────────┘ │ │ │ │ └────────────┘COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs246/// │ Effect1 │ │ ┌───────────┐ │ Effect1 │ │COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs250/// │ EffectN ▼ │ └─────┬─────┘ │ EffectN ▼ │COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs252/// └─────┬──────┘ │ └─────┬──────┘COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs255/// │ ┌────────────┐ │COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs257/// └─────────►│ Primary │◄──────┘COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs258/// ├────────────┤COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs266/// └─────┬──────┘COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs270/// ┌───────────────────────────┐COMMENT
MEDIUM⚡fyrox-sound/src/bus.rs274/// └───────────────────────────┘COMMENT
Synthetic Comment Markers2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHfyrox-impl/src/scene/graph/mod.rs539 /// new local position of the given node so that its global position will be as requested.COMMENT
HIGHfyrox-impl/src/scene/graph/mod.rs577 /// new local rotation of the given node so that its global rotation will be as requested.COMMENT
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMfyrox-ui/src/control.rs453// Essentially implements ObjectOrVariant for Control types.COMMENT
MEDIUMfyrox-impl/src/scene/camera.rs342/// Skybox is a cube around the camera with six textures forming seamless "sky". It could be anything,COMMENT
MEDIUMfyrox-impl/src/scene/node/mod.rs269// Essentially implements ObjectOrVariant for NodeTrait types.COMMENT
MEDIUMfyrox-graph/src/lib.rs1813 // Essentially implements ObjectOrVariant for NodeTrait types.COMMENT
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMfyrox-ui/src/grid.rs160/// Here is a simple example that positions several text widgets into a 2 by 2 grid:COMMENT
LOWfyrox-impl/src/scene/camera.rs926 /// Then pass LUT to either CameraBuilder or to camera instance, and don't forget to enableCOMMENT
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWfyrox-ui/src/menu.rs720 // We need to check if some new menu item opened and then close other not inCOMMENT