AI Slop Code Risk Monitor

vapoursynth/vapoursynth

SlopCodeMonitor badge for vapoursynth/vapoursynth Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A video processing framework with simplicity in mind

3.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for vapoursynth/vapoursynth, a C++ project with 2,125 GitHub stars. SynthScan examined 95,480 lines of code across 204 source files, recording 274 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 3.5 (Low 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.

3.5
Adjusted Signal
3.5
Raw Pattern Score
100%
Time Factor
2026-10-28
Last Push
2.1K
Stars
C++
Language
95.5K
Lines of Code
204
Files
274
Pattern Hits
2026-10-31
Scan Date
0.04
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 10.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 8.6/100 · LOW

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

PR Review Velocity Impact 16.7/100 · LOW

Which changes need focused human review? 274 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 9MEDIUM 15LOW 250

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 274 distinct pattern matches across 11 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.

Over-Commented Block134 hits · 134 pts
SeverityFileLineSnippetContext
LOWinclude/VapourSynth4.h21#ifndef VAPOURSYNTH4_HCOMMENT
LOWinclude/VapourSynth4.h41COMMENT
LOWinclude/VapourSynth4.h61/* And now for some symbol hide-and-seek... */COMMENT
LOWinclude/VSHelper4.h21#endifCOMMENT
LOWinclude/VSHelper4.h41COMMENT
LOWinclude/VSScript4.h21#ifndef VSSCRIPT4_HCOMMENT
LOWinclude/cython/vapoursynth.h1/* Generated by Cython 3.0.10 */COMMENT
LOWinclude/cython/vapoursynth_api.h1/* Generated by Cython 3.0.10 */COMMENT
LOWsdk/gpu_invert_raw_example.c41#ifdef _WIN32COMMENT
LOWsdk/invert_example.c1//////////////////////////////////////////COMMENT
LOWsdk/invert_example.c121 // Only 1 and 0 mean anything, so anything else is an error rather than a guessCOMMENT
LOWsdk/invert_example.c141 // fmUnordered is for filters whose state changes with every request, such as sourceCOMMENT
LOWsdk/invert_example.c161// If you don't own a domain then make one up that's relatedCOMMENT
LOWdoc/conf.py1#!/usr/bin/env python3COMMENT
LOWdoc/conf.py21COMMENT
LOWdoc/conf.py81# There are two options for replacing |today|: either, you set today to someCOMMENT
LOWdoc/conf.py101# If true, sectionauthor and moduleauthor directives will be shown in theCOMMENT
LOWdoc/conf.py121# html_theme_options = {}COMMENT
LOWdoc/conf.py141COMMENT
LOWdoc/conf.py161COMMENT
LOWdoc/conf.py181# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.COMMENT
LOWdoc/conf.py201 # The font size ('10pt', '11pt' or '12pt').COMMENT
LOWdoc/conf.py221# If true, show page references after internal links.COMMENT
LOWlinux_tests/lock_order_expected.txt1# The lock graph from section 2 of ../src/core/vsvulkanexec_protocol.md, as observed by theCOMMENT
LOWlinux_tests/probe_compat.h41#endifCOMMENT
LOWlinux_tests/check_lock_order.sh1#!/bin/shCOMMENT
LOWlinux_tests/run_reset_tty.sh1#!/bin/shCOMMENT
LOWlinux_tests/build_probes.sh1#!/bin/shCOMMENT
LOWfuzzers/py_fuzz.py481 print(f" x{v} {k}")COMMENT
LOWsrc/core/vsapi.cpp21#include "vscore.h"COMMENT
LOWsrc/core/averageframesfilter.cpp21#include <algorithm>COMMENT
LOWsrc/core/averageframesfilter.cpp41namespace {COMMENT
LOWsrc/core/float16_helper.h21#ifndef FLOAT16_HELPER_HCOMMENT
LOWsrc/core/version.h21#include "VapourSynth4.h"COMMENT
LOWsrc/core/ter-116n.h21const int character_height = 16;COMMENT
LOWsrc/core/ter-116n.h41#define ___X___X 0x11COMMENT
LOWsrc/core/ter-116n.h61#define __X__X_X 0x25COMMENT
LOWsrc/core/ter-116n.h81#define __XXX__X 0x39COMMENT
LOWsrc/core/ter-116n.h101#define _X__XX_X 0x4DCOMMENT
LOWsrc/core/ter-116n.h121#define _XX____X 0x61COMMENT
LOWsrc/core/ter-116n.h141#define _XXX_X_X 0x75COMMENT
LOWsrc/core/ter-116n.h161#define X___X__X 0x89COMMENT
LOWsrc/core/ter-116n.h181#define X__XXX_X 0x9DCOMMENT
LOWsrc/core/ter-116n.h201#define X_XX___X 0xB1COMMENT
LOWsrc/core/ter-116n.h221#define XX___X_X 0xC5COMMENT
LOWsrc/core/ter-116n.h241#define XX_XX__X 0xD9COMMENT
LOWsrc/core/ter-116n.h261#define XXX_XX_X 0xEDCOMMENT
LOWsrc/core/simplefilters.cpp21#include <cfloat>COMMENT
LOWsrc/core/genericfilters.cpp21COMMENT
LOWsrc/core/audiofilters.cpp21#include <cstdlib>COMMENT
LOWsrc/core/memoryuse.cpp1#include <cassert>COMMENT
LOWsrc/core/audioresampling.cpp21#include <algorithm>COMMENT
LOWsrc/core/vscore.h21#ifndef VSCORE_HCOMMENT
LOWsrc/core/vscore.h41#include <thread>COMMENT
LOWsrc/core/vscore.cpp21#include "vscore.h"COMMENT
LOWsrc/core/vsthreadpool.cpp21#include "vscore.h"COMMENT
LOWsrc/core/vsresize.cpp21#include <cmath>COMMENT
LOWsrc/core/vsresize.cpp1001 vspapi->registerFunction("Bob", "clip:vnode:all;filter:data:opt;tff:int:opt;" COMMON_ARGS, RETURN_VALUE, bobCreate, COMMENT
LOWsrc/core/lutfilters.cpp21#include <cstdlib>COMMENT
LOWsrc/core/boxblurfilter.cpp21#include <memory>COMMENT
74 more matches not shown…
Hyper-Verbose Identifiers69 hits · 64 pts
SeverityFileLineSnippetContext
LOWtest/prop_dict_test.py112 def test_no_nodes_or_functions(self):CODE
LOWtest/prop_dict_test.py128 def test_setting_a_property_survives_the_frame_closing_mid_iteration(self):CODE
LOWtest/prop_dict_test.py142 def test_setting_a_property_rejects_a_value_that_closes_the_frame(self):CODE
LOWtest/filter_test.py162 def test_convolution_saturates_before_converting(self):STRING
LOWtest/filter_test.py178 def test_lut_refuses_unprocessed_planes_when_the_storage_changes(self):STRING
LOW⚡test/filter_test.py194 def test_crop_rejects_coordinates_that_overflow_the_bounds_check(self):STRING
LOW⚡test/filter_test.py202 def test_blankaudio_keep_partial_last_frame(self):STRING
LOW⚡test/filter_test.py209 def test_gpu_resize_frame_matrix_outranks_matrix_in(self):STRING
LOWtest/filter_test.py221 def test_vulkan_property_does_not_deadlock_against_first_device_use(self):STRING
LOWtest/filter_test.py235 def test_transfer_staging_accounted_sized_to_demand_and_released_when_idle(self):STRING
LOWtest/filter_test.py282 def test_buffers_are_recycled_across_sizes_without_being_handed_out_twice(self):STRING
LOWtest/filter_test.py298 def test_lowering_the_limit_drains_the_pool_and_the_core_keeps_working(self):STRING
LOWtest/chromaloc_mask_test.py65 def maskedmerge_reveal_chroma_mask(self, mask, n=0, length=1, field_based=False, chromaloc=None, **kwargs):CODE
LOW⚡test/chromaloc_mask_test.py80 def test_maskedmerge_matches_chromaloc_reference(self):CODE
LOW⚡test/chromaloc_mask_test.py89 def test_maskedmerge_center_equals_unshifted_downsample(self):CODE
LOW⚡test/chromaloc_mask_test.py99 def test_maskedmerge_per_frame_dispatch(self):CODE
LOWtest/chromaloc_mask_test.py117 def test_maskedmerge_non_subsampled_ignores_chromaloc(self):CODE
LOWtest/chromaloc_mask_test.py141 def test_maskedmerge_interlaced_matches_chromaloc_reference(self):CODE
LOWtest/chromaloc_mask_test.py152 def test_maskedmerge_interlaced_differs_from_progressive(self):CODE
LOWtest/chromaloc_mask_test.py162 def test_maskedmerge_chromaloc_compatibility(self):CODE
LOW⚡test/chromaloc_mask_test.py195 def premultiply_reference_chroma(self, alpha, loc, field_based=False):CODE
LOW⚡test/chromaloc_mask_test.py203 def test_premultiply_matches_reference(self):CODE
LOW⚡test/chromaloc_mask_test.py213 def test_premultiply_per_frame_dispatch(self):CODE
LOWtest/chromaloc_mask_test.py227 def test_premultiply_interlaced_matches_reference(self):CODE
LOW⚡test/chromaloc_mask_test.py268 def test_maskedmerge_interlaced_differs_from_progressive(self):CODE
LOW⚡test/chromaloc_mask_test.py272 def test_maskedmerge_interlaced_matches_chromaloc_reference(self):CODE
LOW⚡test/chromaloc_mask_test.py276 def test_premultiply_interlaced_matches_reference(self):CODE
LOWtest/test.py100 def test_blank_clip_no_variable(self):CODE
LOWtest/test.py111 def test_blank_clip_variable_size(self):CODE
LOWtest/test.py122 def test_blank_clip_variable_format(self):CODE
LOW⚡test/environment_test.py894 def test_video_output_completes_short_writes(self):CODE
LOW⚡test/environment_test.py900 def test_audio_output_completes_short_writes(self):CODE
LOW⚡test/environment_test.py909 def test_destroy_from_own_frame_callback(self):CODE
LOWtest/environment_test.py162 def test_environment_can_retrieve_api(self):CODE
LOWtest/environment_test.py168 def test_environment_can_retrieve_core_ptr(self):CODE
LOWtest/environment_test.py180 def test_environment_use_unsets_environment_on_exit(self):CODE
LOWtest/environment_test.py201 def test_environment_use_restores_environment_on_exit(self):CODE
LOWtest/environment_test.py218 def test_policy_clearing_runs_callbacks(self):CODE
LOWtest/environment_test.py255 def test_environment_destruction_runs_callbacks(self):CODE
LOWtest/environment_test.py295 def test_environment_warns_against_resource_leaks(self):CODE
LOWtest/environment_test.py304 def test_locals_store_data_between_envs(self):CODE
LOWtest/environment_test.py341 def test_locals_differ_from_each_other(self):CODE
LOWtest/environment_test.py357 def test_locals_store_data_between_envs(self):CODE
LOWtest/environment_test.py382 def test_exception_tunneling_and_no_leak(self):CODE
LOWtest/environment_test.py419 def test_environment_invalidation_releases_nodes_and_core(self):CODE
LOWtest/environment_test.py513 def test_environment_waits_for_futures(self):CODE
LOWtest/environment_test.py572 def test_environment_refuses_requests_during_destruction(self):CODE
LOWtest/environment_test.py610 def test_policy_unregistering_itself_during_registration(self):CODE
LOWtest/environment_test.py625 def test_failed_registration_leaves_no_policy(self):CODE
LOWtest/environment_test.py648 def test_requests_without_current_environment_complete_and_track(self):CODE
LOWtest/environment_test.py670 def test_current_environment_waits_for_foreign_requests(self):CODE
LOWtest/environment_test.py704 def test_failed_registration_destroys_created_environments(self):CODE
LOWtest/environment_test.py725 def test_invoking_without_environment_does_not_leak(self):CODE
LOWtest/environment_test.py746 def test_output_rejects_mismatched_alpha(self):CODE
LOWtest/environment_test.py767 def test_frame_props_keep_embedded_nul(self):CODE
LOWtest/environment_test.py777 def test_create_video_frame_validates_dimensions(self):CODE
LOWtest/environment_test.py791 def test_frame_props_iteration_survives_close(self):CODE
LOWtest/environment_test.py806 def test_output_releases_frames_on_error(self):CODE
LOWtest/environment_test.py831 def test_functions_invoke_on_their_own_core(self):CODE
LOWtest/environment_test.py852 def test_get_outputs_keeps_dict_semantics(self):CODE
9 more matches not shown…
Empty Error Handlers9 hits · 45 pts
SeverityFileLineSnippetContext
HIGHtest/environment_test.py133except EOFError:CODE
HIGHfuzzers/py_fuzz.py339except vs.Error:CODE
HIGHsrc/py/_shell.py58except Exception:CODE
HIGHsrc/py/_shell.py65except Exception:CODE
HIGHsrc/py/_utils.py186except Exception:CODE
HIGHsrc/py/_utils.py211except Exception:CODE
HIGHsrc/py/_utils.py263except Exception:CODE
HIGHsrc/py/_utils.py140except Exception:CODE
HIGHsrc/py/_utils.py304except Exception:CODE
Decorative Section Separators12 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUMtest/resize_reference.py21# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/resize_reference.py145# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/resize_reference.py196# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/resize_reference.py258# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/resize_reference.py300# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/resize_reference.py446# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/gpuresize_test.py36# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/gpuresize_test.py76# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/gpuresize_test.py112# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/gpuresize_test.py132# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/gpuresize_test.py305# ---------------------------------------------------------------------------------------COMMENT
MEDIUMtest/gpuresize_test.py751# ---------------------------------------------------------------------------------------COMMENT
Excessive Try-Catch Wrapping21 hits · 24 pts
SeverityFileLineSnippetContext
LOWtest/gputestsupport.py42 except Exception:CODE
LOWtest/environment_test.py100 except Exception:CODE
LOWlinux_tests/log_reentry_all.py25 except Exception as e:CODE
LOWlinux_tests/log_reentry.py31 except Exception as e: # an error is a fine answer; a hang is the findingCODE
LOWfuzzers/py_fuzz.py381 except Exception as e: # noqa: BLE001 -- counted, and that is the pointCODE
LOWfuzzers/py_fuzz.py387 except Exception as e: # noqa: BLE001CODE
LOWfuzzers/py_fuzz.py426 except Exception as e: # noqa: BLE001CODE
LOWfuzzers/py_fuzz.py440 except Exception: # noqa: BLE001CODE
MEDIUMfuzzers/py_fuzz.py436def rss_mb():CODE
LOWsrc/py/_shell.py58 except Exception:CODE
LOWsrc/py/_shell.py65 except Exception:CODE
LOW⚡src/py/_shell.py200 except Exception:CODE
LOW⚡src/py/_shell.py209 except Exception:CODE
LOW⚡src/py/_shell.py219 except Exception:CODE
LOWsrc/py/_utils.py140 except Exception:CODE
LOWsrc/py/_utils.py186 except Exception:CODE
LOWsrc/py/_utils.py211 except Exception:CODE
LOWsrc/py/_utils.py263 except Exception:CODE
LOWsrc/py/_utils.py304 except Exception:CODE
LOWsrc/py/_utils.py320 except Exception:CODE
LOWsrc/py/_utils.py342 except Exception:CODE
Unused Imports12 hits · 12 pts
SeverityFileLineSnippetContext
LOWfuzzers/py_fuzz.py33CODE
LOWsrc/py/_shell.py1CODE
LOWsrc/py/__init__.py1CODE
LOWsrc/py/__init__.py2CODE
LOWsrc/py/__init__.py3CODE
LOWsrc/py/__init__.py3CODE
LOWsrc/py/__init__.py3CODE
LOWsrc/py/__init__.py3CODE
LOWsrc/py/__init__.py3CODE
LOWsrc/py/__init__.py3CODE
LOWsrc/py/__init__.py3CODE
LOWsrc/py/__init__.py3CODE
Deep Nesting12 hits · 12 pts
SeverityFileLineSnippetContext
LOWtest/resize_reference.py156CODE
LOWtest/chromaloc_mask_test.py162CODE
LOWtest/environment_test.py777CODE
LOWtest/zimgtest.py15CODE
LOWtest/zimgtest.py34CODE
LOWtest/zimgtest.py65CODE
LOWtest/expr_compiler/compiler_test.py10CODE
LOWfuzzers/py_fuzz.py160CODE
LOWfuzzers/py_fuzz.py399CODE
LOWsrc/py/_shell.py19CODE
LOWsrc/py/_utils.py96CODE
LOWsrc/py/_utils.py289CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMtest/gpuresize_test.py24# numpy nor a GPU. This file is an argv-driven harness rather than a unittest module, so aCOMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMdoc/conf.py7# This file is execfile()d with the current directory set to its containing dir.COMMENT
Modern Structural Boilerplate2 hits · 2 pts
SeverityFileLineSnippetContext
LOWsrc/py/_shell.py186def update_shell(path: str) -> None:CODE
LOWsrc/py/__init__.py14__all__ = [CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtest/resize_reference.py333CODE