AI Slop Code Risk Monitor

flame-engine/flame

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

A Flutter based game engine.

2.1 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for flame-engine/flame, a Dart project with 10,810 GitHub stars. SynthScan examined 292,061 lines of code across 2509 source files, recording 503 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 2.1 (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.1
Adjusted Signal
2.1
Raw Pattern Score
100%
Time Factor
2026-11-01
Last Push
10.8K
Stars
Dart
Language
292.1K
Lines of Code
2.5K
Files
503
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 8.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 1.8/100 · LOW

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

PR Review Velocity Impact 10.0/100 · LOW

Which changes need focused human review? 503 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 2HIGH 15MEDIUM 10LOW 476

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 503 distinct pattern matches across 13 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 Block434 hits · 430 pts
SeverityFileLineSnippetContext
LOWexamples/lib/stories/tiled/tiled_culling_example.dart141/// default.COMMENT
LOWscripts/customer_testing.dart1// This file is invoked by the flutter/tests registry entry for FlameCOMMENT
LOWpackages/flame_3d_component/lib/flame_3d_component.dart1/// Renders [flutter_scene](https://pub.dev/packages/flutter_scene) 3D scenesCOMMENT
LOWpackages/flame_3d_component/lib/src/component_3d.dart1import 'dart:math';COMMENT
LOWpackages/flame_3d_component/lib/src/component_3d.dart21/// engine's shader libraries. Geometry and materials rely on those, so createCOMMENT
LOW…ame_studio/linux/flutter/generated_plugin_registrant.h1//COMMENT
LOW…itories/component_repository/component_repository.dart21/// Thrown when creating a [Component] whose name is already taken.COMMENT
LOW…itories/component_repository/component_repository.dart61/// see [Palette.validateColorName].COMMENT
LOW…itories/component_repository/component_repository.dart121 /// Creates a component of [type] called [name], with default properties,COMMENT
LOW…itories/component_repository/component_repository.dart181 /// Writes the Dart code of [component] to the folder [outputPath],COMMENT
LOW…omponent_repository/models/component_capabilities.dart21/// Implemented by every component type backed by a FlameCOMMENT
LOW…tories/component_repository/models/component_tree.dart141 /// The names of the classes this component reserves in the generatedCOMMENT
LOW…es/component_repository/models/component_position.dart1import 'package:equatable/equatable.dart';COMMENT
LOW…ries/component_repository/models/component_anchor.dart1import 'package:equatable/equatable.dart';COMMENT
LOW…ories/component_repository/models/component_paint.dart1import 'package:equatable/equatable.dart';COMMENT
LOW…pository/code_generation/component_code_generator.dart1import 'package:dart_style/dart_style.dart';COMMENT
LOW…nent_editor/widgets/property_editors/number_field.dart1import 'package:flutter/material.dart';COMMENT
LOW…ponent_editor/widgets/property_editors/name_field.dart1import 'package:flutter/material.dart';COMMENT
LOW…onent_editor/widgets/property_editors/color_field.dart1import 'package:flame_studio/repositories/repositories.dart';COMMENT
LOW…ponent_editor/widgets/preview/selection_highlight.dart1import 'package:flame/components.dart' as flame;COMMENT
LOW…component_editor/widgets/preview/preview_hitboxes.dart1import 'package:flame/collisions.dart' as flame;COMMENT
LOW…/lib/component_editor/bloc/component_editor_state.dart41COMMENT
LOW…/lib/component_editor/bloc/component_editor_state.dart61 /// [ComponentEditorStatus.codeFailure]).COMMENT
LOW…o/lib/component_editor/bloc/component_editor_bloc.dart1import 'package:bloc/bloc.dart';COMMENT
LOWpackages/flame_studio/windows/runner/utils.h1#ifndef RUNNER_UTILS_H_COMMENT
LOWpackages/flame_studio/windows/runner/win32_window.cpp1#include "win32_window.h"COMMENT
LOWpackages/flame_studio/windows/runner/resource.h1//{{NO_DEPENDENCIES}}COMMENT
LOW…e_studio/windows/flutter/generated_plugin_registrant.h1//COMMENT
LOWpackages/flame_test/lib/test_paths.dart1/// A set of paths with different kinds of contours, for tests, benchmarks andCOMMENT
LOWpackages/flame_test/lib/src/close_to_matrix4.dart1import 'package:flutter_test/flutter_test.dart';COMMENT
LOWpackages/flame_test/lib/src/flame_test.dart81/// widget builder [createGameWidget], a custom [pumpWidget] function and aCOMMENT
LOWpackages/flame_test/lib/src/test_golden.dart1import 'package:flame/game.dart';COMMENT
LOWpackages/flame_test/lib/src/random_test.dart41/// `testRandom()` must be obtained through the provided random generator.COMMENT
LOWpackages/flame_test/lib/src/random_test.dart101///COMMENT
LOWpackages/flame_test/lib/src/fails_assert.dart1import 'package:test/test.dart';COMMENT
LOWpackages/flame_test/lib/src/test_flame_game.dart1import 'package:flame/game.dart';COMMENT
LOWpackages/flame_test/lib/src/test_flame_game.dart41 tags: tags,COMMENT
LOWpackages/flame_test/lib/src/expect_color.dart1import 'dart:ui' show Color;COMMENT
LOWpackages/flame_test/lib/src/expect_color.dart61/// The alpha component is compared using [closeTo] matcher with a configurableCOMMENT
LOWpackages/flame_fire_atlas/lib/flame_fire_atlas.dart261 /// Loads the atlas image into memory so it can be used, this methodCOMMENT
LOWpackages/flame_lint/lib/flame_lint.dart1/// The flame_lint package doesn't ship any dart source code.COMMENT
LOWpackages/flame_audio/lib/bgm.dart1import 'package:audioplayers/audioplayers.dart';COMMENT
LOWpackages/flame_audio/lib/flame_audio.dart21 ///COMMENT
LOWpackages/flame_splash_screen/lib/src/theme.dart101/// Wraps the splash screen layout options.COMMENT
LOW…viors/lib/src/behaviors/screen_collision_behavior.dart1import 'package:flame/components.dart';COMMENT
LOW…viors/lib/src/behaviors/screen_collision_behavior.dart21/// parent.position.x = screen.position.x;COMMENT
LOW…/lib/src/behaviors/propagating_collision_behavior.dart41/// the collision through to any [CollisionBehavior]s that are attached to theCOMMENT
LOWpackages/flame_isolate/lib/flame_isolate.dart1import 'package:flame/components.dart';COMMENT
LOWpackages/flame_isolate/lib/flame_isolate.dart21///COMMENT
LOWpackages/flame_isolate/lib/flame_tailored_isolate.dart1import 'package:flame/components.dart';COMMENT
LOWpackages/flame_isolate/lib/flame_tailored_isolate.dart21///COMMENT
LOW…ges/flame_devtools/lib/widgets/behavior_tree_view.dart1import 'package:flame_devtools/behavior_tree_snapshot.dart';COMMENT
LOW…ges/flame_behavior_tree/lib/src/has_behavior_tree.dart1import 'dart:math';COMMENT
LOW…ges/flame_behavior_tree/lib/src/has_behavior_tree.dart21/// owner: this,COMMENT
LOWpackages/flame_behavior_tree/lib/src/nodes/move_to.dart1import 'package:behavior_tree/behavior_tree.dart';COMMENT
LOW…ges/flame_behavior_tree/lib/src/nodes/play_effect.dart1import 'package:behavior_tree/behavior_tree.dart';COMMENT
LOW…ges/flame_behavior_tree/lib/src/nodes/play_effect.dart21/// ),COMMENT
LOW…ior_tree/lib/src/devtools/behavior_tree_connector.dart1import 'dart:convert';COMMENT
LOW…es/flame_behavior_tree/behavior_tree/lib/src/node.dart1import 'package:behavior_tree/behavior_tree.dart';COMMENT
LOW…es/flame_behavior_tree/behavior_tree/lib/src/node.dart21 /// It does not have any effect on how the node behaves, but it makes a treeCOMMENT
374 more matches not shown…
Cross-File Repetition14 hits · 70 pts
SeverityFileLineSnippetContext
HIGH…enny/test/structure/expressions/operators/or_test.dart0line: false true true line: false true line: true true true line: false false false falseSTRING
HIGH…nny/test/structure/expressions/operators/xor_test.dart0line: false true true line: false true line: true true true line: false false false falseSTRING
HIGH…nny/test/structure/expressions/operators/and_test.dart0line: false true true line: false true line: true true true line: false false false falseSTRING
HIGH…nny/test/structure/expressions/operators/not_test.dart0line: false true true line: false true line: true true true line: false false false falseSTRING
HIGH…cture/expressions/operators/greater_or_equal_test.dart0line: false true true line: false true line: true true true line: false false false falseSTRING
HIGH…tructure/expressions/operators/less_or_equal_test.dart0line: false true true line: false true line: true true true line: false false false falseSTRING
HIGH…ny/test/structure/expressions/functions/bool_test.dart0line: false true true line: false true line: true true true line: false false false falseSTRING
HIGH…ents/component_mixins/tertiary_tap_callbacks_test.dart0does not receive an event when double-tapping a position far from the componentSTRING
HIGH…nts/component_mixins/secondary_tap_callbacks_test.dart0does not receive an event when double-tapping a position far from the componentSTRING
HIGH…events/component_mixins/double_tap_callbacks_test.dart0does not receive an event when double-tapping a position far from the componentSTRING
HIGHpackages/flame/lib/src/components/sprite_component.dart0if size is set, autoresize should be false or size should be null when autoresize is true.STRING
HIGH…s/flame/lib/src/components/sprite_group_component.dart0if size is set, autoresize should be false or size should be null when autoresize is true.STRING
HIGH…ame/lib/src/components/sprite_animation_component.dart0if size is set, autoresize should be false or size should be null when autoresize is true.STRING
HIGH…b/src/components/sprite_animation_group_component.dart0if size is set, autoresize should be false or size should be null when autoresize is true.STRING
Decorative Section Separators8 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUM⚡doc/_sphinx/extensions/dart_domain.py221 # ----------------------------------------------------------------------------------------------COMMENT
MEDIUM⚡doc/_sphinx/extensions/dart_domain.py223 # ----------------------------------------------------------------------------------------------COMMENT
MEDIUMdoc/_sphinx/extensions/flutter_app.py14# ------------------------------------------------------------------------------COMMENT
MEDIUMdoc/_sphinx/extensions/flutter_app.py16# ------------------------------------------------------------------------------COMMENT
MEDIUMdoc/_sphinx/extensions/flutter_app.py266# ------------------------------------------------------------------------------COMMENT
MEDIUMdoc/_sphinx/extensions/flutter_app.py268# ------------------------------------------------------------------------------COMMENT
MEDIUMdoc/_sphinx/extensions/flutter_app.py292# ------------------------------------------------------------------------------COMMENT
MEDIUMdoc/_sphinx/extensions/flutter_app.py294# ------------------------------------------------------------------------------COMMENT
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICALpackages/flame/test/components/component_test.dart808 game.world.children.first.children.elementAt(0),CODE
CRITICALpackages/flame/test/components/component_test.dart812 game.world.children.first.children.elementAt(1),CODE
Example Usage Blocks10 hits · 15 pts
SeverityFileLineSnippetContext
LOWpackages/flame_test/lib/src/expect_color.dart13/// Example usage:COMMENT
LOWpackages/flame_test/lib/src/expect_color.dart66/// Example usage:COMMENT
LOW…ages/flame/lib/src/experimental/padding_component.dart23/// Example usage:COMMENT
LOWpackages/flame/lib/src/experimental/row_component.dart21/// Example usage:COMMENT
LOW…kages/flame/lib/src/experimental/column_component.dart21/// Example usage:COMMENT
LOW…ges/flame/lib/src/experimental/expanded_component.dart23/// Example usage:COMMENT
LOWpackages/flame/lib/src/components/icon_component.dart19/// Example usage:COMMENT
LOWpackages/flame/lib/src/components/component_pool.dart11/// Example usage:COMMENT
LOW…flame/lib/src/components/core/component_tree_root.dart210 /// Example usage:COMMENT
LOWpackages/flame/lib/src/text/renderers/text_paint.dart32 /// Example usage:COMMENT
Fake / Example Data8 hits · 11 pts
SeverityFileLineSnippetContext
LOWdoc/other_modules/jenny/language/markup.md1<!-- cSpell:ignore lorem ipsum dolor sit amet, consectetur adipiscing elit -->CODE
LOWdoc/other_modules/jenny/language/markup.md1<!-- cSpell:ignore lorem ipsum dolor sit amet, consectetur adipiscing elit -->CODE
LOW⚡doc/other_modules/jenny/language/markup.md33Lorem ipsum dolor sit amet, [bold]consectetur adipiscing elit[/]CODE
LOW⚡doc/other_modules/jenny/language/markup.md33Lorem ipsum dolor sit amet, [bold]consectetur adipiscing elit[/]CODE
LOW⚡doc/other_modules/jenny/language/markup.md42Lorem ipsum dolor sit amet, [wave/] consectetur adipiscing elit.CODE
LOW⚡doc/other_modules/jenny/language/markup.md42Lorem ipsum dolor sit amet, [wave/] consectetur adipiscing elit.CODE
LOW⚡doc/other_modules/jenny/language/markup.md50Lorem ipsum [color name=$color]dolor sit amet[/color]CODE
LOW⚡doc/other_modules/jenny/language/markup.md50Lorem ipsum [color name=$color]dolor sit amet[/color]CODE
Hyper-Verbose Identifiers10 hits · 10 pts
SeverityFileLineSnippetContext
LOWdoc/_sphinx/extensions/dart_domain.py158 def _scan_source_file_if_needed(self):CODE
LOW⚡doc/_sphinx/extensions/dart_domain.py225 def _generate_node_for_declaration(self, data: Dict, level: int) -> Element:CODE
LOWdoc/_sphinx/extensions/dart_domain.py252 def _generate_class_signature_node(self, data: Dict, level: int) -> Element:CODE
LOWdoc/_sphinx/extensions/dart_domain.py280 def _generate_function_signature_node(self, data: Dict, level: int) -> Element:CODE
LOWdoc/_sphinx/extensions/dart_domain.py327 def _generate_field_signature_node(self, data: Dict, level: int) -> Element:CODE
LOWdoc/_sphinx/extensions/dart_domain.py353 def _generate_type_parameters_node(self, data: Dict) -> Optional[Element]:CODE
LOWdoc/_sphinx/extensions/dart_domain.py376 def _generate_constructors_section(self, data: Dict, level: int) -> Optional[Element]:CODE
LOWdoc/_sphinx/extensions/dart_domain.py387 def _generate_methods_section(self, data: Dict, level: int) -> Optional[Element]:CODE
LOWdoc/_sphinx/extensions/dart_domain.py398 def _generate_properties_section(self, data: Dict, level: int) -> Optional[Element]:CODE
LOWdoc/_sphinx/scripts/versions.js26function convertVersionsToHtmlLinks(versionsList, currentVersion) {CODE
Slop Phrases8 hits · 10 pts
SeverityFileLineSnippetContext
LOWexamples/lib/stories/widgets/widgets.dart54 can use the `NineTileBox` which is showcased here, don't forget to checkCODE
LOWexamples/lib/stories/widgets/widgets.dart86 you can create a `SpriteButton`, don't forget to check out the settingsCODE
LOWexamples/lib/stories/widgets/widgets.dart110 you can create a `SpriteWidget`, don't forget to check out the settingsCODE
LOWexamples/lib/stories/widgets/widgets.dart161 a `SpriteWidget`, don't forget to check out the settings in the knobsCODE
LOWexamples/lib/stories/widgets/widgets.dart188 tree you can create a `SpriteAnimationWidget`, don't forget to check outCODE
LOWpackages/flame_3d/lib/src/game/notifying_vector3.dart10/// subscribe to notifications, don't forget to eventually unsubscribe inCOMMENT
LOW…ckages/flame_3d/lib/src/game/notifying_quaternion.dart12/// subscribe to notifications, don't forget to eventually unsubscribe inCOMMENT
LOWpackages/flame/lib/src/game/notifying_vector2.dart9/// subscribe to notifications, don't forget to eventually unsubscribe inCOMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGH…rc/events/dispatchers/multi_drag_scale_dispatcher.dart81 /// [component], then enables drag and/or scale as requested.COMMENT
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM…lame/lib/src/experimental/linear_layout_component.dart342 // Essentially the same as start, but gap is set.COMMENT
MEDIUMpackages/flame/lib/src/components/core/component.dart763 /// This method is robust towards being called from any place in the userCOMMENT
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWdoc/_sphinx/extensions/package.py24CODE
LOWdoc/_sphinx/extensions/dart_domain.py398CODE
LOWdoc/_sphinx/extensions/dart_domain.py441CODE
LOWdoc/_sphinx/extensions/dart_domain.py564CODE
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpackages/flame/lib/src/experimental/raycast_result.dart11/// NOTE: This class might be subject to breaking changes in an upcomingCOMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWdoc/_sphinx/extensions/yarn_lexer.py4CODE