AI Slop Code Risk Monitor

rollup/rollup

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

Next-generation ES module bundler

1.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for rollup/rollup, a JavaScript project with 26,305 GitHub stars. SynthScan examined 285,398 lines of code across 13497 source files, recording 333 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 1.2 (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.2
Adjusted Signal
1.2
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
26.3K
Stars
JavaScript
Language
285.4K
Lines of Code
13.5K
Files
333
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 4.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.2/100 · LOW

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

Agent Over-Engineering Ratio 3.9/100 · LOW

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

PR Review Velocity Impact 6.6/100 · LOW

Which changes need focused human review? 333 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 4HIGH 4MEDIUM 1LOW 324

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 333 distinct pattern matches across 8 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.

Hyper-Verbose Identifiers278 hits · 228 pts
SeverityFileLineSnippetContext
LOWtest/testHelpers.js286function getFileNamesAndRemoveOutput(directory) {CODE
LOWtest/testHelpers.js339exports.assertDirectoriesAreEqual = function assertDirectoriesAreEqual(CODE
LOWtest/testHelpers.js464exports.replaceDirectoryInStringifiedObject = function replaceDirectoryInStringifiedObject(CODE
LOW⚡test/misc/umd.js76function runStrictIifeTestWithSelf(code, outputOptions) {CODE
LOW⚡test/misc/umd.js82function runStrictIifeTestWithGlobalThis(code, outputOptions) {CODE
LOW⚡test/misc/umd.js88function runIifeWithExistingValuesTest(code, outputOptions) {CODE
LOWtest/misc/umd.js107function getAndCheckIifeExports(global, outputOptions) {CODE
LOW…mples/tree-shake-literal-parameter/side-effect/main.js45function calledWithDifferentVariable(options) {CODE
LOW…mples/tree-shake-literal-parameter/side-effect/main.js62function calledWithModifiedVariable(options) {CODE
LOW…/tree-shake-literal-parameter/side-effect/_expected.js37function calledWithDifferentVariable(options) {CODE
LOW…/tree-shake-literal-parameter/side-effect/_expected.js54function calledWithModifiedVariable(options) {CODE
LOW…st/form/samples/side-effects-switch-statements/main.js43(function nestedSwitchWithoutEffects() {CODE
LOWtest/form/samples/supports-es6-shim/_expected.js306 } : function isNullOrUndefinedAndNotDocumentAll(x) {CODE
LOWtest/form/samples/supports-es6-shim/_expected.js686 var createDataPropertyOrThrow = function createDataPropertyOrThrow(object, name, value) {CODE
LOWtest/form/samples/supports-es6-shim/_expected.js3505 var throwUnlessTargetIsObject = function throwUnlessTargetIsObject(target) {CODE
LOWtest/form/samples/supports-es6-shim/_expected.js3577 var callAndCatchException = function ConvertExceptionToBoolean(func) {CODE
LOWtest/form/samples/supports-core-js/_expected.js68function requireFunctionBindNative () {CODE
LOWtest/form/samples/supports-core-js/_expected.js102function requireObjectPropertyIsEnumerable () {CODE
LOWtest/form/samples/supports-core-js/_expected.js124function requireCreatePropertyDescriptor () {CODE
LOWtest/form/samples/supports-core-js/_expected.js141function requireFunctionUncurryThis () {CODE
LOWtest/form/samples/supports-core-js/_expected.js216function requireRequireObjectCoercible () {CODE
LOWtest/form/samples/supports-core-js/_expected.js304function requireObjectIsPrototypeOf () {CODE
LOWtest/form/samples/supports-core-js/_expected.js316function requireEnvironmentUserAgent () {CODE
LOWtest/form/samples/supports-core-js/_expected.js367function requireSymbolConstructorDetection () {CODE
LOWtest/form/samples/supports-core-js/_expected.js486function requireOrdinaryToPrimitive () {CODE
LOWtest/form/samples/supports-core-js/_expected.js522function requireDefineGlobalProperty () {CODE
LOWtest/form/samples/supports-core-js/_expected.js714function requireDocumentCreateElement () {CODE
LOWtest/form/samples/supports-core-js/_expected.js752function requireObjectGetOwnPropertyDescriptor () {CODE
LOWtest/form/samples/supports-core-js/_expected.js824function requireObjectDefineProperty () {CODE
LOWtest/form/samples/supports-core-js/_expected.js876function requireCreateNonEnumerableProperty () {CODE
LOWtest/form/samples/supports-core-js/_expected.js946function requireWeakMapBasicDetection () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1186function requireToIntegerOrInfinity () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1302function requireObjectKeysInternal () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1349function requireObjectGetOwnPropertyNames () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1370function requireObjectGetOwnPropertySymbols () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1404function requireCopyConstructorProperties () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1523function requireToStringTagSupport () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1614function requireObjectDefineProperties () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1761function requireObjectGetOwnPropertyNamesExternal () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1793function requireDefineBuiltInAccessor () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1811function requireWellKnownSymbolWrapped () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1835function requireWellKnownSymbolDefine () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1855function requireSymbolDefineToPrimitive () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1905function requireFunctionUncurryThisClause () {CODE
LOWtest/form/samples/supports-core-js/_expected.js1923function requireFunctionBindContext () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2022function requireArraySpeciesConstructor () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2053function requireArraySpeciesCreate () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2423function requireSymbolRegistryDetection () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2514function requireGetJsonReplacerFunction () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2949function requireFunctionUncurryThisAccessor () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2967function requireIsPossiblePrototype () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2981function requireAPossiblePrototype () {CODE
LOWtest/form/samples/supports-core-js/_expected.js2999function requireObjectSetPrototypeOf () {CODE
LOWtest/form/samples/supports-core-js/_expected.js3081function requireNormalizeStringArgument () {CODE
LOWtest/form/samples/supports-core-js/_expected.js3138function requireErrorStackInstallable () {CODE
LOWtest/form/samples/supports-core-js/_expected.js3179function requireWrapErrorConstructorWithCause () {CODE
LOWtest/form/samples/supports-core-js/_expected.js3378function requireCorrectPrototypeGetter () {CODE
LOWtest/form/samples/supports-core-js/_expected.js3395function requireObjectGetPrototypeOf () {CODE
LOWtest/form/samples/supports-core-js/_expected.js3435function requireIsArrayIteratorMethod () {CODE
LOWtest/form/samples/supports-core-js/_expected.js3767function requireDoesNotExceedSafeInteger () {CODE
218 more matches not shown…
Hallucination Indicators4 hits · 40 pts
SeverityFileLineSnippetContext
CRITICALtest/form/samples/deep-properties/main.js5obj2.obj.obj.obj.obj.obj.obj.obj.foo();CODE
CRITICALtest/form/samples/deep-properties/_expected.js5obj2.obj.obj.obj.obj.obj.obj.obj.foo();CODE
CRITICALtest/function/samples/long-path-deopt/main.js26obj.a.b.c.d.e.f.g.h.i.j.k().effect();CODE
CRITICALsrc/ast/variables/LocalVariable.ts243 this.module.scope.context.newlyIncludedVariableInits.add(this.init);CODE
Over-Commented Block27 hits · 24 pts
SeverityFileLineSnippetContext
LOWtest/form/samples/supports-es5-shim/_expected.js241 var target = this;COMMENT
LOWtest/form/samples/supports-es5-shim/_expected.js261COMMENT
LOWtest/form/samples/supports-es5-shim/_expected.js281 this,COMMENT
LOWtest/form/samples/supports-es5-shim/_expected.js301 // 4. Let args be a new list containing the same values as theCOMMENT
LOWtest/form/samples/supports-es5-shim/_expected.js341 Empty.prototype = target.prototype;COMMENT
LOWtest/form/samples/supports-es5-shim/_expected.js421 unshift: function () {COMMENT
LOWtest/form/samples/supports-core-js/_expected.js2121 // https://tc39.es/ecma262/#sec-array.prototype.foreachCOMMENT
LOWtest/form/samples/supports-core-js/_expected.js4821 var getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);COMMENT
LOWtest/form/samples/supports-core-js/_expected.js26361 var checkNewErrorsCloningSemantic = function (structuredCloneImplementation) {COMMENT
LOWtest/form/samples/supports-core-js/_expected.js26381COMMENT
LOWtest/form/samples/supports-core-js/_expected.js28641 // `URL.prototype.password` accessors pairCOMMENT
LOWtest/form/samples/enforce-addon-order/_expected.js1// banner-pre-2COMMENT
LOWtest/form/samples/enforce-addon-order/_expected.js61// outro-string-post-4COMMENT
LOW…n/samples/track-parameter-return-reassignments/main.js21// foo(() => obj2);COMMENT
LOW…/function/samples/load-resolve-dependencies/_config.js21 options: {COMMENT
LOW…/function/samples/load-resolve-dependencies/_config.js41 return `${DYNAMIC_IMPORT_PROXY_PREFIX}${resolved.id}`;COMMENT
LOW…nction/samples/module-side-effects/writable/_config.js21 // Determine what the actual entry would have been.COMMENT
LOWrust/bindings_napi/Cargo.toml21# Readable version of the target specifierCOMMENT
LOWrust/bindings_napi/src/lib.rs81#[napi]COMMENT
LOW…parse_ast/src/convert_ast/converter/utf16_positions.rs41 }COMMENT
LOWdocs/javascript-api/index.md81/** @param {import('rollup').RollupBuild} [bundle] */COMMENT
LOWdocs/javascript-api/index.md101 // {COMMENT
LOWdocs/javascript-api/index.md261 // * event.output contains an array of the "file" orCOMMENT
LOWdocs/repl/examples/03/modules/main.js1// STATIC NAMESPACESCOMMENT
LOWdocs/plugin-development/index.md581 // have the full "resolution" object that may containCOMMENT
LOWdocs/plugin-development/index.md1821 if (!(typeof specifier === 'string')) return;COMMENT
LOW.github/workflows/build-and-tests.yml421 # distro: ubuntu_latestCOMMENT
Fake / Example Data18 hits · 18 pts
SeverityFileLineSnippetContext
LOW…s-filename-pattern/_expected/amd/b.str-amd-DF7A0kMb.js3 var b = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore CODE
LOW…s-filename-pattern/_expected/amd/b.str-amd-DF7A0kMb.js3 var b = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore CODE
LOW…name-pattern/_expected/system/b.str-system-Bdh1JWaH.js6 var b = exports("default", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntCODE
LOW…name-pattern/_expected/system/b.str-system-Bdh1JWaH.js6 var b = exports("default", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididuntCODE
LOW…les-filename-pattern/_expected/es/b.str-es-Gs0GwhVF.js1var b = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mCODE
LOW…les-filename-pattern/_expected/es/b.str-es-Gs0GwhVF.js1var b = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mCODE
LOW…s-filename-pattern/_expected/cjs/b.str-cjs-BS5lKJ39.js3var b = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mCODE
LOW…s-filename-pattern/_expected/cjs/b.str-cjs-BS5lKJ39.js3var b = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore mCODE
LOW…-modules-scriptified-assets/_expected/amd/lorem.str.js3 var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolCODE
LOW…-modules-scriptified-assets/_expected/amd/lorem.str.js3 var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolCODE
LOW…dules-scriptified-assets/_expected/system/lorem.str.js6 var lorem = exports("default", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidiCODE
LOW…dules-scriptified-assets/_expected/system/lorem.str.js6 var lorem = exports("default", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incidiCODE
LOW…e-modules-scriptified-assets/_expected/es/lorem.str.js1var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et doloCODE
LOW…e-modules-scriptified-assets/_expected/es/lorem.str.js1var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et doloCODE
LOW…-modules-scriptified-assets/_expected/cjs/lorem.str.js3var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et doloCODE
LOW…-modules-scriptified-assets/_expected/cjs/lorem.str.js3var lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et doloCODE
LOWsrc/Bundle.ts390 if (entry.type !== 'placeholder') {CODE
LOWsrc/utils/outputBundle.ts6 type: 'placeholder' as constCODE
Cross-Language Confusion (JS/TS)2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHtest/cli/samples/plugin/advanced-esm/_expected/cjs.js22 print(this.x);CODE
HIGHtest/cli/samples/plugin/advanced-esm/_expected/es.js20 print(this.x);CODE
Synthetic Comment Markers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHdocs/configuration-options/index.md967Whether to use arrow functions for auto-generated code snippets. Note that in certain places like module wrappers, RolluCODE
HIGHdocs/configuration-options/index.md1105Whether to allow the use of `Symbol` in auto-generated code snippets. Currently, this only controls if namespaces will hCODE
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMpackage-lock.json14718 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
Overly Generic Function Names1 hit · 1 pts
SeverityFileLineSnippetContext
LOW…mples/builtin-prototypes/argument-side-effects/main.js1function getData() {CODE