AI Slop Code RIsk Monitor

wled/WLED

Control WS2812B and many more types of digital RGB LEDs with an ESP32 over WiFi!

4.7 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for wled/WLED, a C++ project with 18,785 GitHub stars. SynthScan examined 119,841 lines of code across 447 source files, recording 412 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 4.7 (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.

4.7
Adjusted Signal
4.7
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
18.8K
Stars
C++
Language
119.8K
Lines of Code
447
Files
412
Pattern Hits
2026-10-12
Scan Date
0.01
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 16.1/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 5.8/100 · LOW

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

PR Review Velocity Impact 20.2/100 · LOW

Which changes need focused human review? 412 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 6MEDIUM 50LOW 356

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 412 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 Block341 hits · 330 pts
SeverityFileLineSnippetContext
LOWrequirements.txt1#COMMENT
LOWrequirements.txt21colorama==0.4.6COMMENT
LOWplatformio.ini61COMMENT
LOWplatformio_override.sample.ini521# ------------------------------------------------------------------------------COMMENT
LOW.coderabbit.yaml1# yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.jsonCOMMENT
LOWwled00/fcn_declare.h1#pragma onceCOMMENT
LOWwled00/fcn_declare.h521 inline void d_free(void *ptr) { heap_caps_free(ptr); }COMMENT
LOWwled00/fcn_declare.h541#elseCOMMENT
LOWwled00/network.cpp381 return status; // scan is still running or there was an errorCOMMENT
LOWwled00/network.cpp401 #define ARDUINO_EVENT_WIFI_STA_DISCONNECTED SYSTEM_EVENT_STA_DISCONNECTEDCOMMENT
LOWwled00/FX_fcn.cpp501}COMMENT
LOWwled00/NodeStruct.h1#ifndef WLED_NODESTRUCT_HCOMMENT
LOWwled00/NodeStruct.h21//#define NODE_TYPE_ID_ESP32S2 34COMMENT
LOWwled00/wled_boards.h21 WLED_HAVE_I2S1_LEDS (for bus_wrapper.h)COMMENT
LOWwled00/wled_boards.h41COMMENT
LOWwled00/wled_boards.h61 #define WLED_HAVE_FAST_int_DIVIDE 1 // integer division is fast (no need to use bitshifts with rounding instead of intCOMMENT
LOWwled00/wled_boards.h81 #define WLED_HAS_PARALLEL_I2S 1 // esp32-S2 supports I2S parallel leds driver (NeoPixelBus)COMMENT
LOWwled00/wled_boards.h101 #define WLED_HAVE_RTC_MEMORY_HEAP 1 // has byte-accessible fast RTC memory that can be used as heapCOMMENT
LOWwled00/wled_boards.h121 // has no FPUCOMMENT
LOWwled00/wled_boards.h141COMMENT
LOWwled00/util.cpp1#include "wled.h"COMMENT
LOWwled00/util.cpp21 #endifCOMMENT
LOWwled00/util.cpp281 // Use a recursive mutex type in case our task is the one holding the JSON buffer.COMMENT
LOWwled00/util.cpp781 }COMMENT
LOWwled00/util.cpp1341#endifCOMMENT
LOWwled00/bus_manager.h1#pragma onceCOMMENT
LOWwled00/bus_manager.h21#include "asyncDNS.h"COMMENT
LOWwled00/bus_manager.h41 #define DEBUGOUT SerialCOMMENT
LOWwled00/cfg.cpp1#include "wled.h"COMMENT
LOWwled00/wled_metadata.cpp1#include "ota_update.h"COMMENT
LOWwled00/pin_manager.h1#ifndef WLED_PIN_MANAGER_HCOMMENT
LOWwled00/FX.h21#include "colors.h"COMMENT
LOWwled00/FX.h41#define DEFAULT_BRIGHTNESS (uint8_t)127COMMENT
LOWwled00/FX.h61#define WLED_FPS 42COMMENT
LOWwled00/FX.h81#endifCOMMENT
LOWwled00/FX.h101/* How much data bytes each segment should max allocate to leave enough space for other segments,COMMENT
LOWwled00/FX.h121#define WHITE (uint32_t)0xFFFFFFCOMMENT
LOWwled00/FX.h141#define REVERSE_Y_2D (uint16_t)0x0040COMMENT
LOWwled00/FX.h161#define FX_MODE_FADE 12COMMENT
LOWwled00/FX.h181#define FX_MODE_CHASE_FLASH_RANDOM 32COMMENT
LOWwled00/FX.h201#define FX_MODE_RUNNING_DUAL 52 // candidate for removal (use Running)COMMENT
LOWwled00/FX.h221#define FX_MODE_NOISE16_3 72COMMENT
LOWwled00/FX.h241#define FX_MODE_BOUNCINGBALLS 91COMMENT
LOWwled00/FX.h261#define FX_MODE_CHUNCHUN 111COMMENT
LOWwled00/FX.h281// WLED-SR effects (SR compatible IDs !!!)COMMENT
LOWwled00/FX.h301#define FX_MODE_PERLINMOVE 147COMMENT
LOWwled00/FX.h321#define FX_MODE_2DWAVERLY 165COMMENT
LOWwled00/FX.h341#define FX_MODE_ROCKTAVES 185COMMENT
LOWwled00/FX.h361#define FX_MODE_PSDANCINGSHADOWS 204COMMENT
LOWwled00/FX.h381COMMENT
LOWwled00/FX.h401#define TRANSITION_PUSH_UP 0x12 // 2D (& 0b00010000)COMMENT
LOWwled00/improv.cpp1#include "wled.h"COMMENT
LOWwled00/ir.cpp21static uint16_t irTimesRepeated = 0;COMMENT
LOWwled00/bus_wrapper.h1#pragma onceCOMMENT
LOWwled00/bus_wrapper.h21#define P_32_VS_CLK 18COMMENT
LOWwled00/bus_wrapper.h41#define I_8266_U0_TM1_4 13COMMENT
LOWwled00/bus_wrapper.h61#define I_8266_U0_FW6_5 29COMMENT
LOWwled00/bus_wrapper.h81#define I_8266_U0_SM16825_5 45COMMENT
LOWwled00/bus_wrapper.h101#define I_32_I2_TM2_3 18COMMENT
LOWwled00/bus_wrapper.h121#define I_32_RN_SM16825_5 45COMMENT
281 more matches not shown…
Decorative Section Separators35 hits · 128 pts
SeverityFileLineSnippetContext
MEDIUMplatformio.ini5# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini10# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio.ini52# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio.ini56# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio.ini62# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini83# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio.ini125# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio.ini127# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio.ini135# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio.ini141# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini157# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini163# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini506# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini508# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini632# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini634# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini1080# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio.ini1082# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio_override.sample.ini2# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio_override.sample.ini4# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio_override.sample.ini10#----------COMMENT
MEDIUM⚡platformio_override.sample.ini12#----------COMMENT
MEDIUMplatformio_override.sample.ini203# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio_override.sample.ini207# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio_override.sample.ini221# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio_override.sample.ini223# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio_override.sample.ini498# ------------------------------------------------------------------------------COMMENT
MEDIUMplatformio_override.sample.ini501# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio_override.sample.ini521# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio_override.sample.ini524# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio_override.sample.ini527# ------------------------------------------------------------------------------COMMENT
MEDIUM⚡platformio_override.sample.ini529# ------------------------------------------------------------------------------COMMENT
MEDIUM.coderabbit.yaml71 # ── Security hardening — firmware (trust-boundary-aware) ────────────────COMMENT
MEDIUM.coderabbit.yaml101 # ── Security hardening — WebUI (always an ingress/output surface) ────────COMMENT
MEDIUM.coderabbit.yaml189 # ── Secrets / sensitive information scanning ────────────────────────────COMMENT
AI Slop Vocabulary14 hits · 42 pts
SeverityFileLineSnippetContext
MEDIUMusermods/AHT10_v2/AHT10_v2.cpp245 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of single COMMENT
MEDIUM…2_four_line_display_ALT/usermod_v2_four_line_display.h8 #define FLD_ESP32_USE_THREADS // comment out to use 0.13.x behaviour without parallel update task - slower, but more COMMENT
MEDIUM…2_four_line_display_ALT/usermod_v2_four_line_display.h8 #define FLD_ESP32_USE_THREADS // comment out to use 0.13.x behaviour without parallel update task - slower, but more COMMENT
MEDIUMusermods/BME280_v2/BME280_v2.cpp421 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of single COMMENT
MEDIUMusermods/EXAMPLE/usermod_v2_example.cpp257 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of singlCOMMENT
MEDIUMusermods/audioreactive/audio_reactive.cpp1129 // warning!! Absolutely experimental code. Audio on 8266 is still not working. Expects a million follow-on problCOMMENT
MEDIUMusermods/audioreactive/audio_source.h45// Uncomment the line below to utilize ADC1 _exclusively_ for I2S sound input.COMMENT
MEDIUMusermods/LD2410_v2/LD2410_v2.cpp171 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of singlCOMMENT
MEDIUMusermods/Cronixie/Cronixie.cpp285 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of singlCOMMENT
MEDIUMusermods/deep_sleep/deep_sleep.cpp268 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of singlCOMMENT
MEDIUMusermods/mpu6050_imu/mpu6050_imu.cpp381 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of singlCOMMENT
MEDIUMusermods/mpu6050_imu/usermod_gyro_surge.h151 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of singlCOMMENT
MEDIUM…ermods/usermod_v2_word_clock/usermod_v2_word_clock.cpp456 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of singlCOMMENT
MEDIUM…2_klipper_percentage/usermod_v2_klipper_percentage.cpp116 // setting them inside readFromConfig() is slightly more robust, handling the rare but plausible use case of single COMMENT
Synthetic Comment Markers4 hits · 30 pts
SeverityFileLineSnippetContext
HIGHAGENTS.md334### Attribution for AI-generated codeCOMMENT
HIGHwled00/ws.cpp72 // publish state to MQTT as requested in wled#4643 even if only WS response selectedCOMMENT
HIGHwled00/udp.cpp796 /*1*/ddpUdp.write(sequenceNumber++ & 0x0F); // sequence may be unnecessary unless we are sending twice (as requeCOMMENT
HIGHwled00/wled_server.cpp466 // publish state to MQTT as requested in wled#4643 even if only WS response selectedCOMMENT
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHpio-scripts/set_metadata.py35except subprocess.CalledProcessError:CODE
HIGHusermods/pixels_dice_tray/mqtt_client/mqtt_plotter.py64except KeyboardInterrupt:CODE
Hyper-Verbose Identifiers6 hits · 6 pts
SeverityFileLineSnippetContext
LOWtools/cdata.js211function isAnyFileInFolderNewerThan(folderPath, time) {CODE
LOWtools/cdata-test.js115 async function runAndCheckIfBuiltFilesExist() {CODE
LOWtools/cdata-test.js120 async function checkIfFileWasNewlyCreated(file) {CODE
LOWwled00/data/index.js1669 function setSelectedEffectPosition() {CODE
LOWwled00/data/pixelforge/omggif.js225function GifWriterOutputLZWCodeStream(buf, p, min_code_size, index_stream) {CODE
LOWwled00/data/pixelforge/omggif.js662function GifReaderLZWOutputIndexStream(code_stream, p, output, output_length) {CODE
Slop Phrases2 hits · 4 pts
SeverityFileLineSnippetContext
MEDIUMplatformio.ini77# When building on core >= 2.5, you can add the build flag -DBEARSSL_SSL_BASIC in order to build BearSSL with a limiteCOMMENT
LOWwled00/util.cpp793 #warning "BOARD_HAS_PSRAM defined, make sure to use -mfix-esp32-psram-cache-issue to prevent issues on rev.1 ESP32 bCOMMENT
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWpio-scripts/load_usermods.py143CODE
LOWpio-scripts/validate_modules.py103CODE
LOWusermods/pixels_dice_tray/generate_roll_info.py123CODE
LOWusermods/JSON_IR_remote/ir_json_maker.py59CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWpio-scripts/set_metadata.py44 # Check if it's a GitHub URLCOMMENT
LOWpio-scripts/build_ui.py5# Check if Node.js is installed and present in PATH if it failed, abort the buildCOMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpio-scripts/dynarray.py69 # TODO: consider using ESP-IDF linker fragment (https://docs.espressif.com/projects/esp-idf/en/stable/esp32/api-COMMENT
Excessive Try-Catch Wrapping1 hit · 1 pts
SeverityFileLineSnippetContext
LOWpio-scripts/set_metadata.py75 except Exception:CODE