AI Slop Code Risk Monitor

86Box/86Box

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

Emulator of x86-based machines.

1.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for 86Box/86Box, a C project with 4,966 GitHub stars. SynthScan examined 1,302,593 lines of code across 2000 source files, recording 2508 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.9 (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.

1.9
Adjusted Signal
1.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
5.0K
Stars
C
Language
1.3M
Lines of Code
2.0K
Files
2.5K
Pattern Hits
2026-10-31
Scan Date
0.00
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 9.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

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

Agent Over-Engineering Ratio 0.1/100 · LOW

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

PR Review Velocity Impact 9.5/100 · LOW

Which changes need focused human review? 2508 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 0MEDIUM 47LOW 2461

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 2508 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 Block2416 hits · 2264 pts
SeverityFileLineSnippetContext
LOWCMakeLists.txt1#COMMENT
LOWbumpversion.sh1#!/bin/shCOMMENT
LOW.ci/build.sh1#!/bin/shCOMMENT
LOW.ci/build.sh21#COMMENT
LOW.ci/build.sh41# configured as NOPASSWD in /etc/sudoers if you're doing unattended buildsCOMMENT
LOW.ci/AppImageBuilder.yml1#COMMENT
LOWtests/video/wd90c31_test.cpp1#include <array>COMMENT
LOWtests/video/rage128/shard.sh1#!/usr/bin/env bashCOMMENT
LOWtests/video/rage128/CMakeLists.txt1# The ATI Rage 128 tests compile the device sources themselves, with hostCOMMENT
LOWtests/video/rage128/CMakeLists.txt181# The timeout is sized for the first run on a host whose Vulkan driverCOMMENT
LOWtests/video/rage128/jit-harness/shard.sh1#!/usr/bin/env bashCOMMENT
LOWtests/video/rage128/jit-harness/build.sh1#!/usr/bin/env bashCOMMENT
LOWtests/video/rage128/jit-harness/jit_host_test.c41#include <stdio.h>COMMENT
LOWtests/video/rage128/replay-harness/replay.c41 * The queue's entry count and the heap bytes its payloads holdCOMMENT
LOWtests/video/rage128/replay-harness/build.sh1#!/usr/bin/env bashCOMMENT
LOW…ts/video/rage128/replay-harness/synth/sample_agptex.py1#!/usr/bin/env python3COMMENT
LOWtests/video/rage128/replay-harness/synth/gen_agptex.py1#!/usr/bin/env python3COMMENT
LOWtests/video/rage128/replay-harness/synth/selftest.py1#!/usr/bin/env python3COMMENT
LOWtests/video/rage128/replay-harness/synth/gen_ckfn.py1#!/usr/bin/env python3COMMENT
LOWtests/video/rage128/replay-harness/synth/sample_ckfn.py1#!/usr/bin/env python3COMMENT
LOWtests/video/rage128/gpu/build.sh1#!/usr/bin/env bashCOMMENT
LOWtests/video/rage128/gpu/gputri.c61#include <limits.h>COMMENT
LOWtests/video/rage128/gpu/gputri.c141 tested, which is not a failure. CTest reports it as a skip. */COMMENT
LOWtests/video/rage128/reg-harness/shard.sh1#!/usr/bin/env bashCOMMENT
LOWtests/video/rage128/reg-harness/host_stubs.c21 * - Bus-master reads and writes resolve against a declared fakeCOMMENT
LOWtests/video/rage128/reg-harness/host_stubs.c41#define HAVE_STDARG_HCOMMENT
LOWtests/video/rage128/reg-harness/gpu_probe.c21 * Authors: skiretic.COMMENT
LOWtests/video/rage128/reg-harness/build.sh1#!/usr/bin/env bashCOMMENT
LOWtests/video/rage128/reg-harness/build.sh21# services the device calls (mem/io/pci/timer/rom/video plumbing). RealCOMMENT
LOWtests/video/rage128/reg-harness/include/86box/version.h21 */COMMENT
LOWtests/cdrom/cdrom_sony_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/cdrom/cdrom_mitsumi_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/cdrom/cdrom_mcn_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/cdrom/cdrom_mke_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/cpu/x87_fistp_test.cpp1// SPDX-License-Identifier: GPL-2.0-or-laterCOMMENT
LOWtests/cpu/x87_fistp_test.cpp21static bool memory_fault;COMMENT
LOWtests/cpu/cpu_cache_test.cpp1// SPDX-License-Identifier: GPL-2.0-or-laterCOMMENT
LOWtests/cpu/codegen_shift_cl_test.cpp1// SPDX-License-Identifier: GPL-2.0-or-laterCOMMENT
LOWtests/scsi/aic6360_test.cpp1/* Register-level tests using the same I/O handlers registered by the adapters. */COMMENT
LOWtests/utils/ini_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/machine/pcjx_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/disk/hdd_image_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/device/cartridge_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/device/mouse_microtouch_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/floppy/fdc_read_id_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/floppy/img_track_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/floppy/pcjx_floppy_test.cpp1#include <gtest/gtest.h>COMMENT
LOWtests/floppy/pcjx_floppy_test.cpp21#define timer_add pcjx_floppy_timer_addCOMMENT
LOWtests/floppy/pcjx_floppy_test.cpp41#define fdd_tape_step pcjx_floppy_fdd_tape_stepCOMMENT
LOWscripts/regen-r128-gpu-spv.sh1#!/bin/shCOMMENT
LOWscripts/regen-r128-gpu-spv.sh101# (verified in the spike and by the gputri fuzz gate).COMMENT
LOW.github/workflows/pr_builds.yml1name: Pull request buildsCOMMENT
LOWsrc/ioapic.c21#define HAVE_STDARG_HCOMMENT
LOWsrc/ioapic.c101 uint8_t ioapic_mmio_read_log_count[0x40];COMMENT
LOWsrc/pic.c21#include <stdio.h>COMMENT
LOWsrc/mca.c1/*COMMENT
LOWsrc/port_6x.c21#include <86box/86box.h>COMMENT
LOWsrc/CMakeLists.txt1#COMMENT
LOWsrc/usb.c41#include <stdlib.h>COMMENT
LOWsrc/usb.c61#define UHCI_USBSTS 0x02COMMENT
2356 more matches not shown…
AI Slop Vocabulary22 hits · 84 pts
SeverityFileLineSnippetContext
MEDIUM⚡tests/video/rage128/shard.sh10# ATI Rage 128 Pro -- runs one test harness as parallel childCOMMENT
MEDIUM⚡tests/video/rage128/shard.sh11# processes and sums their results. The shard.sh in reg-harnessCOMMENT
MEDIUM⚡tests/video/rage128/shard.sh12# and in jit-harness call it with the mode (reg or jit), theCOMMENT
MEDIUM⚡tests/video/rage128/shard.sh13# harness directory, the process count and the harness's ownCOMMENT
MEDIUMtests/video/rage128/jit-harness/shard.sh10# ATI Rage 128 Pro -- runs the span JIT host harness's fuzz gateCOMMENT
MEDIUM⚡tests/video/rage128/jit-harness/build.sh11# harness.COMMENT
MEDIUM⚡tests/video/rage128/jit-harness/build.sh18# Build the Rage 128 ARM64 and x86-64 span-JIT host harness against theCOMMENT
MEDIUM⚡tests/video/rage128/replay-harness/build.sh11# harness.COMMENT
MEDIUM⚡tests/video/rage128/replay-harness/build.sh18# Build the Rage 128 offline capture replay harness.COMMENT
MEDIUM⚡tests/video/rage128/replay-harness/build.sh21# and include/ with ../reg-harness, so both use the same host services.COMMENT
MEDIUM⚡tests/video/rage128/replay-harness/build.sh26# -O2 rather than the register harness's -O1: a replay processes tens ofCOMMENT
MEDIUM…ts/video/rage128/replay-harness/synth/sample_agptex.py10# ATI Rage 128 Pro -- checks the pixels the replay harness drewCOMMENT
MEDIUMtests/video/rage128/replay-harness/synth/selftest.py10# ATI Rage 128 Pro -- self-test of the capture replay harness onCOMMENT
MEDIUMtests/video/rage128/replay-harness/synth/sample_ckfn.py11# harness drew from the gen_ckfn.py capture.COMMENT
MEDIUMtests/video/rage128/reg-harness/shard.sh10# ATI Rage 128 Pro -- runs the register harness's vector groupsCOMMENT
MEDIUM⚡tests/video/rage128/reg-harness/build.sh10# ATI Rage 128 Pro -- build script for the register harness.COMMENT
MEDIUM⚡tests/video/rage128/reg-harness/build.sh17# Build the Rage 128 host-side register harness.COMMENT
MEDIUMtests/video/rage128/reg-harness/build.sh28# so the harness exercises the configuration users actually run (backendCOMMENT
MEDIUMtests/video/rage128/reg-harness/include/86box/version.h25#define EMU_VERSION "harness"COMMENT
MEDIUMtests/video/rage128/reg-harness/include/86box/version.h26#define EMU_VERSION_FULL "harness"COMMENT
MEDIUMsrc/osd/imgui/imgui.cpp6713 // FIXME: Essentially we want to restrict manual resizing to WindowMinSize+Decoration, and allow api resizing to be COMMENT
MEDIUMsrc/osd/imgui/imgui.cpp9085// FIXME-NEWATLAS-V2: perhaps we can now leverage ImFontAtlasUpdateDrawListsTextures() ?COMMENT
Self-Referential Comments18 hits · 59 pts
SeverityFileLineSnippetContext
MEDIUMbumpversion.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUM.ci/build.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUM.ci/build.sh1242# This file is automatically generated by .ci/build.sh and will beCOMMENT
MEDIUM.ci/AppImageBuilder.yml7# This file is part of the 86Box distribution.COMMENT
MEDIUM⚡tests/video/rage128/shard.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUMtests/video/rage128/jit-harness/shard.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUM⚡tests/video/rage128/jit-harness/build.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUM⚡tests/video/rage128/replay-harness/build.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUM…ts/video/rage128/replay-harness/synth/sample_agptex.py8# This file is part of the 86Box distribution.COMMENT
MEDIUMtests/video/rage128/replay-harness/synth/gen_agptex.py8# This file is part of the 86Box distribution.COMMENT
MEDIUMtests/video/rage128/replay-harness/synth/selftest.py8# This file is part of the 86Box distribution.COMMENT
MEDIUMtests/video/rage128/replay-harness/synth/gen_ckfn.py8# This file is part of the 86Box distribution.COMMENT
MEDIUMtests/video/rage128/replay-harness/synth/sample_ckfn.py8# This file is part of the 86Box distribution.COMMENT
MEDIUMtests/video/rage128/gpu/build.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUMtests/video/rage128/reg-harness/shard.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUM⚡tests/video/rage128/reg-harness/build.sh8# This file is part of the 86Box distribution.COMMENT
MEDIUMsrc/qt/vk_mem_alloc.h1726-# Create an instance of the #VmaVulkanFunctions structure.CODE
MEDIUMsrc/device/vfio-setup.sh8# This file is part of the 86Box distribution.COMMENT
Decorative Section Separators6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMsrc/cdrom/libchdr/CMakeLists.txt38#--------------------------------------------------COMMENT
MEDIUMsrc/cdrom/libchdr/CMakeLists.txt40#--------------------------------------------------COMMENT
MEDIUMsrc/cdrom/libchdr/CMakeLists.txt72#--------------------------------------------------COMMENT
MEDIUMsrc/cdrom/libchdr/CMakeLists.txt74#--------------------------------------------------COMMENT
MEDIUMsrc/cdrom/libchdr/CMakeLists.txt94#--------------------------------------------------COMMENT
MEDIUMsrc/cdrom/libchdr/CMakeLists.txt96#--------------------------------------------------COMMENT
Slop Phrases10 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMsrc/osd/imgui/imgui_widgets.cpp7349// Tip: pass a non-visible label (e.g. "##hello") then you can use the space to draw other text or image.COMMENT
LOWsrc/osd/imgui/imgui.cpp1020 - 2017/08/25 (1.52) - io.MousePos needs to be set to ImVec2(-FLT_MAX,-FLT_MAX) when mouse is unavailable/missing. PreviCODE
LOWsrc/qt/vk_mem_alloc.h17677// At the end, don't forget to:COMMENT
LOWsrc/qt/vk_mem_alloc.h19130// At the end, don't forget to destroy it!COMMENT
LOWsrc/qt/vk_mem_alloc.h19173// At the end, don't forget to destroy it!COMMENT
LOWsrc/qt/vk_mem_alloc.h693 To prepare for this possibility, don't forget to add appropriate flags likeCODE
LOWsrc/qt/vk_mem_alloc.h2906don't forget to free them.CODE
LOWsrc/qt/vk_mem_alloc.h2953don't forget to free it as well.CODE
LOWsrc/qt/vk_mem_alloc.h17714Don't forget to destroy your buffer and allocation objects when no longer needed:CODE
LOWsrc/qt/vk_mem_alloc.h18876If you allocated a new object to be used as the custom pointer, don't forget to delete that object before freeing the alCODE
Fake / Example Data10 hits · 12 pts
SeverityFileLineSnippetContext
LOW⚡src/osd/imgui/imgui_demo.cpp7648 ImGui::TextWrapped("Lorem ipsum dolor sit amet");CODE
LOW⚡src/osd/imgui/imgui_demo.cpp7648 ImGui::TextWrapped("Lorem ipsum dolor sit amet");CODE
LOW⚡src/osd/imgui/imgui_demo.cpp7650 ImGui::Text("Lorem ipsum dolor sit amet");CODE
LOW⚡src/osd/imgui/imgui_demo.cpp7650 ImGui::Text("Lorem ipsum dolor sit amet");CODE
LOWsrc/osd/imgui/imgui_demo.cpp9548 ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor iCODE
LOWsrc/osd/imgui/imgui_demo.cpp9548 ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor iCODE
LOWsrc/osd/imgui/imgui_demo.cpp10509 ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt utCODE
LOWsrc/osd/imgui/imgui_demo.cpp10509 ImGui::TextWrapped("Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt utCODE
LOWsrc/crcspeed/crc64speed.c252 char li[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed "CODE
LOWsrc/crcspeed/crc64speed.c252 char li[] = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed "CODE
Verbosity Indicators6 hits · 9 pts
SeverityFileLineSnippetContext
LOWsrc/cdrom/cdrom_image.c2044 // Step 1: Insert all CloneCD tracks.COMMENT
LOWsrc/cdrom/cdrom_image.c2099 // Step 2: Calculate track lengths.COMMENT
LOWsrc/cdrom/cdrom_image.c2119 // Step 3: Generate pregap indices.COMMENT
LOWsrc/cdrom/libchdr/include/dr_libs/dr_flac.h5954 /* We found a FLAC frame. We need to check if it contains the sample we're looking for. */COMMENT
LOWsrc/osd/imgui/imgui.cpp3395 // Step 0: Let you process the first element (regardless of it being visible or not, so we can measure the element hCOMMENT
LOWsrc/osd/imgui/imgui.cpp3412 // Step 1: Let the clipper infer height from first rangeCOMMENT
Redundant / Tautological Comments5 hits · 8 pts
SeverityFileLineSnippetContext
LOW.ci/build.sh297# Check if mandatory arguments were specified.COMMENT
LOW.ci/build.sh330 # Check if the archival succeeded.COMMENT
LOW.ci/build.sh589 # Check if the archival succeeded.COMMENT
LOW.ci/build.sh1198# Check if the executable strip/move succeeded.COMMENT
LOW.ci/build.sh1296# Check if the archival succeeded.COMMENT
Structural Annotation Overuse5 hits · 8 pts
SeverityFileLineSnippetContext
LOWsrc/cdrom/cdrom_image.c2044 // Step 1: Insert all CloneCD tracks.COMMENT
LOWsrc/cdrom/cdrom_image.c2099 // Step 2: Calculate track lengths.COMMENT
LOWsrc/cdrom/cdrom_image.c2119 // Step 3: Generate pregap indices.COMMENT
LOWsrc/osd/imgui/imgui.cpp3395 // Step 0: Let you process the first element (regardless of it being visible or not, so we can measure the element hCOMMENT
LOWsrc/osd/imgui/imgui.cpp3412 // Step 1: Let the clipper infer height from first rangeCOMMENT
Deep Nesting6 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/video/wd90c31_bios_smoke.py11CODE
LOWtests/video/rage128/replay-harness/synth/selftest.py99CODE
LOWtests/cdrom/teac_cda_smoke.py34CODE
LOWtests/cdrom/sony_slcd_smoke.py106CODE
LOWtests/cdrom/sony_audio_smoke.py157CODE
LOWscripts/nocon-min.py74CODE
Hyper-Verbose Identifiers4 hits · 4 pts
SeverityFileLineSnippetContext
LOWsrc/qt/vk_mem_alloc.h1581To be used with function vmaBeginDefragmentationPass().CODE
LOWsrc/qt/vk_mem_alloc.h17629 - Use function vmaImportVulkanFunctionsFromVolk() to fill in the structure #VmaVulkanFunctions.CODE
LOWsrc/qt/vk_mem_alloc.h17950The easiest way to copy data from a host pointer to an allocation is to use convenience function vmaCopyMemoryToAllocatiCODE
LOWsrc/qt/vk_mem_alloc.h17979Copy in the other direction - from an allocation to a host pointer can be performed the same way using function vmaCopyACODE