AI Slop Code Risk Monitor

openlayers/openlayers

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

OpenLayers

0.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for openlayers/openlayers, a JavaScript project with 12,639 GitHub stars. SynthScan examined 333,561 lines of code across 1829 source files, recording 122 pattern matches distributed across 5 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-26
Last Push
12.6K
Stars
JavaScript
Language
333.6K
Lines of Code
1.8K
Files
122
Pattern Hits
2026-10-31
Scan Date
0.01
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.6/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 2.3/100 · LOW

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

Agent Over-Engineering Ratio 1.5/100 · LOW

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

PR Review Velocity Impact 3.4/100 · LOW

Which changes need focused human review? 122 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 12HIGH 0MEDIUM 1LOW 109

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 122 distinct pattern matches across 5 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.

Hallucination Indicators12 hits · 155 pts
SeverityFileLineSnippetContext
CRITICAL⚡test/browser/spec/ol/renderer/webgl/VectorLayer.test.js389 renderer.batch_.addFeature.mock.calls.some(CODE
CRITICAL⚡test/browser/spec/ol/renderer/webgl/VectorLayer.test.js399 renderer.batch_.changeFeature.mock.calls.some(CODE
CRITICAL⚡test/browser/spec/ol/renderer/webgl/VectorLayer.test.js409 renderer.batch_.removeFeature.mock.calls.some(CODE
CRITICALtest/browser/spec/ol/renderer/webgl/VectorLayer.test.js559 const calls = renderer.helper.setUniformMatrixValue.mock.calls.filter(CODE
CRITICALtest/browser/spec/ol/renderer/webgl/VectorLayer.test.js574 const calls = renderer.helper.setUniformMatrixValue.mock.calls.filter(CODE
CRITICALtest/browser/spec/ol/renderer/webgl/VectorLayer.test.js588 const calls = renderer.helper.setUniformFloatVec2.mock.calls.filter(CODE
CRITICALtest/browser/spec/ol/renderer/webgl/VectorLayer.test.js604 const calls = renderer.helper.setUniformFloatVec2.mock.calls.filter(CODE
CRITICAL⚡…browser/spec/ol/renderer/webgl/VectorTileLayer.test.js456 const calls = renderer.helper.setUniformFloatValue.mock.calls.filter(CODE
CRITICAL⚡…browser/spec/ol/renderer/webgl/VectorTileLayer.test.js466 const calls = renderer.helper.setUniformFloatValue.mock.calls.filter(CODE
CRITICAL⚡…browser/spec/ol/renderer/webgl/VectorTileLayer.test.js476 const calls = renderer.helper.setUniformFloatVec4.mock.calls.filter(CODE
CRITICAL⚡…browser/spec/ol/renderer/webgl/VectorTileLayer.test.js486 const calls = renderer.helper.setUniformMatrixValue.mock.calls.filter(CODE
CRITICAL…browser/spec/ol/renderer/webgl/VectorTileLayer.test.js516 const calls = renderer.helper.setUniformMatrixValue.mock.calls.filter(CODE
Hyper-Verbose Identifiers98 hits · 98 pts
SeverityFileLineSnippetContext
LOWtest/util/equal.js52export function assertAttributeDescriptors(actual, expected) {CODE
LOWtest/browser/spec/ol/renderer/canvas/builder.test.js433 function executeHitDetectionForCoordinate(CODE
LOWtest/browser/spec/ol/source/Zoomify.test.js25 function getZoomifySourceWithExtentInFirstQuadrant() {CODE
LOWtest/rendering/test.js106function getExpectedScreenshotPath(entry) {CODE
LOWsrc/ol/reproj.js58function verifyBrokenDiagonalRendering(data, offset) {CODE
LOWsrc/ol/reproj.js76function isBrokenDiagonalRendering() {CODE
LOWsrc/ol/reproj.js107export function calculateSourceResolution(CODE
LOWsrc/ol/reproj.js160export function calculateSourceExtentResolution(CODE
LOWsrc/ol/extent.js234export function createOrUpdateFromCoordinate(coordinate, dest) {CODE
LOWsrc/ol/extent.js245export function createOrUpdateFromCoordinates(coordinates, dest) {CODE
LOWsrc/ol/extent.js258export function createOrUpdateFromFlatCoordinates(CODE
LOWsrc/ol/tileurlfunction.js57export function createFromTileUrlFunctions(tileUrlFunctions) {CODE
LOWsrc/ol/proj.js371export function createTransformFromCoordinateTransform(coordTransform) {CODE
LOWsrc/ol/proj.js508export function getTransformFromProjections(source, destination) {CODE
LOWsrc/ol/proj.js837export function createSafeCoordinateTransform(sourceProj, destProj, transform) {CODE
LOWsrc/ol/View.js2057export function createResolutionConstraint(options) {CODE
LOWsrc/ol/resolutionconstraint.js21function getViewportClampedResolution(CODE
LOWsrc/ol/resolutionconstraint.js48function getSmoothClampedResolution(resolution, maxResolution, minResolution) {CODE
LOWsrc/ol/renderer/vector.js233function renderGeometryCollectionGeometry(CODE
LOWsrc/ol/renderer/vector.js304function renderMultiLineStringGeometry(CODE
LOWsrc/ol/renderer/vector.js345function renderMultiPolygonGeometry(CODE
LOWsrc/ol/renderer/Map.js107 function forEachFeatureAtCoordinate(managed, feature, layer, geometry) {CODE
LOWsrc/ol/renderer/webgl/TileLayerBase.js59export function newTileRepresentationLookup() {CODE
LOWsrc/ol/renderer/webgl/TileLayerBase.js79function addTileRepresentationToLookup(CODE
LOWsrc/ol/renderer/webgl/TileLayerBase.js98function removeTileRepresentationFromLookup(CODE
LOWsrc/ol/source/ogcTileUtil.js124export function appendCollectionsQueryParam(tileUrlTemplate, collections) {CODE
LOWsrc/ol/source/GeoZarr.js1857function getTileGridInfoFromLegacyAttributes(attributes) {CODE
LOWsrc/ol/source/GeoZarr.js2010function getProjectionFromAttributes(attributes) {CODE
LOWsrc/ol/webgl/Helper.js144function getOrCreateContext(key) {CODE
LOWsrc/ol/render/webgl/style.js76function parseCommonSymbolProperties(style, builder, vertContext, prefix) {CODE
LOWsrc/ol/render/webgl/style.js141function getColorFromDistanceField(CODE
LOWsrc/ol/render/webgl/style.js207function parseImageOffsetProperties(CODE
LOWsrc/ol/render/webgl/bufferUtil.js39export function writePointFeatureToBuffers(CODE
LOWsrc/ol/render/webgl/bufferUtil.js104export function writeLineSegmentToBuffers(CODE
LOWsrc/ol/render/webgl/bufferUtil.js211export function writePolygonTrianglesToBuffers(CODE
LOWsrc/ol/render/webgl/compileUtil.js170export function generateUniformsFromContext(context, variables) {CODE
LOWsrc/ol/render/webgl/compileUtil.js210export function generateAttributesFromContext(context) {CODE
LOWsrc/ol/render/webgl/renderinstructions.js19function pushCustomAttributesInRenderInstructions(CODE
LOWsrc/ol/render/webgl/renderinstructions.js89export function generatePointRenderInstructions(CODE
LOWsrc/ol/render/webgl/renderinstructions.js142export function generateLineStringRenderInstructions(CODE
LOWsrc/ol/render/webgl/renderinstructions.js212export function generatePolygonRenderInstructions(CODE
LOWsrc/ol/render/webgl/textUtil.js67export function stripNonTextStyleProperties(style) {CODE
LOWsrc/ol/render/webgl/textUtil.js103export function createPostProcessDefinition(CODE
LOWsrc/ol/render/webgl/textUtil.js300export function convertPolygonRenderInstructionsToCanvasTextBuilder(CODE
LOWsrc/ol/render/webgl/textUtil.js375export function convertLineStringRenderInstructionsToCanvasTextBuilder(CODE
LOWsrc/ol/render/webgl/textUtil.js445export function convertPointRenderInstructionsToCanvasTextBuilder(CODE
LOWsrc/ol/render/canvas/style.js109export function flatStylesToStyleFunction(flatStyles, parsingContext) {CODE
LOWsrc/ol/render/canvas/style.js164export function flatStyleLikeToStyleFunction(flatStyleLike, parsingContext) {CODE
LOWsrc/ol/render/canvas/hitdetect.js35export function createHitDetectionImageData(CODE
LOWsrc/ol/expr/cpu.js267function compileAssertionExpression(expression, context) {CODE
LOWsrc/ol/expr/cpu.js310function compileAccessorExpression(expression, context) {CODE
LOWsrc/ol/expr/cpu.js358function compileComparisonExpression(expression, context) {CODE
LOWsrc/ol/expr/cpu.js589function compileInterpolateExpression(expression, context) {CODE
LOWsrc/ol/expr/gpu.js31function computeOperatorFunctionName(operator, context) {CODE
LOWsrc/ol/expr/gpu.js91export function getStringNumberEquivalent(string) {CODE
LOWsrc/ol/expr/expression.js673function createVarExpressionParser() {CODE
LOWsrc/ol/expr/expression.js1148function createCallExpressionParser(...validators) {CODE
LOWsrc/ol/geom/flat/inflate.js70export function inflateMultiCoordinatesArray(CODE
LOWsrc/ol/geom/flat/deflate.js80export function deflateMultiCoordinatesArray(CODE
LOWsrc/ol/geom/flat/interiorpoint.js88export function getInteriorPointsOfMultiArray(CODE
38 more matches not shown…
Over-Commented Block9 hits · 9 pts
SeverityFileLineSnippetContext
LOWtsconfig.json41 // "paths": {}, /* A series of entries which re-map imports to lookup locations relative tCOMMENT
LOWtasks/changelog.sh1#!/bin/bashCOMMENT
LOWtasks/publish.sh1#!/bin/bashCOMMENT
LOWtest/node/ol/expr/gpu.test.js101 */COMMENT
LOWconfig/tsconfig-build.json1{COMMENT
LOWconfig/tsconfig-build.json21 // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModulCOMMENT
LOWconfig/tsconfig-build.json41 // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */COMMENT
LOWsrc/ol/style/RegularShape.js441 // | \o\ . . . . .COMMENT
LOWsrc/ol/geom/flat/simplify.js1/**COMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtest/browser/spec/ol/control/mouseposition.test.js70 describe('placeholder', function () {CODE
LOWchangelog/v7.5.0.md54 * Optionally show or hide Bing 'placeholder' tiles (by @Shane98c in https://github.com/openlayers/openlayers/pull/14832COMMENT
AI Slop Vocabulary1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMpackage-lock.json8049 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE