AI Slop Code Risk Monitor

cytoscape/cytoscape.js

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

Graph theory (network) library for visualisation and analysis

0.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for cytoscape/cytoscape.js, a JavaScript project with 11,260 GitHub stars. SynthScan examined 233,372 lines of code across 486 source files, recording 120 pattern matches distributed across 8 syntactic categories. The legacy adjusted pattern signal is 0.8 (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.8
Adjusted Signal
0.8
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
11.3K
Stars
JavaScript
Language
233.4K
Lines of Code
486
Files
120
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 3.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 0.3/100 · LOW

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

PR Review Velocity Impact 4.0/100 · LOW

Which changes need focused human review? 120 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 35LOW 85

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

Slop Phrases35 hits · 70 pts
SeverityFileLineSnippetContext
MEDIUMdocumentation/demos/animated-bfs/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/compound-nodes/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/tokyo-railways/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/gpu/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/performance-tuning/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/wine-cheese-map/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/genemania-export/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/edge-types/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/pie-style/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/edge-arrows/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/colajs-graph/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/labels/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUM…entation/demos/background-image-containment/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/visual-style/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUM…umentation/demos/images-breadthfirst-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/circle-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/node-types/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/spread-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/architecture/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/dagre-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUM…entation/demos/cose-bilkent-layout-compound/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/multiple-windows/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/multiple-windows/windowIndex.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/cose-bilkent-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/concentric-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/multiple-instances/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/qtip-extension/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/stripe-style/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/initialisation/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/fcose-gene/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/cose-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/grid-layout/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/radius-types/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/linkout-example/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
MEDIUMdocumentation/demos/6000-elements/index.html2<!-- This code is for demonstration purposes only. You should not hotlink to Github, Rawgit, or files from the CytoscapCODE
Verbosity Indicators18 hits · 35 pts
SeverityFileLineSnippetContext
LOW⚡documentation/js/cytoscape.cjs.js4750 // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonalCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js4753 // Step 2: M = normalize( M );COMMENT
LOW⚡documentation/js/cytoscape.cjs.js4760 // Step 3:COMMENT
LOW⚡documentation/js/cytoscape.cjs.js4763 // Step 4:COMMENT
LOW⚡documentation/js/cytoscape.cjs.js4766 // Step 5: check to see if ~steady state has been reachedCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js4993 // Step 1: Initialize centroid positionsCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5010 // Step 2: Assign nodes to the nearest centroidCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5017 // Step 3: For each of the k clusters, update its centroidCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5078 // Step 2: Assign nodes to the nearest medoidCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5085 // Step 3: For each medoid m, and for each node associated with mediod m,COMMENT
LOW⚡documentation/js/cytoscape.cjs.js5226 // Step 2: Calculate the centroids for each step.COMMENT
LOW⚡documentation/js/cytoscape.cjs.js5229 // Step 3: Update the partition matrix U.COMMENT
LOW⚡documentation/js/cytoscape.cjs.js5232 // Step 4: Check for convergence.COMMENT
LOWdocumentation/js/cytoscape.cjs.js5065 // Step 1: Initialize k medoidsCOMMENT
LOWdocumentation/js/cytoscape.cjs.js5189 // Step 1: Initialize letiables.COMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh50# Step 2: Make sure local unstable is up-to-dateCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh72# Step 3: Create a merge commit and push itCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh78# Step 4: Fast-forward master to the merge commitCOMMENT
Structural Annotation Overuse16 hits · 30 pts
SeverityFileLineSnippetContext
LOW⚡documentation/js/cytoscape.cjs.js4750 // Step 1: Add self loops to each node, ie. add multFactor to matrix diagonalCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js4753 // Step 2: M = normalize( M );COMMENT
LOW⚡documentation/js/cytoscape.cjs.js4766 // Step 5: check to see if ~steady state has been reachedCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js4993 // Step 1: Initialize centroid positionsCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5010 // Step 2: Assign nodes to the nearest centroidCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5017 // Step 3: For each of the k clusters, update its centroidCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5078 // Step 2: Assign nodes to the nearest medoidCOMMENT
LOW⚡documentation/js/cytoscape.cjs.js5085 // Step 3: For each medoid m, and for each node associated with mediod m,COMMENT
LOW⚡documentation/js/cytoscape.cjs.js5226 // Step 2: Calculate the centroids for each step.COMMENT
LOW⚡documentation/js/cytoscape.cjs.js5229 // Step 3: Update the partition matrix U.COMMENT
LOW⚡documentation/js/cytoscape.cjs.js5232 // Step 4: Check for convergence.COMMENT
LOWdocumentation/js/cytoscape.cjs.js5065 // Step 1: Initialize k medoidsCOMMENT
LOWdocumentation/js/cytoscape.cjs.js5189 // Step 1: Initialize letiables.COMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh50# Step 2: Make sure local unstable is up-to-dateCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh72# Step 3: Create a merge commit and push itCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh78# Step 4: Fast-forward master to the merge commitCOMMENT
Redundant / Tautological Comments13 hits · 25 pts
SeverityFileLineSnippetContext
LOW.github/workflows/scripts/pre_release_test.sh6# Check if VERSION variable is setCOMMENT
LOW.github/workflows/scripts/pre_release_test.sh14# Check if current Git branch is named "master" or the provided branch nameCOMMENT
LOW⚡.github/workflows/scripts/pre_release_test.sh50 # Check if the file exists in the local FSCOMMENT
LOW⚡.github/workflows/scripts/pre_release_test.sh58 # Check if the file has changedCOMMENT
LOW⚡.github/workflows/scripts/pre_release_test.sh63 # Check if the file has changedCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh6# Check if VERSION variable is setCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh14# Check if NEXT_VERSION variable is setCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh22# Check if NEXT_BACK_PORT_VERSION variable is setCOMMENT
LOW⚡.github/workflows/scripts/merge_unstable_to_master.sh54# Check if current Git branch is named "unstable"COMMENT
LOW.github/workflows/scripts/merge_unstable_to_master.sh94# Check if version is updated in package.jsonCOMMENT
LOW.github/workflows/scripts/merge_unstable_to_master.sh103# Check if version is updated in package-lock.jsonCOMMENT
LOW.github/workflows/scripts/merge_unstable_to_master.sh128# Check if version is updated in package.json for unstableCOMMENT
LOW.github/workflows/scripts/merge_unstable_to_master.sh137# Check if version is updated in package-lock.json for unstableCOMMENT
Hyper-Verbose Identifiers26 hits · 15 pts
SeverityFileLineSnippetContext
LOW⚡documentation/js/cytoscape.cjs.js31287 var getSourceLabelRotationPoint = function getSourceLabelRotationPoint(ele) {CODE
LOW⚡documentation/js/cytoscape.cjs.js31290 var getTargetLabelRotationPoint = function getTargetLabelRotationPoint(ele) {CODE
LOW⚡documentation/js/cytoscape.cjs.js31296 var getSourceLabelRotationOffset = function getSourceLabelRotationOffset(ele) {CODE
LOW⚡documentation/js/cytoscape.cjs.js31299 var getTargetLabelRotationOffset = function getTargetLabelRotationOffset(ele) {CODE
LOWdocumentation/js/cytoscape.cjs.js3366var roundRectangleIntersectLine = function roundRectangleIntersectLine(x, y, nodeX, nodeY, width, height, padding) {CODE
LOWdocumentation/js/cytoscape.cjs.js3940var roundPolygonIntersectLine = function roundPolygonIntersectLine(x, y, basePoints, centerX, centerY, width, height, paCODE
LOWdocumentation/js/cytoscape.cjs.js3989var generateUnitNgonPointsFitToSquare = function generateUnitNgonPointsFitToSquare(sides, rotationRadians) {CODE
LOWdocumentation/js/cytoscape.cjs.js4052var getCutRectangleCornerLength = function getCutRectangleCornerLength() {CODE
LOWdocumentation/js/cytoscape.cjs.js4210 degreeCentralityNormalized: function degreeCentralityNormalized(options) {CODE
LOWdocumentation/js/cytoscape.cjs.js4352 closenessCentralityNormalized: function closenessCentralityNormalized(options) {CODE
LOWdocumentation/js/cytoscape.cjs.js5938var hopcroftTarjanBiconnected = function hopcroftTarjanBiconnected() {CODE
LOWdocumentation/js/cytoscape.cjs.js9899function defineDegreeBoundsFunction(degreeFn, callback) {CODE
LOWdocumentation/js/cytoscape.cjs.js12388function cachePrototypeStyleFunction(key, fn) {CODE
LOWdocumentation/js/cytoscape.cjs.js12393 return function cachedPrototypeStyleFunction() {CODE
LOWdocumentation/js/cytoscape.cjs.js12664function defineDerivedStateFunction(specs) {CODE
LOWdocumentation/js/cytoscape.cjs.js13158function defineParallelEdgesFunction(params) {CODE
LOWdocumentation/js/cytoscape.cjs.js14158 function springAccelerationForState(state) {CODE
LOWdocumentation/js/cytoscape.cjs.js14161 function springEvaluateStateWithDerivative(initialState, dt, derivative) {CODE
LOWdocumentation/js/cytoscape.cjs.js16132 function removeSelAndBlockFromRemaining() {CODE
LOWdocumentation/js/cytoscape.cjs.js24485 var updateAncestorsInDragLayer = function updateAncestorsInDragLayer(node, opts) {CODE
LOWdocumentation/js/cytoscape.cjs.js26269 getOrCreateCorners: function getOrCreateCorners(centerX, centerY, width, height, cornerRadius, rs, field) {CODE
LOWdocumentation/js/cytoscape.cjs.js26426 var approximateBarrelCurvePts = function approximateBarrelCurvePts(pts) {CODE
LOWdocumentation/js/cytoscape.cjs.js27007 function ElementTextureCacheLookup(getKey) {CODE
LOWdocumentation/js/cytoscape.cjs.js31219 var backgroundTimestampHasChanged = function backgroundTimestampHasChanged(ele) {CODE
LOWtests-examples/demo-todo-app.spec.js425 async function checkNumberOfTodosInLocalStorage(page, expected) {CODE
LOWtests-examples/demo-todo-app.spec.js435 async function checkNumberOfCompletedTodosInLocalStorage(page, expected) {CODE
Over-Commented Block9 hits · 8 pts
SeverityFileLineSnippetContext
LOWplaywright.config.js41 },COMMENT
LOWdocumentation/js/cytoscape.cjs.js15341 _p.hasPie = null;COMMENT
LOWdocumentation/js/cytoscape.cjs.js19901 // Easing of the animation for animate:'end'COMMENT
LOWdocumentation/js/cytoscape.cjs.js21521BRp$f.arrowShapeWidth = 0.3;COMMENT
LOW.github/workflows/release.yml1name: ReleaseCOMMENT
LOWdebug/style.css1body { font: 14pt helvetica; width: 100%; -webkit-text-size-adjust: 100%; margin: 0; padding: 0; height: 100%; width: 10COMMENT
LOWdebug/webgl/init.js261 // duration: 1000COMMENT
LOWdebug/webgl/style.css1body { font: 14pt helvetica; width: 100%; -webkit-text-size-adjust: 100%; margin: 0; padding: 0; height: 100%; width: 10COMMENT
LOWdebug/webgl/networks.js61 // url: 'network-ndex-large.json',COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOW⚡documentation/js/cytoscape.cjs.js4996 // TODO: implement a seeded random number generator.COMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWdebug/webgl/network-styles.json72 "label": "n3 - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod",CODE
LOWdebug/webgl/network-styles.json72 "label": "n3 - Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod",CODE