AI Slop Code Risk Monitor

webpack/webpack

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

A bundler for javascript and friends. Packs many modules into a few bundled assets. Code Splitting allows for loading parts of the application on demand. Through "loaders", modules can be CommonJs, AMD, ES6 modules, CSS, Images, JSON, Coffeescript, LESS, ... and your custom stuff.

0.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for webpack/webpack, a JavaScript project with 65,971 GitHub stars. SynthScan examined 822,700 lines of code across 19564 source files, recording 234 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 0.6 (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.

0.6
Adjusted Signal
0.6
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
66.0K
Stars
JavaScript
Language
822.7K
Lines of Code
19.6K
Files
234
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 1.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.4/100 · LOW

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

Agent Over-Engineering Ratio 0.3/100 · LOW

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

PR Review Velocity Impact 2.7/100 · LOW

Which changes need focused human review? 234 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 40MEDIUM 6LOW 188

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 234 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.

Cross-Language Confusion (JS/TS)39 hits · 238 pts
SeverityFileLineSnippetContext
HIGHtest/unitCases/Defaults.unittest.js91 print(received) {CODE
HIGHtest/unitCases/Defaults.unittest.js104 print(received) {CODE
HIGHtest/unitCases/compileBooleanMatcher.unittest.js33 print(received) {CODE
HIGHtest/unitCases/css/printer.unittest.js2420 print(CODE
HIGHtest/unitCases/css/printer.unittest.js2428 print("@media screen{.a{color:#ff0000;margin:1px 2px 1px 2px}}", "minify")CODE
HIGHtest/unitCases/css/printer.unittest.js8841 print(code, "minify")CODE
HIGHtest/unitCases/css/printer.unittest.js16192 print(runs[j]);CODE
HIGH⚡test/unitCases/css/printer.unittest.js16270 print(css, {CODE
HIGH⚡test/unitCases/css/printer.unittest.js16277 print(css, {CODE
HIGH⚡test/unitCases/css/printer.unittest.js16284 print(CODE
HIGH⚡test/unitCases/css/printer.unittest.js16294 print("a{color:red;top:0}", {CODE
HIGHtest/unitCases/css/printer.unittest.js16306 print("a{margin:0;margin-top:#f00}b{margin:0;margin-top:1px}", {CODE
HIGHtest/unitCases/css/printer.unittest.js16331 print("/*! x */a{color:red}b{top:0}", {CODE
HIGHtest/unitCases/css/printer.unittest.js16347 print(css, {CODE
HIGHtest/unitCases/css/printer.unittest.js16367 print("a{--x: foo #f00 bar(#f00) }", visitors, "beautify")CODE
HIGHtest/unitCases/css/printer.unittest.js16371 print("a{--x: a, b c;b:x}", {CODE
HIGH⚡test/unitCases/css/parser.unittest.js645 print(css, {CODE
HIGH⚡test/unitCases/css/parser.unittest.js652 print(css, {CODE
HIGH⚡test/unitCases/css/parser.unittest.js659 print(CODE
HIGH⚡test/unitCases/css/parser.unittest.js669 print("a{color:red;top:0}", {CODE
HIGHtest/unitCases/css/parser.unittest.js681 print("a{margin:0;margin-top:#f00}b{margin:0;margin-top:1px}", {CODE
HIGHtest/unitCases/css/parser.unittest.js706 print("/*! x */a{color:red}b{top:0}", {CODE
HIGHtest/unitCases/css/parser.unittest.js722 print(css, {CODE
HIGHtest/unitCases/css/parser.unittest.js742 print("a{--x: foo #f00 bar(#f00) }", visitors, "beautify")CODE
HIGHtest/unitCases/css/parser.unittest.js746 print("a{--x: a, b c;b:x}", {CODE
HIGHtest/unitCases/html/printer.unittest.js4274 print(source, "minify")CODE
HIGH⚡test/unitCases/html/printer.unittest.js5971 print("<table><colgroup><col></colgroup><tr><td>x</table>", MINIFY)CODE
HIGH⚡test/unitCases/html/printer.unittest.js5974 print("<template><tbody><tr><td>x</tbody></template>", MINIFY)CODE
HIGH⚡test/unitCases/html/printer.unittest.js5984 print("<body>\n<div>", { ...MINIFY, fragmentContext: "div" })CODE
HIGHtest/unitCases/html/printer.unittest.js6021 print("<template><colgroup><col></template>", {CODE
HIGHtest/unitCases/html/printer.unittest.js6032 print("<form><form>", { ...BEAUTIFY, fragmentContext: "template" })CODE
HIGHtest/unitCases/html/printer.unittest.js6108 print("<table><caption>x</caption><tbody><tr><td>y</table>", MINIFY)CODE
HIGH⚡examples/module-code-splitting/example.js5 print(counter.value);CODE
HIGH⚡examples/module-code-splitting/example.js9 print(counter.value);CODE
HIGH⚡examples/module-code-splitting/example.js11 print(counter.value);CODE
HIGH⚡examples/module/example.js3print(value);CODE
HIGH⚡examples/module/example.js7print(value);CODE
HIGH⚡examples/module/example.js9print(value);CODE
HIGHlib/stats/StatsPrinter.js320 print(type, object, baseContext) {CODE
Over-Commented Block124 hits · 123 pts
SeverityFileLineSnippetContext
LOWtooling/generate-css-data.js1/*COMMENT
LOWtooling/generate-css-data.js81/** @typedef {KeywordNode | LiteralNode | TypeNode | PropertyNode | FunctionCallNode | GroupNode | CombinatorNode | MultCOMMENT
LOWtooling/generate-css-data.js2021 // WHY: `conversion` says what a color read in this space passes through on its wayCOMMENT
LOWtooling/generate-css-data.js4301 ["right", "100%"],COMMENT
LOWtooling/generate-css-data.js4321 // and `-ms-content-zooming` read differently per user agent, and `all` has noCOMMENT
LOWtooling/generate-css-data.js4361 unmergeableSlotKeywords: [["flex-wrap", "balance"]],COMMENT
LOWtooling/generate-css-data.js4461 // is 2018-era. Every other name above is newer in its one-value form too.COMMENT
LOWtooling/generate-css-data.js4501 // not the longhand's initial (`flex` reads a missing basis as `0%` whereCOMMENT
LOWtooling/generate-css-data.js4581 "starting-style",COMMENT
LOWtooling/generate-css-data.js5041 ["grad", 100],COMMENT
LOWtooling/generate-css-data.js5061 // result the unit the answer carries: `same` as its arguments, `` for aCOMMENT
LOWtooling/generate-css-data.js5101 // `<calc-sum>` — and it is emitted from here rather than written beside theCOMMENT
LOWtooling/generate-css-data.js5621 "upper-roman"COMMENT
LOWtooling/generate-css-data.js5801// the two version tables hold numbers alone — `Infinity` prints as an identifierCOMMENT
LOWtooling/generate-css-data.js6341 }COMMENT
LOWtooling/generate-css-data.js6961 // the same engine on the same version line, but caniuse has the propertyCOMMENT
LOWtooling/generate-css-data.js7141 // similar name: `font-smooth` takes `never`/`always`/a size, whileCOMMENT
LOWtooling/generate-css-data.js7161 (name) => /** @type {[string, string[]]} */ ([name, ["-webkit-", "-moz-"]])COMMENT
LOWtooling/generate-css-data.js7801// could shadow it. Not every shorthand prefixes its longhands: \`inset\` sets \`top\`.COMMENT
LOWtooling/generate-css-data.js7861// Functions that take a \`<color>\` directly, so a hash among their arguments is aCOMMENT
LOWtooling/generate-css-data.js8361 .join(",\n")}COMMENT
LOWtooling/precompile-schemas.js1/*COMMENT
LOWtooling/generate-schemas.js1/*COMMENT
LOWtooling/measure-color-agreement.js1/*COMMENT
LOWtooling/measure-color-agreement.js21// carries that into every term of the product, so this is what a conversionCOMMENT
LOWtooling/compare-html-tools.js1241const wantedStage = filterFrom("STAGE");COMMENT
LOWtooling/compare-xml-tools.js1/*COMMENT
LOWtooling/generate-html-data.js1621 // absence, so `removeEmptyAttributes` may drop them. Deliberately short:COMMENT
LOWtest/statsCases/split-chunks-max-size/very-big.js1// content content content content content content content contentCOMMENT
LOWtest/statsCases/split-chunks-max-size/very-big.js21// content content content content content content content contentCOMMENT
LOWtest/statsCases/split-chunks-max-size/big.js1// content content content content content content content contentCOMMENT
LOW…statsCases/split-chunks-max-size/subfolder/very-big.js1// content content content content content content content contentCOMMENT
LOW…statsCases/split-chunks-max-size/subfolder/very-big.js21// content content content content content content content contentCOMMENT
LOWtest/statsCases/split-chunks-max-size/subfolder/big.js1// content content content content content content content contentCOMMENT
LOW…tsCases/split-chunks-max-size/inner-module/very-big.js1// content content content content content content content contentCOMMENT
LOW…tsCases/split-chunks-max-size/inner-module/very-big.js21// content content content content content content content contentCOMMENT
LOW…t/statsCases/split-chunks-max-size/inner-module/big.js1// content content content content content content content contentCOMMENT
LOW…es/split-chunks-max-size/in-some-directory/very-big.js1// content content content content content content content contentCOMMENT
LOW…es/split-chunks-max-size/in-some-directory/very-big.js21// content content content content content content content contentCOMMENT
LOW…tsCases/split-chunks-max-size/in-some-directory/big.js1// content content content content content content content contentCOMMENT
LOWtest/statsCases/module-reasons/c.js1// emptyCOMMENT
LOW…/statsCases/analyzable-esm-fallbacks/webpack.config.js61 // chunk's prefetch/preload children are still injected by `.f.prefetch`.COMMENT
LOWtest/unitCases/globUtils.unittest.js1"use strict";COMMENT
LOWtest/unitCases/css/printer.unittest.js861 // An unterminated string only exists at EOF (a newline makes it a bad-stringCOMMENT
LOWtest/harness/runtimes/bun-preload.js1"use strict";COMMENT
LOWtest/specCases/test262.spectest.js1961COMMENT
LOWtest/specCases/xmlconf.spectest.js1"use strict";COMMENT
LOWtest/specCases/html5lib.spectest.js1"use strict";COMMENT
LOW…gCases/contenthash/hash-placeholders/webpack.config.js1"use strict";COMMENT
LOWtest/configCases/records/issue-295/file.js1// just a fileCOMMENT
LOWtest/configCases/css/parsing/cases/selectors.css241a[href='place']::before {}COMMENT
LOWtest/configCases/css/parsing/cases/selectors.css261#\31 23 {}COMMENT
LOWtest/configCases/css/parsing/cases/selectors.css281#f\~o\~o {}COMMENT
LOWtest/configCases/css/parsing/cases/selectors.css301#\<p\> {}COMMENT
LOW…wasm/analyzable-relative-public-path/webpack.config.js61 // The public path reaches this one, and one rooted at the origin names the sameCOMMENT
LOWtest/configCases/require/esm-module-exports/index.js1// Verify webpack's `require(esm)` "module.exports" unwrapping matches Node'sCOMMENT
LOWtest/configCases/defer-import/css-export-types/index.js1// `import defer` coverage for every CSS module exportType webpack supportsCOMMENT
LOWtest/configCases/defer-import/asset-modules/index.js1// `import defer` coverage for every asset module type webpack supports.COMMENT
LOWtest/configCases/html/asset-url-hints-split/vendor.js1// This module lives in a split vendor chunk (see webpack.config.js).COMMENT
LOW…es/html/css-mixed-link-and-js-import/webpack.config.js1"use strict";COMMENT
64 more matches not shown…
Hyper-Verbose Identifiers45 hits · 45 pts
SeverityFileLineSnippetContext
LOWdeclarations.d.ts184 export function moduleContextFromModuleAST(module: Module): {CODE
LOWtest/statsCases/cause-error/webpack.config.js30function createWebpackErrorWithCause(message, options) {CODE
LOWtest/unitCases/Compiler.unittest.js210 function emitAssetWithFileAttributes(info) {CODE
LOW…assigned-import-binding-destructuring-pattern/index.js14function writeNamespaceMemberElement() {CODE
LOW…/entry-merge-exports-module-commonjs/webpack.config.js13 function expectOneDefaultExportPlugin() {CODE
LOW…igCases/rule-set/simple-use-fn-array/webpack.config.js7function createFunctionArrayFromUseArray(useArray) {CODE
LOWtest/configCases/inner-graph/issue-11678/module.js181function showSortManualButtonState() {CODE
LOWtest/configCases/inner-graph/issue-11678/module.js217async function onInsertFromTemplateDialog() {CODE
LOWtest/configCases/inner-graph/issue-11678/module.js1073async function doCreateAndShowTableWidget(CODE
LOWtest/configCases/inner-graph/issue-11678/module.js2486async function showAssignResourcesDialog(appendTo) {CODE
LOWtest/configCases/inner-graph/altaskitButton/module.js104 value: function componentWillReceiveProps(nextProps) {CODE
LOW…configCases/parsing/custom-parser-hoisting/hoisting.js121function fromNestedFunctionDeclaration() {CODE
LOW…configCases/parsing/custom-parser-hoisting/hoisting.js128function fromBlockFunctionDeclaration() {CODE
LOW…mangle-with-destructuring-assignment/webpack.config.js23 function getJsonCodeGeneratedSource(compiler) {CODE
LOWtest/helpers/supportsLogicalAssignment.js3module.exports = function supportsLogicalAssignment() {CODE
LOWtest/helpers/assertCircularModules.js19 function assertCircularModulesPlugin(compiler) {CODE
LOWtest/helpers/supportsOptionalCatchBinding.js3module.exports = function supportsOptionalCatchBinding() {CODE
LOWtest/helpers/supportsArbitraryModuleNamespaceNames.js5module.exports = function supportsArbitraryModuleNamespaceNames() {CODE
LOWtest/helpers/assertIncludedExternals.js20 function assertIncludedExternalsPlugin(compiler) {CODE
LOWtest/helpers/supportsProcessGetBuiltinModule.js3module.exports = function supportsProcessGetBuiltinModule() {CODE
LOWtest/helpers/infrastructureLogErrors.js27module.exports = function filterInfraStructureErrors(logs, config) {CODE
LOWtest/helpers/supportsNullishCoalescing.js3module.exports = function supportsNullishCoalescing() {CODE
LOWexamples/externals/README.md57(function webpackUniversalModuleDefinition(root, factory) {CODE
LOWexamples/wasm-complex/memory.js1async function getMemoryFromParentInWorker() {CODE
LOWexamples/wasm-complex/README.md61async function getMemoryFromParentInWorker() {CODE
LOWexamples/wasm-complex/README.md195async function getMemoryFromParentInWorker() {CODE
LOWexamples/multi-part-library/README.md43(function webpackUniversalModuleDefinition(root, factory) {CODE
LOWexamples/multi-part-library/README.md119(function webpackUniversalModuleDefinition(root, factory) {CODE
LOWexamples/harmony-library/README.md26(function webpackUniversalModuleDefinition(root, factory) {CODE
LOWlib/context/ContextModule.js1013function webpackAsyncContextResolve(req) {CODE
LOWlib/context/ContextModule.js1067function webpackAsyncContextResolve(req) {CODE
LOWlib/context/ContextModule.js1136function webpackAsyncContextResolve(req) {CODE
LOWlib/optimize/InnerGraph.js118function isDependencyUsedByExports(CODE
LOWlib/runtime/MakeDeferredNamespaceObjectRuntime.js65function assignStronglyConnectedComponents(moduleGraph, seed, sccOf) {CODE
LOWlib/runtime/MakeDeferredNamespaceObjectRuntime.js171function getDeferredCycleModuleIds(closure, resolveId) {CODE
LOWlib/runtime/MakeDeferredNamespaceObjectRuntime.js186function getMakeDeferredNamespaceModeFromExportsType(exportsType) {CODE
LOWlib/runtime/MakeDeferredNamespaceObjectRuntime.js203function getOptimizedDeferredModule(CODE
LOWlib/dependencies/esm/ESMImportDependencyParserPlugin.js286 function getNonOptionalMemberChain(node, count) {CODE
LOWlib/dependencies/import/ImportParserPlugin.js86function tagDynamicImportReferenced(parser, importCall, variableName) {CODE
LOWlib/dependencies/import/ImportParserPlugin.js106function getFulfilledCallbackNamespaceObj(importThen) {CODE
LOWlib/dependencies/import/ImportParserPlugin.js127function walkImportThenFulfilledCallback(CODE
LOW…s/helpers/traverseDestructuringAssignmentProperties.js23function traverseDestructuringAssignmentProperties(CODE
LOWlib/library/UmdLibraryPlugin.js264 expr = `(function webpackLoadOptionalExternalModule() { try { return ${expr}; } catch(e) {} }())`;CODE
LOWlib/library/UmdLibraryPlugin.js310 `function webpackLoadOptionalExternalModuleAmd(${wrapperArguments}) {\n` +CODE
LOWlib/library/UmdLibraryPlugin.js353 `(function webpackUniversalModuleDefinition(root, factory) {\n${getAuxiliaryComment(CODE
AI Slop Vocabulary5 hits · 14 pts
SeverityFileLineSnippetContext
MEDIUMtooling/comparison/js-tool-comparison/package-lock.json3927 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
MEDIUMtest/configCases/defer-import/asset-modules/index.js46// robust if a user has a stricter `core.autocrlf` override.COMMENT
MEDIUM.github/workflows/dependency-review.yml25 # robust-predicates is the comparison corpus's, reached through d3,COMMENT
MEDIUM.github/workflows/benchmarks.yml46 # The harness has no deadline of its own and a watch bench waits on aCOMMENT
MEDIUM.github/workflows/benchmarks.yml113 # the harness still supports it:COMMENT
Overly Generic Function Names10 hits · 10 pts
SeverityFileLineSnippetContext
LOW…t/cases/inner-graph/inner-graph-cases/switch/module.js21function doSomething(obj) {CODE
LOWtest/configCases/chunks-order/module/nested-shared.js1function doSomething() {}CODE
LOWtest/configCases/chunks-order/module/shared.js3function doSomething() {}CODE
LOWtest/configCases/chunks-order/module/dependency.js1function doSomething() {}CODE
LOWtest/configCases/chunks-order/cjs/nested-shared.js1function doSomething() {}CODE
LOWtest/configCases/chunks-order/cjs/shared.js3function doSomething() {}CODE
LOWtest/configCases/chunks-order/cjs/dependency.js1function doSomething() {}CODE
LOW…t/configCases/plugins/manifest-plugin/nested-shared.js1function doSomething() {}CODE
LOWtest/configCases/plugins/manifest-plugin/shared.js3function doSomething() {}CODE
LOWtest/configCases/plugins/manifest-plugin/dependency.js1function doSomething() {}CODE
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHlib/module/NormalModuleFactory.js285 // The entry exists as requested, so the request failed for another reason.COMMENT
Verbosity Indicators4 hits · 6 pts
SeverityFileLineSnippetContext
LOW…chCases/plugins/hmr-dispose-leaving-runtime/0/index.js12 // Step 1: `b` stops importing `shared`, so its chunk leaves runtime `b`.COMMENT
LOWlib/optimize/FlagDependencyExportsPlugin.js106 // Step 1: Try to restore cached provided export info from cacheCOMMENT
LOW…b/dependencies/commonjs/CommonJsExportsParserPlugin.js178 * The purpose of this function is to check whether an expression is a truthy literal or not. This isCOMMENT
LOW…b/dependencies/commonjs/CommonJsExportsParserPlugin.js195 * The purpose of this function is to check whether an expression is a falsy literal or not. This isCOMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMcodecov.yml7# Create the comment only once coverage drops, so a pull request that neverCOMMENT
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippetContext
LOWlib/dependencies/worker/WorkletDependency.js47 // If options are updated, don't forget to update the hash and serialization functionsCOMMENT
LOWlib/dependencies/worker/WorkerDependency.js54 // If options are updated, don't forget to update the hash and serialization functionsCOMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOW…sset-modules/resource-hints-manifest/webpack.config.js54 new webpack.sources.RawSource("placeholder")CODE
LOWlib/css/data.js8157 "placeholder",CODE
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWlib/optimize/FlagDependencyExportsPlugin.js106 // Step 1: Try to restore cached provided export info from cacheCOMMENT