AI Slop Code Risk Monitor

tmoroney/auto-subs

SlopCodeMonitor badge for tmoroney/auto-subs Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

On-device subtitle generation that connects directly to DaVinci Resolve, Premiere, and After Effects.

2.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for tmoroney/auto-subs, a TypeScript project with 4,491 GitHub stars. SynthScan examined 103,693 lines of code across 461 source files, recording 140 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 2.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.

2.5
Adjusted Signal
2.5
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
4.5K
Stars
TypeScript
Language
103.7K
Lines of Code
461
Files
140
Pattern Hits
2026-10-31
Scan Date
0.02
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 4.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 4.9/100 · LOW

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

Agent Over-Engineering Ratio 3.9/100 · LOW

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

PR Review Velocity Impact 11.1/100 · LOW

Which changes need focused human review? 140 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 11MEDIUM 25LOW 104

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 140 distinct pattern matches across 14 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.

Cross-Language Confusion (JS/TS)11 hits · 82 pts
SeverityFileLineSnippetContext
HIGHAdobe-Extension/src/js/lib/cep/vulcan.d.ts30 * @return True if the app can be launched, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.d.ts45 * @return True if the app is running, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.d.ts56 * @return True if the app is installed, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js52 * @return True if the app can be launched, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js80 * @return True if the app is running, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js105 * @return True if the app is installed, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js182 * @return True if the app can be launched, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js215 * @return True if the app is running, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js249 * @return True if the app is installed, false otherwise.COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js590 * @return True if all required parameters are valid,COMMENT
HIGHAdobe-Extension/src/js/lib/cep/vulcan.js609 * @return True if the string has the prefix, false if not.COMMENT
Over-Commented Block47 hits · 47 pts
SeverityFileLineSnippetContext
LOW…ills/davinci-resolve-fusion/references/resolve-api.txt1# ============================================================================COMMENT
LOW…ills/davinci-resolve-fusion/references/resolve-api.txt381 GetTrackSubType(trackType, trackIndex) --> string # Returns an audio track's format.COMMENT
LOW…/skills/davinci-resolve-fusion/scripts/start-server.sh1# MOVED: this AutoSubs-specific server launcher now lives in the AutoSubs projectCOMMENT
LOWAutoSubs-App/scripts/setup-resolve-dev.js21 case 'darwin':COMMENT
LOW…rc-tauri/crates/transcription-engine/src/formatting.rs1// Subtitle post-processing for timestamped transcription output.COMMENT
LOW…rc-tauri/crates/transcription-engine/src/formatting.rs41/// Minimum inter-segment silence (seconds) for a whisper segment boundary toCOMMENT
LOW…rc-tauri/crates/transcription-engine/src/formatting.rs101 /// Minimum duration per subtitle cueCOMMENT
LOW…rc-tauri/crates/transcription-engine/src/formatting.rs261 // SE Asian no-spaceCOMMENT
LOW…rc-tauri/crates/transcription-engine/src/formatting.rs681/// Cyrillic, Greek, Armenian, etc.) plus apostrophe-like marks that commonlyCOMMENT
LOW…tauri/crates/transcription-engine/src/model_manager.rs21// before giving up and reporting a stall (see its doc comment for rationale).COMMENT
LOW…tauri/crates/transcription-engine/src/model_manager.rs221COMMENT
LOW…/src-tauri/crates/transcription-engine/src/manifest.rs1//! Compile-time model manifest.COMMENT
LOW…/src-tauri/crates/transcription-engine/src/manifest.rs161/// can flatten/rename (`dest`) and/or pull the file from a *different* HF repoCOMMENT
LOW…/src-tauri/crates/transcription-engine/src/manifest.rs261 }COMMENT
LOW…/crates/transcription-engine/src/translation_client.rs121 }COMMENT
LOW…App/src-tauri/crates/transcription-engine/src/utils.rs1/// Estimate a safe DTW working-set size (in bytes) for whisper.cpp DTW.COMMENT
LOW…pp/src-tauri/crates/transcription-engine/src/engine.rs741 // VAD-guided timestamp snapping: correct leading-edge drift, trailingCOMMENT
LOW…pp/src-tauri/crates/transcription-engine/src/engine.rs761 // is on (including "en"), this covers both native and Google paths.COMMENT
LOW…src-tauri/crates/diarize/crates/knf-rs/sys/wrapper.hpp1#include "knfc/knfc.h"COMMENT
LOW…rs/sys/knf/kaldi-native-fbank/csrc/feature-functions.h21#define KALDI_NATIVE_FBANK_CSRC_FEATURE_FUNCTIONS_H_COMMENT
LOW…nf-rs/sys/knf/kaldi-native-fbank/csrc/online-feature.h21#ifndef KALDI_NATIVE_FBANK_CSRC_ONLINE_FEATURE_H_COMMENT
LOW…nf-rs/sys/knf/kaldi-native-fbank/csrc/online-feature.h101 // @param sampling_rate The sampling_rate of the input waveformCOMMENT
LOW…knf-rs/sys/knf/kaldi-native-fbank/csrc/feature-fbank.h21#ifndef KALDI_NATIVE_FBANK_CSRC_FEATURE_FBANK_H_COMMENT
LOW…es/knf-rs/sys/knf/kaldi-native-fbank/csrc/kaldi-math.h1// kaldi-native-fbank/csrc/kaldi-math.hCOMMENT
LOW…ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h281}COMMENT
LOW…ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h301 : ::knf::Voidifier() & \COMMENT
LOW…ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h321#define _KNF_CHECK_OP(x, y, op) \COMMENT
LOW…ze/crates/knf-rs/sys/knf/kaldi-native-fbank/csrc/log.h361COMMENT
LOW…/knf-rs/sys/knf/kaldi-native-fbank/csrc/feature-mfcc.h21// This file is copied/modified from kaldi/src/feat/feature-mfcc.hCOMMENT
LOW…nf-rs/sys/knf/kaldi-native-fbank/csrc/feature-window.h1// kaldi-native-fbank/csrc/feature-window.hCOMMENT
LOW…e/crates/knf-rs/sys/knf/scripts/check_style_cpplint.sh1#!/bin/bashCOMMENT
LOW…App/src-tauri/crates/diarize/tests/sortformer_audio.rs1//! Real-audio regression test for the Sortformer backend, checked against the pyannoteCOMMENT
LOW…p/src-tauri/crates/diarize/src/sortformer/exclusive.rs1//! Turns Sortformer's per-speaker activity probabilities into the disjoint, single-speakerCOMMENT
LOW…p/src-tauri/crates/diarize/src/sortformer/exclusive.rs21COMMENT
LOW…Subs-App/src-tauri/crates/diarize/src/pyannote/plda.rs1use eyre::{Context, Result};COMMENT
LOWAutoSubs-App/src-tauri/linux/postinst.sh1#!/bin/shCOMMENT
LOWAutoSubs-App/src-tauri/src/resolve_scripts.rs1//! Installs the Resolve launcher (`Utility/AutoSubs.lua`) into the user'sCOMMENT
LOWAutoSubs-App/src-tauri/src/logging.rs1//! # Logging SystemCOMMENT
LOWAutoSubs-App/src-tauri/src/transcription_api.rs21 pub progress: i32,COMMENT
LOWAutoSubs-App/src-tauri/src/transcription_api.rs441 }COMMENT
LOWAutoSubs-App/src-tauri/src/main.rs241COMMENT
LOWAutoSubs-App/src-tauri/src/resolve_launcher.rs1//! "Open from Resolve": opens AutoSubs when the user runs Workspace > Scripts >COMMENT
LOWAutoSubs-App/src-tauri/src/resolve_bridge.rs1//! File-mailbox bridge to the AutoSubs Lua server that runs inside DaVinciCOMMENT
LOWAutoSubs-App/src-tauri/src/resolve_bridge.rs41const ACK_TIMEOUT: Duration = Duration::from_secs(2);COMMENT
LOWAutoSubs-App/src-tauri/src/cli.rs1//! Headless command-line interface.COMMENT
LOWAutoSubs-App/src-tauri/src/cli.rs61];COMMENT
LOWAutoSubs-App/src-tauri/src/cli.rs561 m.argsCOMMENT
Decorative Section Separators13 hits · 39 pts
SeverityFileLineSnippetContext
MEDIUM…ills/davinci-resolve-fusion/references/resolve-api.txt1# ============================================================================COMMENT
MEDIUM…ills/davinci-resolve-fusion/references/resolve-api.txt12# ============================================================================COMMENT
MEDIUMAutoSubs-App/scripts/setup-resolve-dev.js210 // ── Stale artifact cleanup ────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/stores/settings-store.ts14// ─── Store file config ────────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/stores/settings-store.ts20// ─── Default settings ─────────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/stores/settings-store.ts83// ─── Persisted-shape normalisation ────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/stores/settings-store.ts144// ─── Store type ───────────────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/stores/settings-store.ts156// ─── Store creation ───────────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/stores/settings-store.ts228// ─── Manual rehydration ───────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/components/captions/output-panel.tsx153 // ── Conflict check ──────────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/components/captions/output-panel.tsx178 // ── Derived state ───────────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/components/captions/output-panel.tsx222 // ── Actions ─────────────────────────────────────────────────────────────COMMENT
MEDIUMAutoSubs-App/src/components/captions/output-panel.tsx290 // ── Primary action label ────────────────────────────────────────────────COMMENT
Hyper-Verbose Identifiers32 hits · 32 pts
SeverityFileLineSnippetContext
LOWAutoSubs-App/scripts/update-version.js11function getVersionFromPackageJson() {CODE
LOW…ve-fbank/python/tests/test_frame_extraction_options.py82def test_from_dict_full_and_as_dict():CODE
LOW…ldi-native-fbank/python/tests/test_mel_bank_options.py78def test_from_dict_full_and_as_dict():CODE
LOW…/kaldi-native-fbank/python/tests/test_fbank_options.py145def test_from_dict_full_and_as_dict():CODE
LOWAutoSubs-App/src/stores/settings-store.ts96export function normalizePersistedSettings(persisted: unknown): Partial<Settings> {CODE
LOWAutoSubs-App/src/utils/subtitle-export.ts131export function subtitleDocumentSourceName(CODE
LOWAutoSubs-App/src/utils/subtitle-export.ts154export async function writeJsonTranscriptExport(input: {CODE
LOWAutoSubs-App/src/utils/subtitle-export.ts248export function serializeRawTranscriptExport(input: {CODE
LOWAutoSubs-App/src/utils/file-utils.ts201async function getSubtitleDocumentIndexPath(): Promise<string> {CODE
LOWAutoSubs-App/src/utils/file-utils.ts206async function readSubtitleDocumentIndex(): Promise<TranscriptIndexItem[]> {CODE
LOWAutoSubs-App/src/utils/file-utils.ts222async function writeSubtitleDocumentIndex(CODE
LOWAutoSubs-App/src/utils/file-utils.ts229async function upsertSubtitleDocumentIndexItem(CODE
LOWAutoSubs-App/src/utils/file-utils.ts250async function ensureSubtitleDocumentIndexItem(CODE
LOWAutoSubs-App/src/utils/file-utils.ts278async function removeSubtitleDocumentIndexItem(filename: string): Promise<void> {CODE
LOWAutoSubs-App/src/utils/file-utils.ts285function getLegacyTranscriptFilename(CODE
LOWAutoSubs-App/src/utils/file-utils.ts311async function migrateLegacyTranscriptsOnce(newDir: string): Promise<void> {CODE
LOWAutoSubs-App/src/utils/file-utils.ts425export async function validateExportedAudioFile(filePath: string): Promise<string> {CODE
LOWAutoSubs-App/src/utils/file-utils.ts505export function generateSubtitleDocumentFilename(CODE
LOWAutoSubs-App/src/utils/file-utils.ts582export async function listSubtitleDocumentIndex(): Promise<CODE
LOWAutoSubs-App/src/utils/file-utils.ts617export async function resolveSubtitleDocumentFilename(CODE
LOWAutoSubs-App/src/utils/file-utils.ts772export async function loadSubtitleDocumentSubtitles(CODE
LOWAutoSubs-App/src/utils/export-file.ts21export function subtitleExportDialogOptions(CODE
LOWAutoSubs-App/src/utils/export-file.ts52export function buildSubtitleExportContent(CODE
LOWAutoSubs-App/src/components/ui/chart.tsx318function getPayloadConfigFromPayload(CODE
LOW…bs-App/src/components/transcription/source-section.tsx96export function formatLocalizedTrackNumber(CODE
LOWAutoSubs-App/src/lib/models.ts207export function downloadedAuxiliaryModels(CODE
LOWAutoSubs-App/src/lib/models.ts270export function getFirstRecommendedModelForLanguage(language: string): Model | null {CODE
LOWAutoSubs-App/src/api/formatting-api.ts104export function getDefaultFormattingOptions(settings: {CODE
LOWAdobe-Extension/src/js/lib/cep/cep_engine_extensions.js678 native function RegisterExtensionUnloadCallback();CODE
LOWAdobe-Extension/src/jsx/ppro/ppro.ts62function getSequenceInPointSeconds(sequence: any): number {CODE
LOWAdobe-Extension/src/jsx/ppro/ppro.ts196export function getSelectedClipsTimeRange(sequence: any) {CODE
LOWAdobe-Extension/src/jsx/aeft/aeft.ts83export function getSelectedClipsTimeRange(_sequence: any) {CODE
Unused Imports13 hits · 13 pts
SeverityFileLineSnippetContext
LOW…native-fbank/python/tests/test_online_whisper_fbank.py5CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…ldi-native-fbank/python/kaldi_native_fbank/__init__.py1CODE
LOW…diarize/crates/knf-rs/sys/knf/cmake/cmake_extension.py3CODE
LOW…diarize/crates/knf-rs/sys/knf/cmake/cmake_extension.py6CODE
Dead Code5 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUM…s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py28CODE
MEDIUM…s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py29CODE
MEDIUM…s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py31CODE
MEDIUM…s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py32CODE
MEDIUM…s/sys/knf/kaldi-native-fbank/python/tests/test_rfft.py34CODE
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMAutoSubs-App/src-tauri/src/logging.rs18//! home directory (e.g., `/Users/tom/`) with `~`. It is robust enough to handle:COMMENT
MEDIUMAutoSubs-App/src/contexts/SubtitleDocumentContext.tsx416 // read srt file and convert to json using robust parserCOMMENT
MEDIUMAutoSubs-App/src/utils/srt-utils.ts137// --- Helper function for robust SRT parsing ---COMMENT
Fake / Example Data8 hits · 8 pts
SeverityFileLineSnippetContext
LOWAutoSubs-App/src/i18n/locales/ja/translation.json599 "placeholder": "トラックを選択",CODE
LOWAutoSubs-App/src/i18n/locales/ru/translation.json609 "placeholder": "Выберите дорожку",CODE
LOWAutoSubs-App/src/i18n/locales/zh/translation.json599 "placeholder": "选择轨道",CODE
LOWAutoSubs-App/src/i18n/locales/de/translation.json599 "placeholder": "Spur wählen",CODE
LOWAutoSubs-App/src/i18n/locales/ko/translation.json599 "placeholder": "트랙 선택",CODE
LOWAutoSubs-App/src/i18n/locales/fr/translation.json599 "placeholder": "Choisir une piste",CODE
LOWAutoSubs-App/src/i18n/locales/es/translation.json599 "placeholder": "Elige una pista",CODE
LOWAutoSubs-App/src/i18n/locales/en/translation.json619 "placeholder": "Choose a track",CODE
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/package.yml191 # Create the package directoryCOMMENT
MEDIUM.github/workflows/package.yml202 # Create the packageCOMMENT
Deep Nesting2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…/davinci-resolve-fusion/scripts/split-fusion-manual.py112CODE
LOW…/davinci-resolve-fusion/scripts/split-fusion-manual.py215CODE
Modern AI Meta-Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMAutoSubs-App/README.md118For in-depth architecture docs, component breakdowns, and to ask questions about the codebase, visit **[AutoSubs on DeepCODE
Excessive Try-Catch Wrapping1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUM…Subs-App/src-tauri/resources/modules/autosubs_core.lua439 print("Error retrieving timeline info:", err)CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…ts/skills/davinci-resolve-fusion/scripts/run-script.sh13# Check if script file existsCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOW…e/crates/knf-rs/sys/knf/scripts/check_style_cpplint.sh17# Usage:COMMENT