AI Slop Code Risk Monitor

StevenBlack/hosts

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

🔒 Consolidating and extending hosts files from several well-curated sources. Optionally pick extensions for porn, social media, and other categories.

1.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for StevenBlack/hosts, a Python project with 31,349 GitHub stars. SynthScan examined 29,497 lines of code across 121 source files, recording 46 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 1.7 (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.7
Adjusted Signal
1.7
Raw Pattern Score
100%
Time Factor
2026-10-29
Last Push
31.3K
Stars
Python
Language
29.5K
Lines of Code
121
Files
46
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 6.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

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

Agent Over-Engineering Ratio 6.4/100 · LOW

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

PR Review Velocity Impact 9.2/100 · LOW

Which changes need focused human review? 46 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 3LOW 42

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 46 distinct pattern matches across 7 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 Identifiers30 hits · 28 pts
SeverityFileLineSnippetContext
LOW⚡testUpdateHostsFile.py1627 def test_multiple_space_as_separator(self):CODE
LOW⚡testUpdateHostsFile.py1637 def test_multiple_tabs_as_separator(self):CODE
LOW⚡testUpdateHostsFile.py1647 def test_line_with_comment_at_the_end(self):CODE
LOWtestUpdateHostsFile.py221 def test_no_freshen_no_new_file(self):CODE
LOWtestUpdateHostsFile.py267 def test_no_freshen_fail_new_file(self, mock_open):CODE
LOWtestUpdateHostsFile.py512 def test_only_common_exclusions(self, mock_gather, mock_exclude, _):CODE
LOWtestUpdateHostsFile.py534 def test_mixture_gatherexclusions(self, mock_gather, mock_exclude, _):CODE
LOWtestUpdateHostsFile.py573 def test_invalid_exclude_domain(self):CODE
LOWtestUpdateHostsFile.py584 def test_valid_exclude_domain(self):CODE
LOWtestUpdateHostsFile.py721 def test_update_only_extensions(self, mock_join_robust, *_):CODE
LOWtestUpdateHostsFile.py745 def test_update_both_pathways(self, mock_join_robust, *_):CODE
LOWtestUpdateHostsFile.py815 def test_sources_fail_succeed(self, mock_get, mock_write, *_):CODE
LOWtestUpdateHostsFile.py1012 def test_strip_raw_with_comment(self):CODE
LOWtestUpdateHostsFile.py1072 def test_basic_include_static_hosts(self):CODE
LOWtestUpdateHostsFile.py1099 def test_basic_include_static_hosts_linux(self):CODE
LOWtestUpdateHostsFile.py1340 def test_set_no_unified_hosts(self):CODE
LOWtestUpdateHostsFile.py1408 def test_move_hosts_posix_fail(self, *_):CODE
LOWtestUpdateHostsFile.py1507 def test_flush_posix_fail_then_succeed(self, *_):CODE
LOWtestUpdateHostsFile.py1544 def test_remove_hosts_file_exists(self):CODE
LOWtestUpdateHostsFile.py1560 def test_remove_hosts_file_backup(self, _):CODE
LOWtestUpdateHostsFile.py1748 def test_connect_unknown_domain(self):CODE
LOWtestUpdateHostsFile.py2094 def test_print_success_no_support(self, _):CODE
LOWtestUpdateHostsFile.py2103 def test_print_success_support(self, _):CODE
LOWtestUpdateHostsFile.py2118 def test_print_failure_no_support(self, _):CODE
LOWtestUpdateHostsFile.py2127 def test_print_failure_support(self, _):CODE
LOWupdateHostsFile.py430def prompt_for_flush_dns_cache(flushcache, promptflush):CODE
LOWupdateHostsFile.py521def display_exclusion_options(commonexclusions, exclusionpattern, exclusionregexes):CODE
LOWupdateHostsFile.py1407def move_hosts_file_into_place(finalfile):CODE
LOWupdateHostsFile.py1806def is_valid_user_provided_domain_format(domain):STRING
LOWmakeHosts.py56def recursively_loop_extensions(extension, extensions, current_extensions):CODE
Deep Nesting6 hits · 6 pts
SeverityFileLineSnippetContext
LOWupdateReadme.py20CODE
LOWupdateHostsFile.py100CODE
LOWupdateHostsFile.py916CODE
LOWupdateHostsFile.py1407CODE
LOWupdateHostsFile.py1471CODE
LOWupdateHostsFile.py1599CODE
Excessive Try-Catch Wrapping6 hits · 6 pts
SeverityFileLineSnippetContext
LOWupdateHostsFile.py789 except Exception:CODE
MEDIUMupdateHostsFile.py790 print("Error in updating source: ", updateurl)CODE
LOWupdateHostsFile.py954 except Exception as e:CODE
LOWupdateHostsFile.py1429 except Exception:STRING
LOWupdateHostsFile.py1450 except Exception:STRING
MEDIUMupdateHostsFile.py1725 print("Error retrieving data from {}".format(url))STRING
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHupdateHostsFile.py1671except IndexError:CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMupdateHostsFile.py371 # Create a hosts file if it doesn't exist.COMMENT
TODO Padding1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtestUpdateHostsFile.py1369 def test_move_hosts_no_name(self, _): # TODO: Create test which tries to move actual fileCODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWmakeHosts.py8CODE