AI Slop Code RIsk Monitor

HIPS/autograd

Efficiently computes derivatives of NumPy code.

15.9 Elevated pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for HIPS/autograd, a Python project with 7,539 GitHub stars. SynthScan examined 15,506 lines of code across 120 source files, recording 206 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 15.9 (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.

15.9
Adjusted Signal
15.9
Raw Pattern Score
100%
Time Factor
2026-10-06
Last Push
7.5K
Stars
Python
Language
15.5K
Lines of Code
120
Files
206
Pattern Hits
2026-10-12
Scan Date
0.04
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 39.1/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 23.0/100 · LOW

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

Agent Over-Engineering Ratio 33.9/100 · MEDIUM

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

PR Review Velocity Impact 53.7/100 · HIGH

Which changes need focused human review? 206 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 5MEDIUM 4LOW 197

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 206 distinct pattern matches across 12 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 Identifiers108 hits · 118 pts
SeverityFileLineSnippetContext
LOWautograd/builtins.py121def grad_sequence_extend_right(argnum, ans, args, kwargs):CODE
LOWautograd/builtins.py134def grad_sequence_extend_left(argnum, ans, args, kwargs):CODE
LOWautograd/core.py378def deprecated_defvjp_is_zero(primitive_fun):CODE
LOWautograd/core.py407def primitive_with_deprecation_warnings(f_raw):CODE
LOWautograd/numpy/numpy_wrapper.py101def _array_from_scalar_or_array(array_args, array_kwargs, scalar):CODE
LOWautograd/numpy/numpy_vjps.py923def array_from_args_gradmaker(argnum, ans, args, kwargs):CODE
LOWautograd/numpy/numpy_vjps.py930def array_from_scalar_or_array_gradmaker(ans, array_args, array_kwargs, scarray):CODE
LOWautograd/numpy/numpy_jvps.py244def fwd_grad_concatenate_args(argnum, g, ans, axis_args, kwargs):CODE
LOWautograd/scipy/stats/multivariate_normal.py19def generalized_outer_product(x):CODE
LOWtests/test_linalg.py17def check_symmetric_matrix_grads(fun, **grad_check_kwargs):CODE
LOWtests/test_linalg.py204def test_frobenius_norm_complex():CODE
LOWtests/test_linalg.py222def test_frobenius_norm_axis_complex():CODE
LOWtests/test_linalg.py243def test_vector_norm_ord_complex(size, ord):CODE
LOWtests/test_linalg.py281def test_norm_nuclear_complex():CODE
LOWtests/test_linalg.py300def test_norm_nuclear_axis_complex():CODE
LOWtests/test_linalg.py332def test_eigvalh_lower_broadcasting():CODE
LOWtests/test_linalg.py343def test_eigvalh_upper_broadcasting():CODE
LOWtests/test_linalg.py357def test_eigvalh_lower_complex():CODE
LOWtests/test_linalg.py367def test_eigvalh_upper_complex():CODE
LOWtests/test_linalg.py420def test_cholesky_reparameterization_trick():CODE
LOWtests/test_misc.py96def test_flatten_nodes_in_containers():CODE
LOW⚡tests/test_scipy.py102 def test_norm_logpdf_broadcast():CODE
LOW⚡tests/test_scipy.py105 def test_norm_logcdf_broadcast():CODE
LOW⚡tests/test_scipy.py108 def test_norm_logsf_broadcast():CODE
LOW⚡tests/test_scipy.py120 def test_poisson_cdf_broadcast():CODE
LOW⚡tests/test_scipy.py123 def test_poisson_logpmf_broadcast():CODE
LOW⚡tests/test_scipy.py126 def test_poisson_pmf_broadcast():CODE
LOWtests/test_scipy.py198 def test_mvn_logpdf_broadcast():CODE
LOWtests/test_scipy.py211 def normalized_dirichlet_logpdf(x, alpha):CODE
LOWtests/test_scipy.py223 def test_dirichlet_logpdf_alpha():CODE
LOWtests/test_scipy.py267 def test_convolve_generalization():CODE
LOW⚡tests/test_vspaces.py49 def compatibility_of_scalar_mul_with_field_mul(x, a, b):CODE
LOW⚡tests/test_vspaces.py52 def identity_element_of_scalar_mul(x):CODE
LOW⚡tests/test_vspaces.py55 def distributivity_of_scalar_mul_wrt_vector_add(x, y, a):CODE
LOW⚡tests/test_vspaces.py58 def distributivity_of_scalar_mul_wrt_scalar_add(x, a, b):CODE
LOW⚡tests/test_vspaces.py65 def scalar_mul_preserves_vspace(x, a):CODE
LOWtests/test_vspaces.py142def test_array_vspace_complex():CODE
LOWtests/test_graphs.py83def test_mutating_outgrad_from_indexing():CODE
LOWtests/test_graphs.py95def test_complex_mutating_outgrad_from_indexing():CODE
LOWtests/test_graphs.py109def test_complex_separate_real_and_imaginary():CODE
LOWtests/test_graphs.py132def test_third_derivative_other_args():CODE
LOWtests/test_graphs.py154def test_singleton_array_output():CODE
LOWtests/test_graphs.py184def test_assignment_raises_error():CODE
LOWtests/numpy_utils.py60def binary_ufunc_check_no_same_args(fun, lims_A=None, lims_B=None, test_complex=True, **kwargs):CODE
LOW⚡tests/test_jacobian.py9def test_jacobian_against_grad():CODE
LOW⚡tests/test_jacobian.py15def test_jacobian_scalar_to_vector():CODE
LOW⚡tests/test_jacobian.py21def test_jacobian_against_stacked_grads():CODE
LOWtests/test_jacobian.py37def test_jacobian_higher_order():CODE
LOWtests/test_fft.py270def test_rfftn_odd_not_implemented():CODE
LOWtests/test_ufunc_dispatch.py22def test_grad_through_dataarray_binary_ufunc():CODE
LOWtests/test_ufunc_dispatch.py35def test_grad_through_dataarray_reversed_operand():CODE
LOWtests/test_ufunc_dispatch.py48def test_grad_through_dataarray_unary_ufunc():CODE
LOWtests/test_ufunc_dispatch.py62def test_grad_through_dataarray_transcendental_ufunc():CODE
LOWtests/test_ufunc_dispatch.py76def test_grad_through_two_dataarrays_holding_boxes():CODE
LOWtests/test_ufunc_dispatch.py92def test_grad_through_dataarray_box_plus_plain_dataarray():CODE
LOWtests/test_ufunc_dispatch.py106def test_grad_through_dataarray_box_times_plain_ndarray():CODE
LOWtests/test_ufunc_dispatch.py120def test_grad_through_dataarray_box_times_python_scalar():CODE
LOWtests/test_ufunc_dispatch.py134def test_grad_through_dataarray_division():CODE
LOWtests/test_ufunc_dispatch.py147def test_grad_through_dataarray_exp():CODE
LOWtests/test_ufunc_dispatch.py161def test_grad_through_dataarray_maximum():CODE
48 more matches not shown…
Unused Imports65 hits · 62 pts
SeverityFileLineSnippetContext
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py2CODE
LOWautograd/extend.py16CODE
LOWautograd/extend.py16CODE
LOWautograd/extend.py16CODE
LOWautograd/extend.py16CODE
LOWautograd/__init__.py1CODE
LOWautograd/__init__.py3CODE
LOWautograd/__init__.py3CODE
LOWautograd/__init__.py3CODE
LOWautograd/__init__.py3CODE
LOWautograd/__init__.py3CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/__init__.py4CODE
LOWautograd/tracer.py10CODE
LOWautograd/misc/__init__.py1CODE
LOWautograd/misc/__init__.py2CODE
LOWautograd/numpy/__init__.py6CODE
LOWautograd/numpy/__init__.py6CODE
LOWautograd/numpy/__init__.py6CODE
LOWautograd/numpy/__init__.py6CODE
LOWautograd/numpy/__init__.py6CODE
LOWautograd/numpy/__init__.py6CODE
LOWautograd/numpy/__init__.py6CODE
LOWautograd/numpy/__init__.py7CODE
LOWautograd/numpy/__init__.py8CODE
LOWautograd/scipy/__init__.py1CODE
LOWautograd/scipy/__init__.py1CODE
LOWautograd/scipy/__init__.py1CODE
LOWautograd/scipy/__init__.py1CODE
LOWautograd/scipy/stats/__init__.py1CODE
LOWautograd/scipy/stats/__init__.py1CODE
LOWautograd/scipy/stats/__init__.py1CODE
5 more matches not shown…
Cross-Language Confusion2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHautograd/scipy/signal.py15 f"Mode {mode} undefined, it can be one of 'valid', 'full', and 'same'"CODE
HIGHautograd/scipy/signal.py157 f"Mode {mode} undefined, it can be one of 'valid', 'full', and 'same'"CODE
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHautograd/scipy/stats/__init__.py7except AttributeError:CODE
HIGHautograd/scipy/stats/__init__.py12except AttributeError:CODE
Self-Referential Comments3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMtests/test_truediv.py1# This file is to check that future division works.COMMENT
MEDIUMexamples/gaussian_process.py41# Define an example covariance function.COMMENT
MEDIUMexamples/natural_gradient_black_box_svi.py28 # Define the natural gradientCOMMENT
Fake / Example Data7 hits · 8 pts
SeverityFileLineSnippetContext
LOWexamples/variational_autoencoder.py155 fake_data = generate_from_prior(gen_params, 20, latent_dim, seed)CODE
LOWexamples/variational_autoencoder.py156 save_images(fake_data, "vae_samples.png", vmin=0, vmax=1)CODE
LOWexamples/generative_adversarial_net.py68 fake_data = generate_from_noise(gen_params, num_samples, noise_dim, rs)CODE
LOWexamples/generative_adversarial_net.py69 logprobs_fake = logsigmoid(neural_net_predict(dsc_params, fake_data))CODE
LOW⚡examples/generative_adversarial_net.py165 fake_data = generate_from_noise(gen_params, 20, noise_dim, seed)CODE
LOW⚡examples/generative_adversarial_net.py167 probs_fake = np.mean(sigmoid(neural_net_predict(dsc_params, fake_data)))CODE
LOW⚡examples/generative_adversarial_net.py170 save_images(fake_data, "gan_samples.png", vmin=0, vmax=1)CODE
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHexamples/gplvm.py6# In this example, we optimize X and the hyperparameters of the GP, butCOMMENT
Over-Commented Block7 hits · 7 pts
SeverityFileLineSnippetContext
LOWautograd/tracer.py61 # (It's possible our handling attempt below will get the first shot; the handlersCOMMENT
LOWtests/test_graphs.py201COMMENT
LOWtests/test_performance.py1# TODO:COMMENT
LOWexamples/define_gradient.py21COMMENT
LOWexamples/natural_gradient_black_box_svi.py21 mu_density = np.sum(norm.logpdf(Y, mu, np.exp(log_sigma)), axis=1)COMMENT
LOWexamples/gplvm.py1# Implements a Gaussian process latent-variable model.COMMENT
LOW.github/workflows/test.yml41COMMENT
Deep Nesting6 hits · 6 pts
SeverityFileLineSnippetContext
LOWautograd/tracer.py119CODE
LOWautograd/numpy/numpy_wrapper.py25CODE
LOWautograd/numpy/linalg.py284CODE
LOWautograd/numpy/linalg.py285CODE
LOWautograd/numpy/numpy_jvps.py209CODE
LOWautograd/scipy/special.py137CODE
AI Slop Vocabulary3 hits · 6 pts
SeverityFileLineSnippetContext
LOWautograd/numpy/linalg.py263 # dimensions, so we just call a generic LU solve instead of directly usingCOMMENT
LOWautograd/numpy/numpy_boxes.py20 # Basic array attributes just pass throughCOMMENT
MEDIUMexamples/natural_gradient_black_box_svi.py46 # is small (which leads to more robust/less chaotic ascent).COMMENT
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWautograd/tracer.py89 except Exception as e:CODE
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOWautograd/numpy/numpy_vjps.py287 def helper(g, n):CODE