AI Slop Code Risk Monitor

AI Slop Code Risk Monitor

AI-assisted code is not itself a defect. The engineering question is whether teams can understand and maintain changes, verify unfamiliar dependencies, control unnecessary complexity, and review pull requests effectively. This platform reframes pattern findings as prompts for ownership, supply-chain, over-engineering, and review-effort checks. It scans 7,135 GitHub repositories with SynthScan detection and, when available, Risk Payload v1. Scores are heuristic signals for human review, not proof of authorship, security incidents, or measured maintenance cost.

Suggest a Repository
7.1K
Repositories Scanned
7.0
Mean Legacy Signal
16.0M
Total Pattern Hits
3.8B
Lines of Code Scanned
100.0
% Risk Payload Coverage

Generated 2026-11-14 17:29 UTC

📊 Overview

This overview summarizes scan coverage and the legacy pattern-signal score. It does not estimate what share of a repository was written by AI. Use individual findings and the four risk vectors below to identify where maintainers may want to verify intent, dependencies, abstraction, or review scope.

Legacy Signal Bands

Distribution of the existing SynthScan pattern score. Bands are signal ranges, not authorship classifications.

Severity Breakdown

Counts pattern findings by configured severity; severity is not a probability or a security rating.

Top 20 Categories by Score

Highlights recurring pattern categories that may warrant a closer engineering review.

Language Distribution

Counts scanned repositories by their reported primary language.

Risk Review Vectors · v3

Risk Payload v1 maps findings to cognitive ownership, dependency and supply-chain verification, agent over-engineering, and PR review effort. Indices (0–100) summarize configured findings. Review the linked evidence in context.

Cognitive Ownership Risk
13.9 12348402 findings
Hallucinated Dependency & Supply Chain Risk
4.7 1826113 findings
Agent Over-Engineering Ratio
12.5 7296493 findings
PR Review Velocity Impact
22.3 16045780 findings

🏆 Leaderboard

Repositories with the highest and lowest adjusted legacy pattern-signal scores. These ranks do not classify code authorship.

Repository Context: Stars and Signal

This plot places GitHub stars beside the legacy pattern score as repository context only. It does not establish a correlation, reveal AI-tool usage, or imply that popularity causes maintenance risk. The monitored repository sample is not a random sample of all software.

🗂️ Category Deep-Dive

Click a category to expand its top repositories and sample pattern matches.

