AI Slop Code RIsk Monitor

google-deepmind/weathernext

14.8 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for google-deepmind/weathernext, a Python project with 7,703 GitHub stars. SynthScan examined 23,607 lines of code across 77 source files, recording 304 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 14.8 (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.8
Adjusted Signal
14.8
Raw Pattern Score
100%
Time Factor
2026-09-04
Last Push
7.7K
Stars
Python
Language
23.6K
Lines of Code
77
Files
304
Pattern Hits
2026-10-12
Scan Date
0.10
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? 301 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 34.0/100 · MEDIUM

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

PR Review Velocity Impact 53.0/100 · HIGH

Which changes need focused human review? 304 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 8MEDIUM 6LOW 290

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

Hyper-Verbose Identifiers175 hits · 176 pts
SeverityFileLineSnippetContext
LOWweathernext/cyclones/tracker_utils.py45def slice_data_array_latlon_box_with_lon_wraparound(CODE
LOWweathernext/cyclones/tracker_utils.py193def bilinear_interpolation_with_lon_wraparound(CODE
LOWweathernext/cyclones/tracker_utils.py267def _enforce_non_negativity_constraint(df: pd.DataFrame) -> pd.DataFrame:CODE
LOWweathernext/cyclones/tracker_utils.py299def _enforce_quadrant_radius_zero_if_wind_speed_below_threshold(CODE
LOWweathernext/cyclones/tracker_utils.py352def _enforce_quad_non_decreasing(CODE
LOWweathernext/cyclones/tracker_utils.py414def _enforce_rmw_smaller_than_quad_radii_by_clipping_rmw(CODE
LOWweathernext/cyclones/tracker_utils.py483def _enforce_rmw_smaller_than_quad_radii_by_clipping_quad_radii(CODE
LOWweathernext/cyclones/tracker_utils.py580def _wind_speeds_non_increasing_with_increasing_radii(CODE
LOWweathernext/cyclones/tracker_utils.py690def enforce_physical_consistency_on_quadrants_and_winds(CODE
LOWweathernext/cyclones/tracker_utils.py772def _check_quadrant_radii_and_radius_max_winds_are_consistent(df: pd.DataFrame):CODE
LOWweathernext/cyclones/tracker_utils.py798def _check_quadrant_radii_consistent(df: pd.DataFrame):CODE
LOWweathernext/cyclones/ibtracs_netcdf_to_csv.py71def convert_ibtracs_netcdf_to_csv_df(CODE
LOWweathernext/cyclones/ibtracs_netcdf_to_csv.py183def prepare_ibtracs_storms_dfs(CODE
LOWweathernext/cyclones/data_pipeline_utils.py96def create_grid_lat_and_lon_dimensions(CODE
LOWweathernext/cyclones/data_pipeline_utils.py141def convert_grid_data_to_packed_xarray_dataset(CODE
LOWweathernext/cyclones/ibtracs_processing_stages.py54def _scale_variables_from_nmiles_to_km(CODE
LOWweathernext/cyclones/ibtracs_processing_stages.py64def load_time_slice_from_ibtracs(CODE
LOWweathernext/cyclones/ibtracs_processing_stages.py214def cyclone_max_wind_speeds_max_wind_radii_and_min_sea_level_pressures(CODE
LOWweathernext/cyclones/ibtracs_processing_stages.py553def convert_ibtracs_to_gridded_data(CODE
LOWweathernext/cyclones/direct_tracker.py183def _single_row_dataframe_from_dict(row_dict: Dict[str, Any]) -> pd.DataFrame:CODE
LOWweathernext/cyclones/direct_tracker.py187def _get_bounding_box_sides_in_degrees(CODE
LOWweathernext/cyclones/direct_tracker.py237def _average_in_three_dimensions_and_project_on_sphere(CODE
LOWweathernext/cyclones/direct_tracker.py428 def _get_disc_windowed_gridded_probs_and_latlons(CODE
LOWweathernext/cyclones/direct_tracker.py477 def _get_mean_latlon_of_grid_points_within_disc(CODE
LOWweathernext/cyclones/direct_tracker.py512 def _get_mode_latlon_of_grid_points_within_disc(CODE
LOWweathernext/cyclones/direct_tracker.py547 def _get_is_in_radius_grid_around_latlon(CODE
LOWweathernext/cyclones/direct_tracker.py635 def _get_mean_scalar_variables_within_mask(CODE
LOWweathernext/cyclones/direct_tracker.py696 def _get_scalar_variables_via_bilinear_interpolation(CODE
LOWweathernext/cyclones/direct_tracker.py720 def _try_to_infer_probability_cyclone_exists_variable_name(CODE
LOWweathernext/cyclones/direct_tracker.py742 def _get_mean_cyclone_probability_within_mask(CODE
LOWweathernext/cyclones/direct_tracker.py770 def _get_cyclogenesis_candidates(CODE
LOWweathernext/cyclones/direct_tracker.py845 def _prune_and_refine_cyclogenesis_candidates(CODE
LOWweathernext/cyclones/direct_tracker.py1076 def _get_latlon_guess_with_momentum_update(CODE
LOWweathernext/cyclones/direct_tracker.py1109 def _advance_single_cyclone_active_at_lead_time_t(CODE
LOWweathernext/cyclones/direct_tracker.py1290 def _check_for_nans_in_predicted_tracks(CODE
LOWweathernext/cyclones/direct_tracker.py1337 def _get_cyclone_probability_of_existence_within_disc(CODE
LOWweathernext/cyclones/direct_tracker.py1354 def _get_all_scalar_variables_within_disc(CODE
LOWweathernext/cyclones/direct_tracker.py1369 def _remove_nearby_cyclone_centers_based_on_which_moved_most(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py29def _get_ibtracs_quadrant_variable_tuples() -> (CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py199def filter_variables_for_reduced_dataset(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py212def get_cyclone_variable_names() -> List[str]:CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py306def create_global_lat_lon_grid_coordinates(resolution: float) -> np.ndarray:CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py326def create_sparse_nearest_neighbour_mask_from_latlon(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py368def create_gaussian_disc_mask_from_latlon(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py474def create_quadrant_integral_mask_from_latlons(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py580def create_disc_integral_mask_from_latlon(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py614def get_common_entries_without_nans(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py631def impute_quadrant_radii_nans(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py684def create_discs_centered_on_latlons(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py748def _create_wind_speed_linear_calibration_models(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py797 def _linear_regression_with_clipping(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py851def create_wind_speed_calibration_and_aggregation_model(CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py877 def compute_aggregated_wind_speeds(CODE
LOWweathernext/cyclones/cyclone_utils.py164def cartesian_spherical_geodesic_momentum_update(CODE
LOWweathernext/cyclones/cyclone_utils.py228def latlon_spherical_geodesic_momentum_update(CODE
LOWweathernext/weathernext1_graph/graphcast.py680 def _inputs_to_grid_node_features(CODE
LOWweathernext/weathernext1_graph/graphcast.py701 def _grid_node_outputs_to_prediction(CODE
LOWweathernext/utils/model_utils.py29def get_graph_spatial_features(CODE
LOWweathernext/utils/model_utils.py237def get_relative_position_in_receiver_local_coordinates(CODE
LOWweathernext/utils/model_utils.py322def get_rotation_matrices_to_local_coordinates(CODE
115 more matches not shown…
Over-Commented Block89 hits · 88 pts
SeverityFileLineSnippetContext
LOWsetup.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/__init__.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/tracker_utils.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/tracker_utils.py561 # q_50_ne: 20COMMENT
LOWweathernext/cyclones/tracker_utils.py661 idx_sort,COMMENT
LOWweathernext/cyclones/ibtracs_netcdf_to_csv.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/tracker_base.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/data_pipeline_utils.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/constants.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/__init__.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/ibtracs_processing_stages.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/direct_tracker.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/direct_tracker.py201 # contain the pole, so the disc will contain the entire [0, 360]COMMENT
LOWweathernext/cyclones/ibtracs_processing_utils.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/cyclone_utils.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/cyclones/direct_tracker_6h_v1_config.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/weathernext1_graph/__init__.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/weathernext1_graph/graphcast.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/model_utils.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/model_utils.py301 edge_rotation_matrices, node_pos[senders], np_=np_)COMMENT
LOWweathernext/utils/model_utils.py621 receiver_pos_in_rotated_space = rotate_with_matrices(COMMENT
LOWweathernext/utils/update_blocks_utils.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/sharding.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/sharding.py21from jax.interpreters import pxlaCOMMENT
LOWweathernext/utils/task.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/autoregressive.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/data_modalities.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/typed_graph.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/typed_graph.py21_T = TypeVar('_T')COMMENT
LOWweathernext/utils/checkpoint.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/xarray_dense.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/xarray_dense.py921 # Transpose the array to put the preserved dims first, and the dims to splitCOMMENT
LOWweathernext/utils/sparse_transformer_utils.py1# Copyright 2024 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/solar_radiation.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/solar_radiation.py201 j2000_days: Timestamps represented as the number of days since the J2000COMMENT
LOWweathernext/utils/dense.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/activations.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/mesh_transformer.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/variables.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/solar_radiation_test.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/data_utils_test.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/predictor_base.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/fiddle_config_io.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/fiddle_config_io.py21from fiddle import daglishCOMMENT
LOWweathernext/utils/fiddle_config_io.py41# "Index(index=0)",COMMENT
LOWweathernext/utils/fiddle_config_io.py61#COMMENT
LOWweathernext/utils/update_blocks.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/__init__.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/xarray_tree.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/checkpoint_test.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/deep_gnn.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/icosahedral_mesh.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/icosahedral_mesh.py201 # (adjacent face)/ \ (adjacent face) ^COMMENT
LOWweathernext/utils/icosahedral_mesh.py241 # / \COMMENT
LOWweathernext/utils/icosahedral_mesh.py281 # / \COMMENT
LOWweathernext/utils/typed_graph_net.py1# Copyright 2026 Google LLC.COMMENT
LOWweathernext/utils/typed_graph_net.py401 graph.context.features,COMMENT
LOWweathernext/utils/xarray_tree_test.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/casting.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
LOWweathernext/utils/data_utils.py1# Copyright 2023 DeepMind Technologies Limited.COMMENT
29 more matches not shown…
Docstring Block Structure6 hits · 30 pts
SeverityFileLineSnippetContext
HIGHweathernext/cyclones/tracker_utils.py199Performs bilinear interpolation on gridded predictions at a given latlon. Args: gridded_predictions: gridded predSTRING
HIGHweathernext/cyclones/cyclone_utils.py169Calculates momentum update from pos_curr using pos_prev, on a sphere. Assumes pos_curr and pos_prev are on the unit sSTRING
HIGHweathernext/utils/solar_radiation.py530Computes the solar radiation incident at the top of the atmosphere. This method is a wrapper for `get_toa_incident_soSTRING
HIGHweathernext/utils/typed_graph_net.py211Returns a method that applies a configured GraphNetwork. This implementation follows Algorithm 1 in https://arxiv.orgSTRING
HIGHweathernext/utils/data_utils.py106Derives features used by ML models from the `progress` variable. Args: name: Base variable name from which featurSTRING
HIGHweathernext/utils/data_utils.py220Extracts inputs and targets for prediction, from a Dataset with a time dim. The input period is assumed to be contiguSTRING
Deep Nesting12 hits · 12 pts
SeverityFileLineSnippetContext
LOWweathernext/cyclones/tracker_utils.py352CODE
LOWweathernext/cyclones/ibtracs_netcdf_to_csv.py71CODE
LOWweathernext/cyclones/direct_tracker.py1598CODE
LOWweathernext/utils/checkpoint.py98CODE
LOWweathernext/utils/xarray_dense.py749CODE
LOWweathernext/utils/xarray_dense.py848CODE
LOWweathernext/utils/xarray_dense.py472CODE
LOWweathernext/utils/xarray_dense.py686CODE
LOWweathernext/utils/dense.py251CODE
LOWweathernext/utils/fiddle_config_io.py104CODE
LOWweathernext/utils/points_mesh_gnn.py415CODE
LOWweathernext/utils/sparse_transformer.py513CODE
AI Slop Vocabulary4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUMweathernext/utils/data_modalities.py374 # We leverage `ShareLeadingAxesArrayTree` to guarantee that the arraysCOMMENT
MEDIUMweathernext/utils/data_modalities.py494 # We leverage `ShareLeadingAxesArrayTree` to guarantee that the arraysCOMMENT
MEDIUMweathernext/utils/data_modalities.py723 # We leverage `ShareLeadingAxesArrayTree` to guarantee that the arraysCOMMENT
LOWweathernext/utils/data_modalities.py1374 # No masking, just return the array, only possible if it is a static array.COMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHweathernext/utils/fiddle_config_io.py100except ValueError:CODE
HIGHweathernext/utils/xarray_tree.py62except ValueError: # Exact join not possible.CODE
AI Structural Patterns10 hits · 10 pts
SeverityFileLineSnippetContext
LOWweathernext/cyclones/direct_tracker.py333CODE
LOWweathernext/cyclones/ibtracs_processing_utils.py365CODE
LOWweathernext/utils/dense.py251CODE
LOWweathernext/utils/deep_gnn.py65CODE
LOWweathernext/utils/typed_graph_net.py197CODE
LOWweathernext/utils/xarray_tree_test.py42CODE
LOWweathernext/utils/sparse_transformer.py513CODE
LOWweathernext/utils/legacy/deep_typed_graph_net.py82CODE
LOWweathernext/utils/legacy/deep_typed_graph_net.py281CODE
LOWweathernext/weathernext2/architecture.py53CODE
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMweathernext/cyclones/ibtracs_processing_stages.py403 # Create the actual wind gridded quadrant shape.COMMENT
MEDIUMweathernext/utils/icosahedral_mesh.py231 # This class handles the positioning of the new vertices, and avoids creatingCOMMENT
MEDIUMweathernext/utils/icosahedral_mesh.py272 # This class handles the positioning of the new vertices, and avoids creatingCOMMENT
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWweathernext/cyclones/direct_tracker.py925 # Check if the refined latlon has a probability of existence above theCOMMENT
LOWweathernext/utils/gather_scatter_ops.py87 # Check if all indices fall within the index_range.COMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWweathernext/utils/solar_radiation.py26CODE