AI Slop Code RIsk Monitor

django/channels

Developer-friendly asynchrony for Django

14.4 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for django/channels, a Python project with 6,363 GitHub stars. SynthScan examined 6,519 lines of code across 69 source files, recording 66 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 14.4 (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.

14.4
Adjusted Signal
14.4
Raw Pattern Score
100%
Time Factor
2026-08-06
Last Push
6.4K
Stars
Python
Language
6.5K
Lines of Code
69
Files
66
Pattern Hits
2026-10-12
Scan Date
0.09
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 36.4/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 3.0/100 · LOW

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

Agent Over-Engineering Ratio 41.1/100 · MEDIUM

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

PR Review Velocity Impact 53.6/100 · HIGH

Which changes need focused human review? 66 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 6MEDIUM 2LOW 58

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 66 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 Identifiers37 hits · 37 pts
SeverityFileLineSnippetContext
LOWtests/test_inmemorychannel.py74async def test_process_local_send_receive(channel_layer):CODE
LOWtests/test_layers.py68 def test_backend_import_error_not_hidden(self):CODE
LOWtests/test_layers.py108def test_channel_and_group_name_validation(method, channel_name, expected_valid):CODE
LOWtests/test_layers.py122def test_group_name_length_error_message(name):CODE
LOWtests/test_layers.py140def test_channel_name_length_error_message(name):CODE
LOWtests/test_layers.py152def test_deprecated_valid_channel_name():CODE
LOWtests/test_layers.py169def test_deprecated_valid_group_name():CODE
LOWtests/test_generic_http.py95async def test_async_http_consumer_future():CODE
LOWtests/test_generic_http.py131 def receive_awaitable_callable():CODE
LOWtests/test_routing.py22async def test_protocol_type_router():CODE
LOWtests/test_routing.py184async def test_url_router_nesting_path():CODE
LOWtests/test_http.py88async def test_session_samesite_invalid(samesite_invalid):CODE
LOWtests/test_http.py174async def test_session_save_update_error():CODE
LOWtests/test_generic_websocket.py59async def test_multiple_websocket_consumers_with_sessions():CODE
LOWtests/test_generic_websocket.py100async def test_websocket_consumer_subprotocol():CODE
LOWtests/test_generic_websocket.py123async def test_websocket_consumer_groups():CODE
LOWtests/test_generic_websocket.py159async def test_async_websocket_consumer():CODE
LOWtests/test_generic_websocket.py201async def test_async_websocket_consumer_subprotocol():CODE
LOWtests/test_generic_websocket.py224async def test_async_websocket_consumer_groups():CODE
LOWtests/test_generic_websocket.py261async def test_async_websocket_consumer_specific_channel_layer():CODE
LOWtests/test_generic_websocket.py299async def test_json_websocket_consumer():CODE
LOWtests/test_generic_websocket.py332async def test_async_json_websocket_consumer():CODE
LOWtests/test_generic_websocket.py365async def test_block_underscored_type_function_call():CODE
LOWtests/test_generic_websocket.py401async def test_block_leading_dot_type_function_call():CODE
LOWtests/test_generic_websocket.py492async def test_websocket_receive_with_none_text():CODE
LOWtests/test_testing.py79async def test_websocket_communicator():CODE
LOWtests/test_testing.py106async def test_websocket_incorrect_read_json():CODE
LOWtests/test_testing.py125async def test_websocket_application():CODE
LOWtests/security/test_auth.py99async def test_login_no_session_in_scope():CODE
LOWtests/security/test_auth.py115async def test_login_no_user_in_scope(session):CODE
LOWtests/security/test_auth.py131async def test_login_user_as_argument(session, user_bob):CODE
LOWtests/security/test_auth.py236async def test_logout_not_logged_in(session):CODE
LOWtests/sample_project/tests/test_selenium.py30 def test_real_time_create_message(self):CODE
LOWtests/sample_project/tests/test_selenium.py55 def test_real_time_delete_message(self):CODE
LOWtests/sample_project/tests/selenium_mixin.py127 def wait_for_websocket_connection(self, substring="WebSocket connected", timeout=5):CODE
LOWtests/sample_project/tests/selenium_mixin.py144 def wait_for_websocket_message_handled(self, timeout=5):CODE
LOWchannels/layers.py155 def require_valid_channel_name(self, name, receive=False):CODE
Empty Error Handlers6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHchannels/auth.py40except KeyError:CODE
HIGHchannels/consumer.py63except StopConsumer:CODE
HIGHchannels/utils.py58except asyncio.CancelledError:CODE
HIGHchannels/routing.py130except Resolver404:CODE
HIGHchannels/layers.py402except ChannelFull:CODE
HIGHchannels/security/websocket.py32except UnicodeDecodeError:CODE
Over-Commented Block11 hits · 11 pts
SeverityFileLineSnippetContext
LOW.readthedocs.yaml21# Build documentation in the "docs/" directory with SphinxCOMMENT
LOWdocs/conf.py1# -*- coding: utf-8 -*-COMMENT
LOWdocs/conf.py41# The encoding of source files.COMMENT
LOWdocs/conf.py61# for a list of supported languages.COMMENT
LOWdocs/conf.py81# If true, the current module name will be prepended to all descriptionCOMMENT
LOWdocs/conf.py101# The theme to use for HTML and HTML Help pages. See the documentation forCOMMENT
LOWdocs/conf.py121# of the sidebar.COMMENT
LOWdocs/conf.py141#html_last_updated_fmt = '%b %d, %Y'COMMENT
LOWdocs/conf.py161#html_split_index = FalseCOMMENT
LOWdocs/conf.py201 ('index', 'Channels.tex', u'Channels Documentation',COMMENT
LOWdocs/conf.py241# Grouping the document tree into Texinfo files. List of tuplesCOMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_http.py188 # Create a session as normal:COMMENT
MEDIUMdocs/conf.py6# This file is execfile()d with the current directory set to itsCOMMENT
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWchannels/auth.py21CODE
LOWchannels/sessions.py169CODE
LOWchannels/utils.py32CODE
LOWchannels/routing.py69CODE
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWchannels/testing/__init__.py1CODE
LOWchannels/testing/__init__.py2CODE
LOWchannels/testing/__init__.py3CODE
LOWchannels/testing/__init__.py4CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWchannels/sessions.py47CODE
Modern Structural Boilerplate1 hit · 1 pts
SeverityFileLineSnippetContext
LOWchannels/testing/__init__.py6__all__ = [CODE