AI Slop Code Risk Monitor

theOehrly/Fast-F1

SlopCodeMonitor badge for theOehrly/Fast-F1 Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).
19.4 Elevated pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for theOehrly/Fast-F1. SynthScan examined 23,675 lines of code across 110 source files, recording 351 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 19.4 (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.4
Adjusted Signal
19.4
Raw Pattern Score
100%
Time Factor
—
Last Push
—
Stars
—
Language
23.7K
Lines of Code
110
Files
351
Pattern Hits
2026-10-31
Scan Date
0.17
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 54.3/100 · HIGH

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

Hallucinated Dependency & Supply Chain Risk 11.0/100 · LOW

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

Agent Over-Engineering Ratio 41.3/100 · MEDIUM

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

PR Review Velocity Impact 63.9/100 · HIGH

Which changes need focused human review? 351 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

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

No multi-scan history yet — run the scanner again to build trend data.

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 19MEDIUM 18LOW 314

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 351 distinct pattern matches across 15 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 Identifiers193 hits · 206 pts
SeverityFileLineSnippetContext
LOWconftest.py54def pytest_collection_modifyitems(config, items):CODE
LOWexamples/standings/plot_who_can_still_win_wdc.py38def calculate_max_points_for_remaining_season():CODE
LOWfastf1/events.py553def _get_schedule_from_ergast(year) -> "EventSchedule":CODE
LOWfastf1/events.py692 def _constructor_sliced_horizontal(self) -> type["Event"]:CODE
LOWfastf1/core.py726 def get_first_non_zero_time_index(self):CODE
LOWfastf1/core.py739 def add_differential_distance(CODE
LOWfastf1/core.py942 def calculate_differential_distance(self) -> pd.Series:CODE
LOWfastf1/core.py1233 def _get_property_warn_not_loaded(self, name):CODE
LOWfastf1/core.py1695 def _fix_missing_laps_retired_on_track(self):CODE
LOWfastf1/core.py1833 def _set_laps_deleted_from_rcm(self):CODE
LOWfastf1/core.py1887 def _calculate_quali_like_session_results(self, force=False):CODE
LOWfastf1/core.py1957 def _calculate_practice_like_session_results(self, force=False):CODE
LOWfastf1/core.py2008 def _calculate_race_like_session_results(self, force=False):CODE
LOWfastf1/core.py2063 def _add_track_status_to_laps(self, laps):CODE
LOWfastf1/core.py2121 def _add_first_lap_time_from_ergast(self):CODE
LOWfastf1/core.py2197 def _load_session_status_data(self, livedata=None):CODE
LOWfastf1/core.py2575 def _drivers_results_from_ergast(CODE
LOWfastf1/core.py2689 def _load_race_control_messages(self, livedata=None):CODE
LOWfastf1/core.py2932 def _constructor_sliced_horizontal(self) -> Callable[..., "Lap"]:CODE
LOWfastf1/core.py3514 def split_qualifying_sessions(self) -> list[Optional["Laps"]]:CODE
LOWfastf1/core.py3940 def _constructor_sliced_horizontal(self) -> Callable[..., "DriverResult"]:CODE
LOWfastf1/livetiming/data.py172 def _try_set_correct_start_date(self, data):CODE
LOWfastf1/tests/test_utils.py61def test_recursive_dict_get_deprecated():CODE
LOWfastf1/tests/test_plotting.py86def test_fuzzy_driver_team_key_error():CODE
LOWfastf1/tests/test_plotting.py104def test_internal_get_team_color(identifier, kwargs, expected):CODE
LOWfastf1/tests/test_plotting.py112def test_internal_get_team_color_exceptions():CODE
LOWfastf1/tests/test_plotting.py143def test_get_team_name_by_driver(identifier, kwargs, expected):CODE
LOWfastf1/tests/test_plotting.py170def test_get_rb_color_disambiguate():CODE
LOWfastf1/tests/test_plotting.py218def test_get_driver_abbreviation(identifier, expected):CODE
LOWfastf1/tests/test_plotting.py231def test_get_driver_names_by_team(identifier, expected):CODE
LOWfastf1/tests/test_plotting.py246def test_get_driver_abbreviations_by_team(identifier, expected):CODE
LOWfastf1/tests/test_plotting.py293def test_get_driver_style_default_styles(CODE
LOWfastf1/tests/test_plotting.py303def test_get_driver_style_custom_style():CODE
LOWfastf1/tests/test_plotting.py345def test_get_driver_style_recursive():CODE
LOWfastf1/tests/test_plotting.py388def test_get_compound_mapping():CODE
LOWfastf1/tests/test_plotting.py402def test_get_driver_color_mapping():CODE
LOWfastf1/tests/test_plotting.py428def test_list_short_team_names():CODE
LOWfastf1/tests/test_plotting.py438def test_list_driver_abbreviations():CODE
LOWfastf1/tests/test_plotting.py469def test_add_sorted_lapnumber_axis():CODE
LOWfastf1/tests/test_plotting.py488def test_override_team_constants():CODE
LOWfastf1/tests/test_plotting.py528def test_import_internal_mpl_lgend_arg_kwarg_parser():CODE
LOWfastf1/tests/test_example_plots.py43def test_doc_example_fast_lec():CODE
LOWfastf1/tests/test_core.py15def test_lap_data_loading_position_calculation():CODE
LOWfastf1/tests/test_core.py46def test_lap_data_loading_position_calculation_first_lap_retired():CODE
LOWfastf1/tests/test_core.py68def test_first_lap_pitout_times():CODE
LOW⚡fastf1/tests/test_core.py84def test_laps_constructor_metadata_propagation(reference_laps_data):CODE
LOW⚡fastf1/tests/test_core.py92def test_laps_constructor_sliced():CODE
LOW⚡fastf1/tests/test_core.py102def test_session_results_constructor_sliced():CODE
LOW⚡fastf1/tests/test_core.py112def test_add_lap_status_to_laps():CODE
LOWfastf1/tests/test_core.py148def test_rcm_parsing_deleted_laps():CODE
LOWfastf1/tests/test_core.py193def test_session_results_drivers():CODE
LOWfastf1/tests/test_core.py214def test_practice_session_results_time_and_position():CODE
LOWfastf1/tests/test_exceptions.py61def test_deprecated_import_warns():CODE
LOW⚡fastf1/tests/test_exceptions.py78def test_deprecated_access_warns(module, name):CODE
LOW⚡fastf1/tests/test_exceptions.py85def test_soft_exceptions_catch_and_warn():CODE
LOW⚡fastf1/tests/test_exceptions.py90def _test_soft_exceptions_catch_and_warn():CODE
LOWfastf1/tests/test_exceptions.py106def test_critical_exceptions_raise_in_soft_exceptions():CODE
LOWfastf1/tests/test_exceptions.py110def _test_critical_exceptions_raise_in_soft_exceptions():CODE
LOWfastf1/tests/test_laps.py27def test_base_class_view_laps():CODE
LOWfastf1/tests/test_laps.py32def test_merging_with_metadata_propagation():CODE
133 more matches not shown…
Docstring Block Structure16 hits · 80 pts
SeverityFileLineSnippetContext
HIGHfastf1/_api.py110 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py848 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py944 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py1124 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py1279 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py1349 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py1405 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py1486 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py1550 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/_api.py1633 .. warning:: :mod:`fastf1.api` will be considered private in future releases and potentially be remSTRING
HIGHfastf1/events.py59Create a :class:`~fastf1.core.Session` object based on year, event name and session identifier. .. note:: This STRING
HIGHfastf1/events.py888Return the full session name of a specific session from this event. Examples: >>> import fastf1 STRING
HIGHfastf1/plotting/_interface.py289 Get a team color based on a recognizable and identifiable part of the team name. The team color is returneSTRING
HIGHfastf1/plotting/_interface.py432 Get the color that is associated with a driver based on the driver's abbreviation or based on a recognizable anSTRING
HIGHfastf1/plotting/_interface.py501 Get a plotting style that is unique for a driver based on the driver's abbreviation or based on a recognizable STRING
HIGHfastf1/plotting/_interface.py820 Adds a legend to the axis where drivers are grouped by team and within each team they are shown in the same ordSTRING
Unused Imports51 hits · 50 pts
SeverityFileLineSnippetContext
LOWfastf1/__init__.py17CODE
LOWfastf1/__init__.py18CODE
LOWfastf1/__init__.py18CODE
LOWfastf1/__init__.py18CODE
LOWfastf1/__init__.py18CODE
LOWfastf1/__init__.py18CODE
LOWfastf1/__init__.py25CODE
LOWfastf1/__init__.py26CODE
LOWfastf1/__init__.py27CODE
LOWfastf1/api.py29CODE
LOWfastf1/tests/test_core.py2CODE
LOWfastf1/tests/test_core.py5CODE
LOWfastf1/tests/test_exceptions.py20CODE
LOWfastf1/tests/test_exceptions.py24CODE
LOWfastf1/tests/test_exceptions.py28CODE
LOWfastf1/tests/test_exceptions.py32CODE
LOWfastf1/tests/test_exceptions.py36CODE
LOWfastf1/tests/test_exceptions.py40CODE
LOWfastf1/tests/test_exceptions.py64CODE
LOWfastf1/tests/test_exceptions.py68CODE
LOWfastf1/tests/test_api.py5CODE
LOWfastf1/tests/test_cache.py10CODE
LOWfastf1/ergast/__init__.py2CODE
LOWfastf1/ergast/__init__.py3CODE
LOWfastf1/ergast/__init__.py4CODE
LOWfastf1/ergast/__init__.py4CODE
LOWfastf1/mvapi/__init__.py1CODE
LOWfastf1/mvapi/__init__.py1CODE
LOWfastf1/internals/f1account/__init__.py36CODE
LOWfastf1/internals/f1account/__init__.py36CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py1CODE
LOWfastf1/plotting/__init__.py23CODE
Self-Referential Comments14 hits · 33 pts
SeverityFileLineSnippetContext
MEDIUMexamples/general/plot_annotate_corners.py27# Define a helper function for rotating points around the origin of theCOMMENT
MEDIUMexamples/general/plot_annotate_corners.py72 # Create a string from corner number and letterCOMMENT
MEDIUMexamples/standings/plot_season_summary.py111# Create the subplots for the two heatmapsCOMMENT
MEDIUMexamples/telemetry/plot_speed_trace_comparison.py24# Define the session parameters. We compare the Qualifying sessionsCOMMENT
MEDIUMexamples/telemetry/plot_speed_trace_comparison.py41# Define a helper function for data interpolation.COMMENT
MEDIUMexamples/telemetry/plot_speed_trace_comparison.py94# Create the visualization. We highlight the speed delta (clipping)COMMENT
MEDIUMexamples/telemetry/plot_speed_on_track.py63# Create a continuous norm to map from data points to colorsCOMMENT
MEDIUMexamples/telemetry/plot_gear_shifts_on_track.py37# Create a line collection. Set a segmented colormap and normalize the plotCOMMENT
MEDIUMexamples/telemetry/plot_gear_shifts_on_track.py47# Create the plotCOMMENT
MEDIUMfastf1/events.py642 """This class implements a per-season event schedule.STRING
MEDIUMfastf1/events.py862 """This class represents a single event (race weekend or testing event).STRING
MEDIUMfastf1/core.py3798 """This class provides driver and result information for all drivers thatSTRING
MEDIUMfastf1/core.py3945 """This class provides driver and result information for a single driver.STRING
MEDIUMfastf1/logger.py98 # This function is used to wrap individual data loading functions that areCOMMENT
Deep Nesting30 hits · 24 pts
SeverityFileLineSnippetContext
LOWfastf1/legacy.py85CODE
LOWfastf1/_api.py254CODE
LOWfastf1/_api.py374CODE
LOWfastf1/_api.py847CODE
LOWfastf1/_api.py943CODE
LOWfastf1/_api.py1123CODE
LOWfastf1/_api.py1404CODE
LOWfastf1/_api.py1549CODE
LOWfastf1/_api.py1765CODE
LOWfastf1/events.py466CODE
LOWfastf1/events.py553CODE
LOWfastf1/core.py392CODE
LOWfastf1/core.py625CODE
LOWfastf1/core.py1461CODE
LOWfastf1/core.py1695CODE
LOWfastf1/core.py2177CODE
LOWfastf1/core.py2211CODE
LOWfastf1/core.py2335CODE
LOWfastf1/core.py2432CODE
LOWfastf1/core.py3514CODE
LOWfastf1/req.py383CODE
LOWfastf1/req.py549CODE
LOWfastf1/req.py560CODE
LOWfastf1/__main__.py43CODE
LOWfastf1/livetiming/data.py172CODE
LOWfastf1/internals/parsing_helpers.py26CODE
LOWfastf1/internals/parsing_helpers.py84CODE
LOWfastf1/internals/pandas_base.py70CODE
LOWfastf1/plotting/_interface.py492CODE
LOWfastf1/plotting/_backend.py25CODE
Excessive Try-Catch Wrapping12 hits · 13 pts
SeverityFileLineSnippetContext
LOWfastf1/_api.py1052 except Exception:CODE
LOWfastf1/_api.py1219 except Exception:CODE
MEDIUMfastf1/core.py2531def _drivers_from_f1_api(self, *, livedata=None):CODE
LOWfastf1/core.py2157 except Exception as exc:CODE
LOWfastf1/core.py2534 except Exception as exc:CODE
LOWfastf1/logger.py116 except Exception as exc:CODE
LOWfastf1/req.py708 except Exception as err:CODE
LOWfastf1/livetiming/client.py147 except Exception:CODE
LOWfastf1/ergast/interface.py522 except Exception as exc:CODE
LOWfastf1/internals/parsing_helpers.py72 except Exception as exc:CODE
LOWfastf1/internals/parsing_helpers.py124 except Exception as exc:CODE
LOWfastf1/internals/pandas_extensions.py62 except Exception as exc:CODE
AI Structural Patterns12 hits · 12 pts
SeverityFileLineSnippetContext
LOWfastf1/ergast/interface.py432CODE
LOWfastf1/ergast/interface.py621CODE
LOWfastf1/ergast/interface.py682CODE
LOWfastf1/ergast/interface.py749CODE
LOWfastf1/ergast/interface.py816CODE
LOWfastf1/ergast/interface.py883CODE
LOWfastf1/ergast/interface.py947CODE
LOWfastf1/ergast/interface.py1020CODE
LOWfastf1/ergast/interface.py1088CODE
LOWfastf1/ergast/interface.py1156CODE
LOWfastf1/ergast/interface.py1221CODE
LOWfastf1/ergast/interface.py1273CODE
Over-Commented Block11 hits · 10 pts
SeverityFileLineSnippetContext
LOWconftest.py141def automock_terminal_size(doctest_namespace): # noqa: ARG001COMMENT
LOWpytest.ini21COMMENT
LOWpytest.ini41 # external, new required dependency for PandasCOMMENT
LOWdocs/setup_versioning.sh1#!/bin/bashCOMMENT
LOWexamples/general/plot_driver_styling.py61 session=race)COMMENT
LOWfastf1/_api.py481COMMENT
LOWfastf1/_api.py761 except ValueError:COMMENT
LOWfastf1/core.py1581 continue # no pit out, car did not restartCOMMENT
LOWfastf1/exceptions.py1import warningsCOMMENT
LOWfastf1/req.py41# even exist in the first place.COMMENT
LOWfastf1/ergast/sphinx.py41 def _build_tree(self, category, excluded_category, *,COMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHfastf1/_api.py761except ValueError:CODE
HIGHfastf1/core.py1789except (IndexError, KeyError):CODE
Decorative Section Separators3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMexamples/general/plot_driver_styling.py26# ----------------------------------COMMENT
MEDIUMexamples/general/plot_driver_styling.py48# ------------------COMMENT
MEDIUMexamples/general/plot_driver_styling.py71# ----------------------------COMMENT
Cross-Language Confusion1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHfastf1/tests/test_core.py190 assert compare.equals(ref)CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWfastf1/_api.py730 # Iterate over list of personal lap times set 'IsPersonalBest'.COMMENT
LOWfastf1/core.py2260 # Check if for any tyre data message in the current stint, theCOMMENT
Modern Structural Boilerplate2 hits · 2 pts
SeverityFileLineSnippetContext
LOWfastf1/internals/f1account/__init__.py42__all__ = [CODE
LOWfastf1/plotting/__init__.py26__all__ = [CODE
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
LOWdocs/setup_versioning.sh23 # make sure to not move the .git folder! Else, git will treat the version as a subrepository and notCOMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
LOWfastf1/livetiming/data.py149 # if no start date could be determined beforehand, simply use theCOMMENT