AI Slop Code Risk Monitor

mruby/mruby

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

Lightweight Ruby

2.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for mruby/mruby, a C project with 5,624 GitHub stars. SynthScan examined 251,027 lines of code across 738 source files, recording 659 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 2.9 (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.9
Adjusted Signal
2.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
5.6K
Stars
C
Language
251.0K
Lines of Code
738
Files
659
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 12.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.7/100 · LOW

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

Agent Over-Engineering Ratio 1.4/100 · LOW

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

PR Review Velocity Impact 13.3/100 · LOW

Which changes need focused human review? 659 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 0MEDIUM 30LOW 629

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 659 distinct pattern matches across 10 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 Block581 hits · 571 pts
SeverityFileLineSnippetContext
LOWbuild_config.rb1# The default build configuration file was moved to `build_config/default.rb`.COMMENT
LOWbenchmark/bm_app_lc_fizzbuzz.rb1#COMMENT
LOWbenchmark/vm_optimization_bench.rb1# VM Optimization Benchmarks for mrubyCOMMENT
LOWtools/gen_unicase.rb1# Generate the Unicode case mapping table from the Unicode Character Database.COMMENT
LOWtools/gen_unicase.rb21# Title case is stored as its difference from upper case, which is 181 entriesCOMMENT
LOWtools/unicode/ctype_data.rb1# The Unicode Character Database, as the character type table generator readsCOMMENT
LOWtools/unicode/ctype_data.rb21COMMENT
LOWtools/unicode/corpus_data.rb1# Which characters a differential test has to ask about, chosen from theCOMMENT
LOWtools/unicode/corpus_data.rb41 # has a Unicode of its own. A release reaches mruby's pinned tables beforeCOMMENT
LOWtools/unicode/case_data.rb1# The Unicode Character Database, as the case table generators read it.COMMENT
LOWtools/unicode/ucd.rb1# The Unicode Character Database: which release the tables are generatedCOMMENT
LOWtools/unicode/ucd.rb61 # from. The version a file names on its first line would answer for mostCOMMENT
LOWmrblib/compar.rb1##COMMENT
LOWmrblib/compar.rb41 ##COMMENT
LOWmrblib/compar.rb61 # false.COMMENT
LOWmrblib/compar.rb81 def >= otherCOMMENT
LOWmrblib/string.rb81 # Replace all matches of `pattern` with `replacement`.COMMENT
LOWmrblib/string.rb161 # those two methods requires Regexp that is optional in mrubyCOMMENT
LOWmrblib/enum.rb1##COMMENT
LOWmrblib/enum.rb21 # if one block value is false. OtherwiseCOMMENT
LOWmrblib/enum.rb221 # yield by `each`. If no block is given <=>COMMENT
LOWmrblib/enum.rb301 endCOMMENT
LOWmrblib/enum.rb361 ##COMMENT
LOWmrblib/array.rb1##COMMENT
LOWmrblib/array.rb41 idx += 1COMMENT
LOWmrblib/array.rb81 ##COMMENT
LOWmrblib/numeric.rb1##COMMENT
LOWmrblib/hash.rb1##COMMENT
LOWmrblib/hash.rb21 # was found. Return nil if nothing wasCOMMENT
LOWmrblib/hash.rb41 # and pass the key and value of each element.COMMENT
LOWmrblib/hash.rb61 while i < lenCOMMENT
LOWmrblib/hash.rb81 # <em>produces:</em>COMMENT
LOWmrblib/hash.rb101 # If no block is given, an enumerator is returned instead.COMMENT
LOWmrblib/hash.rb121 # hsh.merge(other_hash..) -> hshCOMMENT
LOWmrblib/hash.rb181 self.delete(k)COMMENT
LOWmrblib/hash.rb241COMMENT
LOWmrblib/range.rb1##COMMENT
LOWmrblib/kernel.rb1##COMMENT
LOWtest/assert.rb261# Matches any string.COMMENT
LOWtest/t/localjumperror.rb1##COMMENT
LOWtest/t/module.rb941 # module MCOMMENT
LOWtest/t/module.rb961 # assert_true a.respond_to?(:foo), bug8005COMMENT
LOWtest/t/module.rb981 # assert 'Module#prepend super in alias' doCOMMENT
LOWtest/t/module.rb1021COMMENT
LOWtest/t/integer.rb101COMMENT
LOWtest/t/integer.rb201 assert_equal(-1, imax <=> fmax)COMMENT
LOWtest/t/regexperror.rb1##COMMENT
LOWtest/t/float.rb121COMMENT
LOWtest/t/float.rb161assert('a Float is the object that holds what it holds') doCOMMENT
LOWtest/t/env.rb1# The shape of a closed env's heap stack (mruby/internal.h).COMMENT
LOWtest/t/gc.rb121# that allocates bytes without allocating objects therefore has to advance theCOMMENT
LOWtest/t/gc.rb181 assert_true (GC.generational_mode = true)COMMENT
LOWtest/t/gc.rb201#COMMENT
LOWtest/t/lang.rb1# The aim of these tests is to detect pitfall for optimized VM.COMMENT
LOWinclude/mruby.h41#endifCOMMENT
LOWinclude/mruby.h61#define SIZE_MAX __SIZE_MAX__COMMENT
LOWinclude/mruby.h81#if (defined __cplusplus && __cplusplus >= 201703L)COMMENT
LOWinclude/mruby.h121#define mrb_static_assert_powerof2(num) mrb_static_assert((num) > 0 && (num) == ((num) & -(num)), "need power of 2 for "COMMENT
LOWinclude/mruby.h1681#define ISUPPER(c) (((unsigned)(c) - 'A') < 26)COMMENT
LOWinclude/mruby.h1721#define E_RANGE_ERROR mrb_exc_get_id(mrb, MRB_ERROR_SYM(RangeError))COMMENT
521 more matches not shown…
Decorative Section Separators18 hits · 54 pts
SeverityFileLineSnippetContext
MEDIUMbenchmark/vm_optimization_bench.rb35#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb38#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb61#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb64#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb125#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb128#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb207#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb210#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb264#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb267#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb314#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb317#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb373#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb376#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb424#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb427#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb457#=============================================================================COMMENT
MEDIUMbenchmark/vm_optimization_bench.rb459#=============================================================================COMMENT
Self-Referential Comments12 hits · 40 pts
SeverityFileLineSnippetContext
MEDIUMtest/assert.rb55# Create the assertion in a readable wayCOMMENT
MEDIUMmrbgems/mruby-struct/mrblib/struct.rb53 # Create a hash from member names and struct values. If a block isCOMMENT
MEDIUM⚡mrbgems/mruby-struct/src/struct.c292 * # Create a structure with a name in StructCOMMENT
MEDIUM⚡mrbgems/mruby-struct/src/struct.c296 * # Create a structure named by its constantCOMMENT
MEDIUM⚡mrbgems/mruby-struct/src/struct.c300 * # Create a structure with keyword initializationCOMMENT
MEDIUMmrbgems/mruby-task/examples/statistics.rb29# Create a monitor taskCOMMENT
MEDIUMmrbgems/mruby-task/examples/simple.rb7# Create a simple taskCOMMENT
MEDIUMmrbgems/mruby-task/examples/suspend_resume.rb9# Create a worker taskCOMMENT
MEDIUMmrbgems/mruby-task/examples/suspend_resume.rb19# Create a controller taskCOMMENT
MEDIUMmrbgems/mruby-task/examples/inspection.rb29# Create an observer taskCOMMENT
MEDIUMmrbgems/mruby-data/mrblib/data.rb15 # Create a hash from member names and values. If a block is given, itCOMMENT
MEDIUMmrbgems/mruby-data/src/data.c315 * # Create a structure named by its constantCOMMENT
Fake / Example Data22 hits · 37 pts
SeverityFileLineSnippetContext
LOW⚡mrbgems/mruby-struct/src/struct.c302 * User.new(id: 1, email: "user@example.com")COMMENT
LOW⚡mrbgems/mruby-struct/src/struct.c303 * #=> #<struct User id=1, email="user@example.com">COMMENT
LOWmrbgems/mruby-struct/src/struct.c690 * jane = Customer.new("Jane Doe", "456 Elm, Anytown NC", 12345)COMMENT
LOW⚡mrbgems/mruby-data/README.md32customer1 = Customer.new("John Doe", "123 Main St", 12345)CODE
LOW⚡mrbgems/mruby-data/README.md32customer1 = Customer.new("John Doe", "123 Main St", 12345)CODE
LOW⚡mrbgems/mruby-data/README.md38customer2 = Customer.new(name: "Jane Doe", address: "456 Oak Ave", zip: 67890)CODE
LOWmrbgems/mruby-data/README.md49puts customer1.name # Output: "John Doe"CODE
LOW⚡mrbgems/mruby-data/README.md78 # Output: {:name=>"John Doe", :address=>"123 Main St", :zip=>12345}COMMENT
LOW⚡mrbgems/mruby-data/README.md78 # Output: {:name=>"John Doe", :address=>"123 Main St", :zip=>12345}COMMENT
LOW⚡mrbgems/mruby-data/README.md85 # Output: ["John Doe", "123 Main St", 12345]COMMENT
LOW⚡mrbgems/mruby-data/README.md85 # Output: ["John Doe", "123 Main St", 12345]COMMENT
LOW⚡mrbgems/mruby-data/README.md92 # Output: {name: "John Doe"}COMMENT
LOW⚡mrbgems/mruby-data/README.md96 p name # Output: "John Doe"CODE
LOW⚡mrbgems/mruby-data/README.md111 puts customer1 # Output: #<data Customer name="John Doe", address="123 Main St", zip=12345>CODE
LOW⚡mrbgems/mruby-data/README.md111 puts customer1 # Output: #<data Customer name="John Doe", address="123 Main St", zip=12345>CODE
LOW⚡mrbgems/mruby-data/README.md112 p customer1 # Output: #<data Customer name="John Doe", address="123 Main St", zip=12345>CODE
LOW⚡mrbgems/mruby-data/README.md112 p customer1 # Output: #<data Customer name="John Doe", address="123 Main St", zip=12345>CODE
LOWmrbgems/mruby-data/src/data.c220 * Customer.new("Joe", "123 Main St", 12345)COMMENT
LOWmrbgems/mruby-data/src/data.c221 * Customer.new(name: "Joe", address: "123 Main St", zip: 12345)COMMENT
LOWmrbgems/mruby-data/src/data.c398 * customer = Customer.new("Joe", "123 Main St", 12345)COMMENT
LOWmrbgems/mruby-data/src/data.c430 * jane = Customer.new("Jane Doe", "456 Elm, Anytown NC", 12345)COMMENT
LOWdoc/guides/mrbgems.md281 spec.author = 'John Doe'CODE
Hyper-Verbose Identifiers16 hits · 18 pts
SeverityFileLineSnippetContext
LOW⚡test/assert.rb339def assert_raise_with_message(*args, &block)CODE
LOW⚡test/assert.rb342def assert_raise_with_message_pattern(*args, &block)CODE
LOW⚡test/assert.rb345def _assert_raise_with_message(type, exc, exp_msg, msg = nil, &block)CODE
LOWtest/t/module.rb24def assert_uninitialized_const(&block)CODE
LOWtest/t/syntax.rb2399def defined_anonymous_forwarding(*, **, &)CODE
LOWmrbgems/mruby-regexp/test/backref_scope.rb109def backref_scope_fiber_carried(pr)CODE
LOWmrbgems/mruby-regexp/test/backref_scope.rb642def backref_scope_suspended_slot_writer(md)CODE
LOWmrbgems/mruby-regexp/test/backref_scope.rb646def backref_scope_fiber_write_window(md)CODE
LOWmrbgems/mruby-io/test/file.rb6def assert_dirname_with_level(path, results)CODE
LOWmrbgems/mruby-array-ext/test/array.rb4def assert_permutation_combination(exp, receiver, meth, *args)CODE
LOWmrbgems/mruby-array-ext/test/array.rb21def assert_repeated_permutation(exp, receiver, *args)CODE
LOWmrbgems/mruby-array-ext/test/array.rb25def assert_repeated_combination(exp, receiver, *args)CODE
LOWlib/mruby/amalgam.rb678 def write_static_rename_cleanup(f, collisions)CODE
LOWlib/mruby/amalgam.rb836 def opcode_macro_reconciliation(header)CODE
LOWlib/mruby/amalgam.rb850 def transform_source_includes(content, source_dir = nil)CODE
LOWlib/mruby/build.rb861 def define_installer_if_needed(bin)CODE
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippetContext
LOWmrbgems/mruby-pack/test/pack.rb93 # Check if last two characters are backtick and newlineCOMMENT
LOWscripts/check_makefiles_for_tabs.sh5 # Check if the file exists and is a regular fileCOMMENT
LOWlib/mruby/amalgam.rb952 # Check if header was already processedCOMMENT
LOWlib/mruby/amalgam.rb963 # Check if this is an mruby header that should be inlined/transformedCOMMENT
Structural Annotation Overuse3 hits · 4 pts
SeverityFileLineSnippetContext
LOWdoc/guides/rom-method-table.md75### Step 1: Define the Static DataCOMMENT
LOWdoc/guides/rom-method-table.md90### Step 2: Register in the Init FunctionCOMMENT
LOWdoc/guides/rom-method-table.md107### Step 3: VerifyCOMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWmrbgems/mruby-proc-ext/mrblib/proc.rb46 # Instances of class Proc simply return themselves.COMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWbuild_config/cosmopolitan.rb15# Usage:COMMENT
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/gc.c705 arguments. Don't forget to remove the object usingCODE