AI Slop Code RIsk Monitor

python/peps

Python Enhancement Proposals

14.7 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for python/peps, a reStructuredText project with 5,026 GitHub stars. SynthScan examined 14,359 lines of code across 94 source files, recording 129 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 14.7 (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.7
Adjusted Signal
14.7
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
5.0K
Stars
reStructuredText
Language
14.4K
Lines of Code
94
Files
129
Pattern Hits
2026-10-12
Scan Date
0.15
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 31.6/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 10.2/100 · LOW

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

Agent Over-Engineering Ratio 36.9/100 · MEDIUM

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

PR Review Velocity Impact 54.0/100 · HIGH

Which changes need focused human review? 129 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 1HIGH 13MEDIUM 10LOW 105

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 129 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.

Empty Error Handlers13 hits · 65 pts
SeverityFileLineSnippetContext
HIGHpeps/pep-0418/clockutils.py238except AttributeError:CODE
HIGHpeps/pep-0418/clockutils.py260except AttributeError:CODE
HIGHpeps/pep-0418/clockutils.py281except AttributeError:CODE
HIGHpeps/pep-0418/clockutils.py302except AttributeError:CODE
HIGHpeps/pep-0418/clockutils.py323except AttributeError:CODE
HIGHpeps/pep-0418/clockutils.py163except AttributeError:CODE
HIGHpeps/pep-0418/clockutils.py243except OSError:CODE
HIGHpeps/pep-0418/clockutils.py265except OSError:CODE
HIGHpeps/pep-0418/clockutils.py286except OSError:CODE
HIGHpeps/pep-0418/clockutils.py307except OSError:CODE
HIGHpeps/pep-0418/clockutils.py328except OSError:CODE
HIGHpeps/pep-0418/clockutils.py385except AttributeError:CODE
HIGH…_extensions/pep_processor/transforms/pep_references.py35except KeyError:CODE
Hyper-Verbose Identifiers60 hits · 61 pts
SeverityFileLineSnippetContext
LOWcheck-peps.py238def _validate_required_headers(found_headers: KeysView[str]) -> MessageIterator:CODE
LOWrelease_management/serialize.py68def create_release_schedule_calendar() -> str:CODE
LOWrelease_management/serialize.py83def release_schedule_calendar_lines(CODE
LOW…ase_management/tests/test_release_schedule_calendar.py13def test_create_release_calendar_has_calendar_metadata() -> None:CODE
LOW…ase_management/tests/test_release_schedule_calendar.py33def test_create_release_calendar_first_event() -> None:CODE
LOWpep_sphinx_extensions/__init__.py33def _update_config_for_builder(app: Sphinx) -> None:CODE
LOW…inx_extensions/tests/pep_zero_generator/test_parser.py105def test_parse_authors_invalid():CODE
LOW…inx_extensions/tests/pep_zero_generator/test_parser.py127def test_abbreviate_type_status(test_type, test_status, expected):CODE
LOW…inx_extensions/tests/pep_zero_generator/test_writer.py8def test_pep_zero_writer_emit_text_newline():CODE
LOW…inx_extensions/tests/pep_zero_generator/test_writer.py17def test_pep_zero_writer_emit_title():CODE
LOW…inx_extensions/tests/pep_zero_generator/test_writer.py48def test_verify_email_addresses(test_input, expected):CODE
LOW…inx_extensions/tests/pep_zero_generator/test_writer.py59def test_verify_email_addresses_multiple_emails():CODE
LOW…inx_extensions/tests/pep_zero_generator/test_writer.py104def test_emit_pep_row_links_python_version_to_release_pep(CODE
LOW…s/tests/pep_zero_generator/test_pep_index_generator.py14def test_build_release_peps_links_individual_versions_from_joint_release_pep():CODE
LOW…ions/tests/pep_processor/transform/test_pep_headers.py91def test_process_pretty_url_invalid(test_input, expected):CODE
LOW…ions/tests/pep_processor/transform/test_pep_headers.py152def test_abbreviate_status_unknown():CODE
LOW…ions/tests/pep_processor/transform/test_pep_headers.py183def test_abbreviate_type_unknown():CODE
LOW…sions/tests/pep_processor/transform/test_pep_footer.py6def test_get_page_footer_context():CODE
LOW…sions/tests/pep_processor/transform/test_pep_footer.py19def test_get_page_footer_context_no_history():CODE
LOW…sions/tests/pep_processor/transform/test_pep_footer.py28def test_get_last_modified_timestamps():CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_email.py35def test_validate_author_over__indented(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_email.py49def test_validate_author_continuation(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py23def test_validate_discussions_to_valid(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py37def test_validate_discussions_to_list_name(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py51def test_validate_discussions_to_invalid_list_domain(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py79def test_validate_post_history_valid(body: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py91def test_validate_post_history_unbalanced_link(body: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py112def test_validate_resolution_valid(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py132def test_validate_resolution_invalid(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py144def test_validate_resolution_unbalanced_link(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py171def test_thread_checker_valid(thread_url: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py224def test_thread_checker_invalid(thread_url: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py244def test_thread_checker_valid_allow_message(thread_url: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py269def test_thread_checker_invalid_allow_message(thread_url: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py296def test_thread_checker_valid_discussions_to(thread_url: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py320def test_thread_checker_invalid_discussions_to(thread_url: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_post_url.py330def test_thread_checker_allow_message_discussions_to():CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_pep_number.py27def test_validate_pep_number_invalid_header(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_pep_lint.py50def test_skip_direct_pep_link_check():CODE
LOW…_sphinx_extensions/tests/pep_lint/test_direct_links.py14def test_check_direct_links_pep(line: str):CODE
LOW…_sphinx_extensions/tests/pep_lint/test_direct_links.py28def test_check_direct_links_rfc(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_date.py69def test_date_checker_malformed(date_str: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_date.py85def test_date_checker_too_early(date_str: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_date.py102def test_date_checker_too_late(date_str: str):CODE
LOW⚡pep_sphinx_extensions/tests/pep_lint/test_headers.py47def test_header_pattern_no_match(test_input):CODE
LOW⚡pep_sphinx_extensions/tests/pep_lint/test_headers.py51def test_validate_required_headers():CODE
LOW⚡pep_sphinx_extensions/tests/pep_lint/test_headers.py61def test_validate_required_headers_missing():CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py72def test_validate_required_headers_order():CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py97def test_validate_title_blank():CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py102def test_validate_title_too_long():CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py122def test_validate_status_valid(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py145def test_validate_status_invalid(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py181def test_validate_type_invalid(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py264def test_validate_pep_references(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py279def test_validate_pep_references_separators(line: str):CODE
LOWpep_sphinx_extensions/tests/pep_lint/test_headers.py330def test_validate_python_version(line: str, expected_warnings: set):CODE
LOWpep_sphinx_extensions/pep_zero_generator/writer.py77 def emit_author_table_separator(self, max_name_len: int) -> None:STRING
LOW…x_extensions/pep_processor/html/pep_html_translator.py20 def should_be_compact_paragraph(node: nodes.paragraph) -> bool:CODE
LOW…x_extensions/pep_processor/html/pep_html_translator.py75 def depart_footnote_reference(self, node):CODE
LOW…hinx_extensions/pep_processor/transforms/pep_footer.py57def _get_last_modified_timestamps():CODE
Self-Referential Comments10 hits · 30 pts
SeverityFileLineSnippetContext
MEDIUMbuild.py2# This file is placed in the public domain or under theCOMMENT
MEDIUMcheck-peps.py3# This file is placed in the public domain or under theCOMMENT
MEDIUMrelease_management/python-releases.toml1# This file is placed in the public domain or under theCOMMENT
MEDIUMpeps/conf.py1# This file is placed in the public domain or under theCOMMENT
MEDIUMpep_sphinx_extensions/generate_rss.py1# This file is placed in the public domain or under theCOMMENT
MEDIUMpep_sphinx_extensions/lexers/__init__.py1# This file is placed in the public domain or under theCOMMENT
MEDIUMpep_sphinx_extensions/lexers/pep823_lexer.py1# This file is placed in the public domain or under theCOMMENT
MEDIUMpep_sphinx_extensions/lexers/pep824_lexer.py1# This file is placed in the public domain or under theCOMMENT
MEDIUM…phinx_extensions/pep_processor/transforms/pep_title.py39 # Create the title string for the PEPCOMMENT
MEDIUM…nx_extensions/pep_processor/transforms/pep_contents.py18 # Create the contents placeholder sectionCOMMENT
Unused Imports18 hits · 18 pts
SeverityFileLineSnippetContext
LOWcheck-peps.py16CODE
LOWrelease_management/serialize.py1CODE
LOWrelease_management/update_release_schedules.py26CODE
LOWrelease_management/__init__.py1CODE
LOWrelease_management/__main__.py1CODE
LOWpep_sphinx_extensions/__init__.py3CODE
LOWpep_sphinx_extensions/generate_rss.py4CODE
LOWpep_sphinx_extensions/lexers/__init__.py4CODE
LOWpep_sphinx_extensions/pep_zero_generator/subindices.py3CODE
LOWpep_sphinx_extensions/pep_zero_generator/parser.py3CODE
LOWpep_sphinx_extensions/pep_zero_generator/writer.py3CODE
LOW…x_extensions/pep_zero_generator/pep_index_generator.py19CODE
LOWpep_sphinx_extensions/pep_zero_generator/errors.py1CODE
LOW…x_extensions/pep_processor/html/pep_html_translator.py1CODE
LOW…sphinx_extensions/pep_processor/transforms/pep_zero.py1CODE
LOW…nx_extensions/pep_processor/transforms/pep_contents.py1CODE
LOW…tensions/pep_processor/parsing/pep_banner_directive.py3CODE
LOW…_sphinx_extensions/pep_processor/parsing/pep_parser.py1CODE
Deep Nesting12 hits · 12 pts
SeverityFileLineSnippetContext
LOWcheck-peps.py135CODE
LOWcheck-peps.py174CODE
LOWcheck-peps.py378CODE
LOWcheck-peps.py410CODE
LOWcheck-peps.py513CODE
LOWrelease_management/update_release_schedules.py118CODE
LOWpeps/pep-0465/scan-ops.py50CODE
LOWpeps/pep-0426/pepsort.py124CODE
LOWpep_sphinx_extensions/pep_zero_generator/writer.py316CODE
LOW…hinx_extensions/pep_processor/transforms/pep_footer.py17CODE
LOW…inx_extensions/pep_processor/transforms/pep_headers.py222CODE
LOW…inx_extensions/pep_processor/transforms/pep_headers.py58CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALpep_sphinx_extensions/pep_processor/parsing/pep_role.py19 pep_base = self.inliner.document.settings.pep_url.format(pep_num)CODE
Over-Commented Block6 hits · 6 pts
SeverityFileLineSnippetContext
LOWrelease_management/python-releases.toml1# This file is placed in the public domain or under theCOMMENT
LOWrelease_management/python-releases.toml481[[release."2.4"]]COMMENT
LOWpeps/pep-0465/scan-ops.py121 [[],COMMENT
LOWpeps/pep-0418/bench_time.c41 {"CLOCK_PROCESS_CPUTIME_ID", CLOCK_PROCESS_CPUTIME_ID},COMMENT
LOWpeps/pep-0418/bench_time.c61#ifdef CLOCK_MONOTONIC_PRECISECOMMENT
LOWpeps/pep-0418/clockutils.py1#!/usr/bin/pythonCOMMENT
Modern Structural Boilerplate4 hits · 4 pts
SeverityFileLineSnippetContext
LOWrelease_management/update_release_schedules.py68def update_peps() -> None:CODE
LOWrelease_management/update_release_schedules.py118def update_pep(metadata: VersionMetadata, schedules: ReleaseSchedules) -> None:CODE
LOWpeps/pep-0426/pepsort.py18logger = logging.getLogger(__name__)CODE
LOWpep_sphinx_extensions/__init__.py33def _update_config_for_builder(app: Sphinx) -> None:CODE
Fake / Example Data3 hits · 3 pts
SeverityFileLineSnippetContext
LOW…inx_extensions/tests/pep_zero_generator/test_parser.py79 [_Author(full_name="First Last", email="user@example.com")],CODE
LOW…inx_extensions/tests/pep_zero_generator/test_parser.py87 [_Author(full_name="First Last", email="user@example.com")],CODE
LOW…ensions/tests/pep_processor/transform/test_pep_zero.py12 "", text="user@example.com", refuri="mailto:user@example.com"CODE
Excessive Try-Catch Wrapping2 hits · 2 pts
SeverityFileLineSnippetContext
LOWpeps/pep-0465/scan-ops.py60 except Exception as e:CODE
LOWpeps/pep-0426/pepsort.py173 except Exception:CODE