AI Slop Code RIsk Monitor

gruns/icecream

🍦 Never use print() to debug again.

19.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for gruns/icecream, a Python project with 10,109 GitHub stars. SynthScan examined 3,951 lines of code across 21 source files, recording 75 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 19.9 (Elevated 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.

19.9
Adjusted Signal
19.9
Raw Pattern Score
100%
Time Factor
2026-08-21
Last Push
10.1K
Stars
Python
Language
4.0K
Lines of Code
21
Files
75
Pattern Hits
2026-10-12
Scan Date
0.05
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 51.1/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 3.7/100 · LOW

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

Agent Over-Engineering Ratio 56.4/100 · HIGH

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

PR Review Velocity Impact 68.8/100 · HIGH

Which changes need focused human review? 75 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 6LOW 68

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 75 distinct pattern matches across 8 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.

Hyper-Verbose Identifiers49 hits · 44 pts
SeverityFileLineSnippetContext
LOW⚡tests/test_icecream.py451 def test_multiline_value_wrapped(self):CODE
LOW⚡tests/test_icecream.py459 def test_include_context_single_line(self):CODE
LOW⚡tests/test_icecream.py468 def test_context_abs_path_single_line(self):CODE
LOW⚡tests/test_icecream.py578 def test_no_source_available_issues_exactly_one_warning(self):CODE
LOW⚡tests/test_icecream.py587 def test_single_tuple_argument(self):CODE
LOW⚡tests/test_icecream.py594 def test_flat_medium_list_prints_on_one_line(self):CODE
LOW⚡tests/test_icecream.py897 def test_timer_decorator_when_disabled(self):CODE
LOW⚡tests/test_icecream.py907 def test_timer_decorator_output_on_exception(self):CODE
LOW⚡tests/test_icecream.py916 def test_timer_decorator_prefix_configuration(self):CODE
LOW⚡tests/test_icecream.py924 def test_timer_decorator_output_function(self):CODE
LOW⚡tests/test_icecream.py932 def test_timer_decorator_preserves_function_metadata(self):CODE
LOW⚡tests/test_icecream.py941 def test_timer_context_manager_basic(self):CODE
LOW⚡tests/test_icecream.py948 def test_timer_context_manager_measures_elapsed_time(self):CODE
LOW⚡tests/test_icecream.py964 def test_timer_context_manager_propagates_exception(self):CODE
LOW⚡tests/test_icecream.py971 def test_timer_context_manager_exit_without_enter(self):CODE
LOW⚡tests/test_icecream.py976 def test_timer_context_manager_when_disabled(self):CODE
LOWtests/test_icecream.py77def configure_icecream_output(prefix=None, outputFunction=None,CODE
LOWtests/test_icecream.py273 def test_expression_arguments(self):CODE
LOWtests/test_icecream.py288 def test_multiple_calls_on_same_line(self):CODE
LOWtests/test_icecream.py295 def test_call_surrounded_by_expressions(self):CODE
LOWtests/test_icecream.py343 def test_prefix_configuration(self):CODE
LOWtests/test_icecream.py394 def test_arg_to_string_function(self):CODE
LOWtests/test_icecream.py405 def test_singledispatch_argument_to_string(self):CODE
LOWtests/test_icecream.py423 def test_single_argument_long_line_not_wrapped(self):CODE
LOWtests/test_icecream.py432 def test_multiple_arguments_long_line_wrapped(self):CODE
LOWtests/test_icecream.py486 def test_include_context_multi_line(self):CODE
LOWtests/test_icecream.py498 def test_context_abs_path_multi_line(self):CODE
LOWtests/test_icecream.py510 def test_empty_repr_multiline_output_no_crash(self):CODE
LOWtests/test_icecream.py539 def test_multiline_invocation_with_comments(self):CODE
LOWtests/test_icecream.py554 def test_no_source_available_prints_values(self):CODE
LOWtests/test_icecream.py564 def test_no_source_available_prints_multiline(self):CODE
LOWtests/test_icecream.py608 def test_multiline_container_args(self):CODE
LOWtests/test_icecream.py650 def test_multiple_tuple_arguments(self):CODE
LOWtests/test_icecream.py664 def test_configure_output_with_no_parameters(self):CODE
LOWtests/test_icecream.py668 def test_multiline_strings_output(self):CODE
LOWtests/test_icecream.py697 def test_sympy_dict_keys_do_not_crash(self):CODE
LOWtests/test_icecream.py718 def test_non_ascii_characters_no_syntax_highlighting(self):CODE
LOWtests/test_icecream.py742 def test_sympy_solve_result_does_not_crash(self):CODE
LOWtests/test_icecream.py761 def test_no_color_disables_coloring(self):CODE
LOWtests/test_icecream.py774 def test_no_color_with_use_stdout(self):CODE
LOWtests/test_icecream.py789 def test_no_color_with_use_stderr(self):CODE
LOWtests/test_icecream.py822 def test_no_color_with_explicit_output_function(self):CODE
LOWtests/test_icecream.py836 def test_with_timer_decorator(self):CODE
LOWtests/test_icecream.py850 def test_timer_decorator_nested(self):CODE
LOWtests/test_icecream.py873 def test_timer_decorator_return_value(self):CODE
LOWtests/test_icecream.py885 def test_timer_decorator_with_arguments(self):CODE
LOWtests/test_icecream.py987 def test_timer_context_manager_resets_enter_time_after_exit(self):CODE
LOWicecream/icecream.py220 def get_text_with_indentation(self, node: ast.expr) -> str:CODE
LOWicecream/icecream.py238def prefix_first_line_indent_remaining(prefix: str, s: str) -> List[str]:CODE
Dead Code6 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMfailures-to-investigate/freshsales3.py365CODE
MEDIUMfailures-to-investigate/freshsales3.py366CODE
MEDIUMfailures-to-investigate/freshsales.py345CODE
MEDIUMfailures-to-investigate/freshsales.py346CODE
MEDIUMfailures-to-investigate/freshsales2.py358CODE
MEDIUMfailures-to-investigate/freshsales2.py359CODE
Over-Commented Block9 hits · 9 pts
SeverityFileLineSnippetContext
LOWsetup.py1#!/usr/bin/env python3COMMENT
LOWtests/install_test_import.py1# -*- coding: utf-8 -*-COMMENT
LOWicecream/coloring.py1# -*- coding: utf-8 -*-COMMENT
LOWicecream/__init__.py1# -*- coding: utf-8 -*-COMMENT
LOWicecream/icecream.py1#!/usr/bin/env pythonCOMMENT
LOWicecream/icecream.py421COMMENT
LOWfailures-to-investigate/freshsales3.py21COMMENT
LOWfailures-to-investigate/freshsales.py21COMMENT
LOWfailures-to-investigate/freshsales2.py21COMMENT
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtests/test_install.py33except AttributeError: # Already uninstalled.CODE
Unused Imports3 hits · 3 pts
SeverityFileLineSnippetContext
LOWicecream/__init__.py13CODE
LOWicecream/__init__.py14CODE
LOWicecream/__init__.py14CODE
AI Structural Patterns3 hits · 3 pts
SeverityFileLineSnippetContext
LOWicecream/icecream.py226CODE
LOWicecream/icecream.py349CODE
LOWicecream/icecream.py390CODE
Excessive Try-Catch Wrapping3 hits · 2 pts
SeverityFileLineSnippetContext
LOWtests/test_icecream.py702 except Exception:CODE
LOWtests/test_icecream.py747 except Exception:CODE
LOWicecream/icecream.py111 except Exception:CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWicecream/icecream.py493CODE