Hallucination Indicators 5929578 pts · 2735 repos
Sample Matches
SevFileLineSnippet
CRITICALe-budget-app/69b2c970cb02ddaafff1c10d.md31 explorer.functions.addEntry.variables.HTMLString.value.toString();
CRITICALe-budget-app/69b2c970cb02ddaafff1c10d.md41 explorer.functions.addEntry.variables.HTMLString.value.toString();
CRITICALe-budget-app/69b2c970cb02ddaafff1c10d.md51 explorer.functions.addEntry.variables.HTMLString.value.toString();
CRITICALe-budget-app/69b2c970cb02ddaafff1c10e.md19 explorer.functions.addEntry.variables.HTMLString.value.toString();
CRITICALe-budget-app/69b2c970cb02ddaafff1c10e.md28 explorer.functions.addEntry.variables.HTMLString.value.toString();
CRITICALe-budget-app/69b2c970cb02ddaafff1c10e.md37 explorer.functions.addEntry.variables.HTMLString.value.toString();
Over-Commented Block 5108841 pts · 6196 repos
Sample Matches
SevFileLineSnippet
LOWpagefind.yml1# Pagefind CLI configuration
LOWjs/src/carousel.ts41const CLASS_NAME_CENTER = 'carousel-center'
LOWjs/src/carousel.ts401 // Keep the end controls in sync with the scroll position even when the
LOWscss/_nav-overflow.scss1// Nav Overflow (Priority+ Pattern)
LOWscss/_config.scss181
LOWscss/mixins/_image.scss1// Image Mixins
Hyper-Verbose Identifiers 4994307 pts · 5015 repos
Sample Matches
SevFileLineSnippet
LOWjs/src/dom/event-handler.ts145function bootstrapDelegationHandler(element: Element, selector: string, fn: EventCallable, handlerTy
LOWsite/src/libs/remark.ts107function replaceConfigInAttributes(attributes: (MdxJsxAttribute | MdxJsxExpressionAttribute)[]) {
LOWsite/src/libs/remark.ts123function replaceDocsrefInAttributes(attributes: (MdxJsxAttribute | MdxJsxExpressionAttribute)[]) {
LOWsite/src/libs/path.ts31export function validateVersionedDocsPaths(distUrl: URL) {
LOWsite/src/libs/path.ts62function sanitizeVersionedDocsPathForValidation(docsPath: string) {
LOWsite/src/libs/astro.ts115function replacePathVersionPlaceholder(name: string) {
Decorative Section Separators 2620899 pts · 3445 repos
Sample Matches
SevFileLineSnippet
MEDIUMinstall.sh176# ---------------------------------------------------------------------------
MEDIUMinstall.sh178# ---------------------------------------------------------------------------
MEDIUMinstall.sh184# ---------------------------------------------------------------------------
MEDIUMinstall.sh186# ---------------------------------------------------------------------------
MEDIUMinstall.sh233# ---------------------------------------------------------------------------
MEDIUMinstall.sh235# ---------------------------------------------------------------------------
Cross-File Repetition 1598080 pts · 1546 repos
Sample Matches
SevFileLineSnippet
HIGHy-calculator/6633c06601c081735063b528.md0projectile details: speed: {self.speed} m/s height: {self.height} m angle: {self.angle}° displacemen
HIGHy-calculator/66475bab40e5125c84b03337.md0projectile details: speed: {self.speed} m/s height: {self.height} m angle: {self.angle}° displacemen
HIGHy-calculator/66475f7b91d7c6681987739d.md0projectile details: speed: {self.speed} m/s height: {self.height} m angle: {self.angle}° displacemen
HIGHy-calculator/6633bfcef57e1d70cc3142c6.md0projectile details: speed: {self.speed} m/s height: {self.height} m angle: {self.angle}° displacemen
HIGHy-calculator/66475d40dd42fb614f14fd03.md0projectile details: speed: {self.speed} m/s height: {self.height} m angle: {self.angle}° displacemen
HIGHy-calculator/6633bdc3ca38c068c3735984.md0projectile details: speed: {self.speed} m/s height: {self.height} m angle: {self.angle}° displacemen
Unused Imports 834712 pts · 2974 repos
Sample Matches
SevFileLineSnippet
LOWrust/scripts/run_mock_parity_diff.py2
LOWtests/test_porting_workspace.py1
LOWtests/test_roadmap_helpers.py1
LOWtests/test_roadmap_helpers.py3
LOWtests/test_roadmap_helpers.py4
LOWtests/test_security_scope.py1
Empty Error Handlers 648795 pts · 2482 repos
Sample Matches
SevFileLineSnippet
HIGHtests/test_security_scope.py92except Exception:
HIGHscripts/rtl_ltr_linter.py439except Exception:
HIGHscripts/rtl_ltr_linter.py595except Exception:
HIGHyt_dlp/cookies.py1051except UnicodeDecodeError:
HIGHyt_dlp/plugins.py74except FileNotFoundError:
HIGHyt_dlp/jsinterp.py573except JS_Continue:
Cross-Language Confusion 472505 pts · 1802 repos
Sample Matches
SevFileLineSnippet
HIGHsite/fetch_pypi_downloads_via_clickpy.py60 Each file entry is {"package": str | null, "reason": str | null} plus an
HIGHwebsite/tests/test_preview_verdicts.py41 snapshots.push(snapshot());
HIGHgithub/workflows/dependencies/updater.py244 Git.push(branch)
HIGHyt_dlp/extractor/bloomberg.py53 r'BPlayer\(null,\s*({[^;]+})\);', webpage, 'id'), name)
HIGHyt_dlp/extractor/iqiyi.py274 var k_uid = Array.apply(null, Array(32)).map(function() {return Math.floor(Math.random()
HIGHyt_dlp/extractor/iqiyi.py326 enc_params.push(encodeURIComponent(prop) + '=' + encodeURIComponent(query[prop])
Excessive Try-Catch Wrapping 467798 pts · 3036 repos
Sample Matches
SevFileLineSnippet
LOWtests/test_security_scope.py92 except Exception:
LOWtests/_bash.py15 except Exception:
LOWscripts/generate_cc2_board.py102 except Exception:
MEDIUMwebsite/fetch_pypi_downloads_via_pepy.py42 print("Error: PEPY_TECH_API_KEY not set (environment or repo-root .env).", file=sys.stderr)
MEDIUMwebsite/fetch_github_stars.py106 print("Error: GITHUB_TOKEN environment variable is required.", file=sys.stderr)
MEDIUMwebsite/fetch_github_stars.py158 print("Error: Invalid GITHUB_TOKEN.", file=sys.stderr)
Deep Nesting 323534 pts · 3168 repos
Sample Matches
SevFileLineSnippet
LOWtests/_bash.py19
LOWithub/scripts/check_release_readiness.py93
LOWithub/scripts/check_release_readiness.py133
LOWwebsite/build.py639
LOWwebsite/build.py703
LOWwebsite/build.py760
Self-Referential Comments 320344 pts · 3024 repos
Sample Matches
SevFileLineSnippet
MEDIUMtools/scripts/move-bf.sh3# Define the source file
MEDIUMtools/scripts/move-bf.sh6# Define the destination directory
MEDIUMplugins/gitfast/git-completion.bash70# The following functions are meant to modify COMPREPLY, which should not be
MEDIUMplugins/gitfast/git-completion.bash331# This function is equivalent to
MEDIUMplugins/gitfast/git-completion.bash3426# The following function is based on code from:
MEDIUMggestions/zsh-autosuggestions.plugin.zsh190 # Create the bound widget
Structural Annotation Overuse 307486 pts · 3191 repos
Sample Matches
SevFileLineSnippet
LOWskills/bootstrap-v6-install/SKILL.md21## Step 1: Choose an install path
LOWskills/bootstrap-v6-install/SKILL.md132## Step 5: Verify
LOWkills/bootstrap-v4-v6-migration/SKILL.md24## Step 1: Plan the two-stage migration
LOWkills/bootstrap-v4-v6-migration/SKILL.md33## Step 2: v4 to v5 — dependencies, build, and Sass
LOWkills/bootstrap-v4-v6-migration/SKILL.md65## Step 3: v4 to v5 — JavaScript
LOWkills/bootstrap-v4-v6-migration/SKILL.md116## Step 4: v4 to v5 — classes and attributes
Fake / Example Data 259837 pts · 4009 repos
Sample Matches
SevFileLineSnippet
LOWjs/tests/unit/collapse.spec.js51 ' <div class="collapse">Lorem ipsum</div>',
LOWjs/tests/unit/collapse.spec.js70 ' <div class="collapse">Lorem ipsum</div>',
LOWjs/tests/unit/collapse.spec.js118 ' <div id="collapse1" class="collapse show">Lorem ipsum 1</div>',
LOWjs/tests/unit/collapse.spec.js122 ' <div id="collapse2" class="collapse">Lorem ipsum 2</div>',
LOWjs/tests/visual/floating-label.html17 <label for="floatingInput1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibu
LOWjs/tests/visual/floating-label.html17 <label for="floatingInput1">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vestibu
Cross-Language Confusion (JS/TS) 232816 pts · 664 repos
Top Repos
RepoPts
facebook/hermes55251
meta/hermes55251
nodejs/node17399
v8/v816844
mongodb/mongo12259
Sample Matches
SevFileLineSnippet
HIGHipts/seed/seed-daily-coding-challenge.js57 text: 'is_balanced("racecar") should return True.',
HIGHplugins/browser-scripts/python-worker.ts171 print(formatted)
HIGHc/templates/Challenges/classic/xterm.tsx83 print(text);
HIGHckages/core/script/benchmark-location.ts65 print("first", [first])
HIGHckages/core/script/benchmark-location.ts66 print("cached", cached)
HIGHckages/core/script/benchmark-location.ts67 print("cold", cold)
Docstring Block Structure 200658 pts · 963 repos
Sample Matches
SevFileLineSnippet
HIGHsearches/interpolation_search.py7 Searches for an item in a sorted collection by interpolation search algorithm. Args:
HIGHsearches/interpolation_search.py79Pure implementation of interpolation search algorithm in Python by recursion Be careful collecti
HIGHuctures/binary_tree/floor_and_ceiling.py37 Find the floor and ceiling values for a given key in a Binary Search Tree (BST). Args:
HIGH_structures/linked_list/is_palindrome.py13 Check if a linked list is a palindrome. Args: head: The head of the linked list.
HIGH_structures/linked_list/is_palindrome.py69 Check if a linked list is a palindrome using a stack. Args: head (ListNode): The h
HIGH_structures/linked_list/is_palindrome.py125 Check if a linked list is a palindrome using a dictionary. Args: head (ListNode):
AI Slop Vocabulary 194937 pts · 3813 repos
Sample Matches
SevFileLineSnippet
MEDIUMjs/src/carousel.ts159 // True while a seamless loop transition is animating, so the
MEDIUMjs/src/carousel.ts225 // Ignore navigation while a seamless loop transition is animating
MEDIUMrates/runtime/src/permission_enforcer.rs242/// would be more robust. Tracked as follow-up.
MEDIUMaude/sessions/session-1775011562247.json1{"messages":[{"blocks":[{"text":"analyze this repo and make a plan for enhancing tui","type":"text"}
MEDIUMaude/sessions/session-1775011562247.json1{"messages":[{"blocks":[{"text":"analyze this repo and make a plan for enhancing tui","type":"text"}
MEDIUM-parser/parser/plugins/add-tests.test.js41 // TODO: make this a bit more robust and informative
Modern AI Meta-Vocabulary 141734 pts · 2339 repos
Sample Matches
SevFileLineSnippet
MEDIUMconcept.md96## 7. RAG-сервис: роль и эволюция
MEDIUMhow_to_run.md135# Опционально: RAG (`claw-rag-service`) — см. раздел про RAG ниже
MEDIUMhow_to_run.md247## Отдельно: `claw-rag-service` (RAG)
MEDIUMaude/sessions/session-1775011562247.json1{"messages":[{"blocks":[{"text":"analyze this repo and make a plan for enhancing tui","type":"text"}
MEDIUMdocs/rag-web-ui.md1# RAG и веб‑UI: архитектура и фазы
MEDIUMdocs/personal-assistant-roadmap.md33## 2) Memory: from “RAG for code” to “RAG for life”
Modern Structural Boilerplate 137425 pts · 1816 repos
Sample Matches
SevFileLineSnippet
LOWsrc/task.py5__all__ = ['PortingTask']
LOWsrc/__init__.py12__all__ = [
LOWsrc/QueryEngine.py19__all__ = ['QueryEnginePort', 'QueryEngineRuntime']
LOWsrc/assistant/__init__.py14__all__ = ["ARCHIVE_NAME", "MODULE_COUNT", "PORTING_NOTE", "SAMPLE_FILES"]
LOWsrc/vim/__init__.py14__all__ = ["ARCHIVE_NAME", "MODULE_COUNT", "PORTING_NOTE", "SAMPLE_FILES"]
LOWsrc/upstreamproxy/__init__.py14__all__ = ["ARCHIVE_NAME", "MODULE_COUNT", "PORTING_NOTE", "SAMPLE_FILES"]
Verbosity Indicators 128973 pts · 2781 repos
Sample Matches
SevFileLineSnippet
LOWinstall.sh185# Step 1: detect OS / arch / WSL
LOWinstall.sh234# Step 2: locate the Rust workspace
LOWinstall.sh256# Step 3: prerequisite checks
LOWinstall.sh305# Step 4: build the workspace
LOWinstall.sh334# Step 5: post-install verification
LOWinstall.sh361# Step 6: next steps
TODO Padding 122347 pts · 1177 repos
Sample Matches
SevFileLineSnippet
LOWyt_dlp/jsinterp.py119 # TODO: implement special cases
LOWyt_dlp/utils/_utils.py543 # TODO: Write tests
LOWyt_dlp/utils/jslib/devalue.py87 # TODO: implement zips `strict=True`
LOWyt_dlp/extractor/tubetugraz.py120 # TODO: Add test for these
LOWhub/workflows/runtime_build_and_test.yml385 # TODO: Update test config to support www build tests
LOWhub/workflows/runtime_build_and_test.yml395 # TODO: Update test config to support xplat build tests
Synthetic Comment Markers 102852 pts · 1600 repos
Sample Matches
SevFileLineSnippet
HIGHenges-python/69162d64f96574d9bb629efd.md12Given a string of one or more sentences, determine if it was likely generated by AI using the follow
HIGHs-javascript/69162d64f96574d9bb629efd.md12Given a string of one or more sentences, determine if it was likely generated by AI using the follow
HIGHREADME.md2337- [CQL](https://github.com/FrancoLiberali/cql) - Built on top of GORM, adds compile-time verified qu
HIGHplugins/gitfast/git-completion.bash1383# logic, as requested by the user.
HIGHd-functionality@WcjX6p-V-Rdd77EL8Ega9.md3A vector database is designed to store, manage, and retrieve high-dimensional vectors (embeddings) g
HIGHter/lib/src/services/keyboard_key.g.dart223 /// representing a new "do what I mean" key, then the auto-generated code
Redundant / Tautological Comments 91847 pts · 2953 repos
Sample Matches
SevFileLineSnippet
LOWoh-my-zsh.sh41# Check if in emulation mode, if so early return
LOWoh-my-zsh.sh53# Set ZSH_CUSTOM to the path where your custom config files
LOWoh-my-zsh.sh57# Set ZSH_CACHE_DIR to the path where cache files should be created
LOWtools/check_for_upgrade.sh256 # Check if there are updates available before proceeding
LOWtools/install.sh111 # Check if sudo is installed
LOWtools/install.sh450 # Check if we're running on Termux
Magic Placeholder Names 90631 pts · 906 repos
Sample Matches
SevFileLineSnippet
HIGHer_tools/lib/src/commands/build_ios.dart651 '2. Run "xcrun altool --upload-app --type ios -f $relativeOutputPath/*.ipa --apiKey your_api
HIGHer/tools/gen_web_locale_keymap/README.md11export GITHUB_TOKEN=<YOUR_TOKEN>
HIGHts/hooks/pre-bash-commit-quality.test.js464 for (const v of ['process.env.API_KEY', '${API_KEY}', '<YOUR_KEY>', 'REPLACE_ME', 'CHANGEME', 'YOU
HIGHdocs/ja-JP/skills/x-api/SKILL.md53export X_API_KEY="your-api-key"
HIGHkills/videodb/reference/api-reference.md11 api_key="your-api-key", # or set VIDEO_DB_API_KEY env var
HIGH/ja-JP/skills/flox-environments/SKILL.md318# 使用方法: API_KEY="<your-api-key>" flox activate
AI Structural Patterns 69328 pts · 1780 repos
Sample Matches
SevFileLineSnippet
LOWyt_dlp/networking/common.py223
LOWyt_dlp/extractor/common.py864
LOWyt_dlp/extractor/common.py924
LOWyt_dlp/extractor/common.py2021
LOWyt_dlp/extractor/common.py2170
LOWyt_dlp/extractor/common.py2217
Slop Phrases 43834 pts · 2431 repos
Sample Matches
SevFileLineSnippet
LOWtools/uninstall.sh41echo "Don't forget to restart your terminal!"
MEDIUMplugins/gitfast/git-completion.bash28# If you use complex aliases of form '!f() { ... }; f', you can use the null
MEDIUMplugins/gitfast/git-completion.bash35# like completion, you can use __git_complete:
LOWplugins/opentofu/opentofu.plugin.zsh18 # make sure to escape % signs in the workspace name to prevent command injection
LOWplugins/opentofu/opentofu.plugin.zsh26 # make sure to escape % signs in the version string to prevent command injection
MEDIUMexamples/image_list/pubspec.yaml33 # included with your application, so that you can use the icons in
Example Usage Blocks 16614 pts · 1743 repos
Sample Matches
SevFileLineSnippet
LOWinstall.sh8# Usage:
LOWplugins/debian/debian.plugin.zsh172# Usage:
LOWplugins/forklift/forklift.plugin.zsh7# Usage:
LOWplugins/pip/pip.plugin.zsh1# Usage:
LOWplugins/ubuntu/ubuntu.plugin.zsh83# Usage:
LOWlib/diagnostics.zsh9# Usage:
Dead Code 15862 pts · 528 repos
Sample Matches
SevFileLineSnippet
MEDIUMtest/test_subtitles.py337
MEDIUMtest/test_subtitles.py338
MEDIUMtest/test_subtitles.py339
MEDIUMtest/test_subtitles.py340
MEDIUMtest/test_subtitles.py341
MEDIUMts/unit_tests/runnables/test_runnable.py3840
AI Response Leakage 12542 pts · 631 repos
Sample Matches
SevFileLineSnippet
HIGHchive/Commits-Between-1.2.1-and-1.5.4.md544|Greg Spencer <gspencergoog@users.noreply.github.com>|Add SHA256 checksums to published metadata ([#
HIGHs/flutter/lib/src/scheduler/binding.dart673 // TODO(jacobr): I have added an extra line break in this case.
HIGHs/flutter/lib/src/material/scaffold.dart2033 /// [Scaffold]. In this solution, you would have an outer widget that creates
HIGHs/flutter/lib/src/widgets/framework.dart4941 // I have added a line of white space.
HIGHciphers/elgamal_key_generator.py11# I have written my code naively same as definition of primitive root
HIGHindings/src/server/ReactFizzConfigDOM.js7149// or prerendering. In this implementation we only actually emit headers once and
Overly Generic Function Names 6356 pts · 1109 repos
Sample Matches
SevFileLineSnippet
LOWsearches/hill_climbing.py35 >>> def test_function(x, y):
LOWgraphs/multi_heuristic_astar.py81def do_something(back_pointer, goal, start) -> None:
LOWests__/ReactFlightAsyncDebugInfo-test.js110 async function getData(text) {
LOWests__/ReactFlightAsyncDebugInfo-test.js471 async function getData(url) {
LOWests__/ReactFlightAsyncDebugInfo-test.js560 async function getData(text) {
LOWests__/ReactFlightAsyncDebugInfo-test.js1116 async function getData() {

🔎 Repository Explorer

Search, filter and sort all 7135 scanned repositories.

Repository ⇅ Legacy Signal ⇅ Signal Band ⇅ Hits ⇅ Language ⇅ Stars ⇅ Scanned ⇅ Details

Get Repository Badge

Find a scanned GitHub repository and copy a static badge for your README. The score is the adjusted legacy pattern signal, not a security certification. Badge bands use thresholds 25, 50 and 75, unlike the dashboard's legacy signal bands.

Open-Source Review Benchmarks

Explore observed signals, sample coverage and limitations. These comparisons do not certify security or code quality.

Supply-chain signals by language

Compare compatible heuristic indices and inspect language-specific repository reports.

Lowest pattern-signal repositories

A review shortlist based on the unadjusted legacy signal, not a ranking of enterprise readiness.

📖 Methodology

From pattern detection to engineering review

Teams need to know whether committed changes are understood, whether unfamiliar imports are verified, whether abstractions add avoidable maintenance surface, and whether reviewers can focus on meaningful changes. This v3 risk-platform view organizes existing pattern findings into those review questions. It does not infer authorship or claim that a flagged pattern caused a defect.

The four vectors are Cognitive Ownership Risk, Hallucinated Dependency & Supply Chain Risk, Agent Over-Engineering Ratio, and PR Review Velocity Impact. Each finding is a prompt for human review in its repository context.

The scanner combines line-level patterns, multi-line block checks, Python AST checks, cross-file repetition, and suppression rules. The legacy score is a severity-weighted pattern signal normalized per 1,000 scanned lines, then adjusted using repository last-push metadata. That repository-level time adjustment is only a coarse heuristic; it does not date or identify individual code changes.

Legacy pattern-score adjustments

These modifiers define the existing SynthScan signal score. They do not establish that a match is AI-authored or risky in a specific codebase.

Density Clustering Factor

Clusters increase the legacy pattern score; they are not definitive authorship evidence.

Topological ConditionAlgorithmic Effect
≥ 3 signatures within a 10-line execution windowConstituent matches multiplicatively boosted by ×1.5

Contextual Isolation Multiplier

The legacy score weights comments and executable code differently according to the configured context multipliers.

Lexical ContextMultiplierRationale
COMMENT×1.5Configured heuristic weight
CODE×1.0Configured baseline weight
STRING×0.5Configured lower weight

Architectural Diminishing Returns

Reduces the contribution of large per-file match counts to the legacy score.

Statistical ConditionAlgorithmic Effect
Excess signatures beyond the 20th per individual fileExcess matches mathematically discounted by ×0.5

Legacy Signal Formula & Time Factor

Each pattern match receives its configured severity weight and a context multiplier. The sum of the weighted findings forms the raw score, normalized by scanned lines to produce a comparative pattern-signal score:

legacy_signal = (raw_score / lines_scanned) × 1000

The adjusted score further cascades through a temporal discount factor based on the repository's most recent commit metadata. The adjustment uses the repository's last-push timestamp. It is a coarse repository-level heuristic, not evidence about when any finding was written; use raw and adjusted scores as signals, not AI-involvement probabilities.

Last PushDiscountRationale
Before Nov 20225%Configured legacy multiplier
Nov 2022 – Jun 202340%Configured legacy multiplier
Jun 2023 – Jan 202475%Configured legacy multiplier
Jan 2024 onward100%Configured legacy multiplier

Detection Layers

The scanner combines five detection and control layers. Findings remain heuristic indicators and may need repository-specific interpretation.

  1. Line-level pattern matching — Configurable text and regex patterns with severity and context weights.
  2. Multi-line block checks — Checks selected documentation and exception-handling structures.
  3. Python AST checks — Flags selected structural patterns, including dead code, unused imports, empty handlers, and deep nesting.
  4. Cross-file repetition — Finds repeated or similar docstrings in full scans; not included in diff mode when line provenance is unavailable.
  5. Suppressions — Inline ignore markers and `.synthscanignore` support.

Severity Classification Matrix

SeverityBase CoefficientUse
CRITICAL10Highest configured finding weight; verify evidence manually
HIGH5High configured finding weight; review in context
MEDIUM2Medium configured finding weight
LOW1Low configured finding weight

Severity coefficients contribute to the legacy pattern score. Severity describes the scanner's configured weight, not confidence that code is AI-generated or a measure of defect risk.

Legacy Signal Bands

Score IntervalSignal label
0 – 5Low pattern signal
5 – 15Moderate pattern signal
15 – 30Elevated pattern signal
30+High pattern signal

Risk Payload v1 · Scientific Method

This section specifies the operational definitions and deterministic scoring procedure used by Risk Payload v1. It is a deterministic measurement model for organizing human review, not a probability of AI authorship, security risk, or future maintenance cost.

Study unit and provenance

Unit of analysis: one repository scan. Current coverage is 7135 payload-bearing repositories out of 7135 successful scans.

Engine version(s): 2.0.0
Scoring version(s): heuristic-density-v1
Payload schema: 1.0.0

Each finding records category, severity, relative file path, line, stable identifier, and mapped vector IDs. The ID is the first 16 hexadecimal characters of SHA-256 over file, line, category, and pattern text. Unknown categories remain findings, increase unmapped_category_count, and are not silently assigned to the first three vectors.

Finding points before vector scoring

Base severity weights are LOW = 1, MEDIUM = 2, HIGH = 5, CRITICAL = 10. Line-pattern matches are multiplied by context: COMMENT = 1.5, CODE = 1.0, STRING = 0.5. Block/AST findings use their configured scores.

Line-pattern clustering multiplies matches by 1.5 when at least three fall within ten lines of an anchor. If a file has more than 20 accumulated line/block/AST matches, matches after the top 20 by score are multiplied by 0.5. Cross-file repetition findings are added after this per-file modifier.

The inline ignore marker suppresses line-pattern matches; .synthscanignore excludes files from scanning. In diff mode, findings are limited to added-line locations; cross-file repetition is omitted because its source line cannot be attributed reliably.

Operational definitions and category mapping

VectorMapped detector categoriesInterpretation / review action
Cognitive Ownership RiskSlop Phrases; AI Slop Vocabulary; Synthetic Comment Markers; Self-Referential Comments; Redundant / Tautological Comments; Verbosity Indicators; Example Usage Blocks; Overly Generic Function Names; Docstring Block Structure; Over-Commented Block; Hyper-Verbose Identifiers; AI Response Leakage; Modern AI Meta-Vocabulary; TODO Padding; Structural Annotation Overuse; AI Structural Patterns; Deep Nesting.Proxy prompt: can a maintainer explain intent, assumptions, and trade-offs? The scanner does not measure understanding or calculate a complexity-to-documentation ratio.
Hallucinated Dependency & Supply Chain RiskFake / Example Data; Cross-Language Confusion; Hallucination Indicators; Unused Imports; Magic Placeholder Names; Cross-Language Confusion (JS/TS).Verify imports against source manifests and package registries. SynthScan does not resolve registries or prove a dependency is missing.
Agent Over-Engineering RatioExcessive Try-Catch Wrapping; Empty Error Handlers; Decorative Section Separators; Hyper-Verbose Identifiers; Modern Structural Boilerplate; AI Structural Patterns; Cross-File Repetition; Dead Code.Inspect defensive wrappers, repeated structures, and dead code for necessity. Despite the vector name, this is a normalized index, not a percentage of code; a match may be intentional.
PR Review Velocity ImpactAll findings contribute to the review-time estimate; every finding is attached to this vector, including unmapped categories.Minutes are assigned per finding severity to estimate the review effort represented by the findings.

The mapping is a taxonomy decision, not a causal claim. Findings can be assigned to multiple vectors. The review-velocity vector includes every finding, including categories not mapped to the other vectors.

Vector scoring equations

For repository r, let N be scanned lines (added lines in diff mode), and let Pv be the sum of finding points mapped to vector v. For cognitive ownership, supply-chain, and over-engineering:

D_v = 1000 × max(0, P_v) / max(1, N)
S_v = round(100 × (1 − exp(−D_v / 20)), 2)

The saturating exponential maps non-negative point density to 0–100; parameter 20 is a fixed design constant, not a fitted coefficient.

Overall repository index: round((S_ownership + S_supply + S_overengineering + S_review) / 4, 2).

Review-effort proxy and bands

Estimated minutes sum a fixed cost per finding: LOW = 0.5, MEDIUM = 1.5, HIGH = 3, CRITICAL = 5. Unknown severity defaults to 0.5 minutes.

T_review = Σ minutes(severity_i)
S_review = score(2 × T_review, N)

The same density transform is used by score(points, N) above with points = 2 × T_review. Bands: LOW < 25; MEDIUM 25–<50; HIGH 50–<75; CRITICAL ≥75.

Dashboard aggregation

For each vector, the dashboard reports the unweighted arithmetic mean of repository-level vector scores for repositories that include that vector, plus the number of repositories and findings contributing. Means are not LOC-weighted and should be compared only across compatible scoring versions.

mean_v = round(Σ_r S_(r,v) / n_v, 2)
      coverage = 100 × repos_with_payload / successful_scans
VectorMean indexReposFindings
Agent Over-Engineering Ratio12.5471357296493
Cognitive Ownership Risk13.93713512348402
Hallucinated Dependency & Supply Chain Risk4.7371351826113
PR Review Velocity Impact22.27713516045780

Legacy score is separate

The legacy score remains raw_score / scanned_lines × 1000 (zero when no lines are scanned). The monitor computes adjusted_legacy = legacy_signal × temporal_factor; factors are 0.05 before Nov 2022, 0.40 before Jun 2023, 0.75 before Jan 2024, otherwise 1.00.

This temporal factor is applied to the legacy adjusted score only; it does not alter Risk Payload v1 vector scores. It is based on repository metadata, not the date of each finding.

Proxy-cohort evaluation

Evaluation used 25 historical-repository proxies selected by repo_pushed_at < 2023-01-01T00:00:00Z and 11 explicitly selected agent-project proxies; historical scan failures: 0. These are project-type and age proxies, not ground-truth labels for code authorship.

Scoring parameters were fixed before this comparison: density scale = 1000 LOC; exponential saturation constant = 20; severity weights = 1 / 2 / 5 / 10 (LOW through CRITICAL); review-time weights = 0.5 / 1.5 / 3 / 5 minutes. Production score transforms, coefficients, and bands were not changed.

VectorProxy AUCBootstrap 95% intervalLOOCV balanced accuracyExploratory threshold
Cognitive Ownership Risk0.8200.633-0.9600.6939.26
Hallucinated Dependency & Supply Chain Risk0.7260.545-0.8870.6072.12
Agent Over-Engineering Ratio0.8730.720-0.9850.8243.97
PR Review Velocity Impact0.7870.600-0.9450.74411.25

AUC, bootstrap intervals, leave-one-out accuracy, and thresholds describe only this selected proxy cohort. Thresholds are exploratory and are not deployment defaults; this is not a calibrated probability model.

Reproduce a result with the same engine version, pattern catalogue, scan mode, ignored paths, payload schema, and heuristic-density-v1 scoring version.