AI Slop Code Risk Monitor

platformatic/platformatic

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

Platformatic Open Source monorepo!

0.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for platformatic/platformatic, a JavaScript project with 2,134 GitHub stars. SynthScan examined 370,919 lines of code across 1430 source files, recording 247 pattern matches distributed across 9 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-31
Last Push
2.1K
Stars
JavaScript
Language
370.9K
Lines of Code
1.4K
Files
247
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? 245 finding(s).

Hallucinated Dependency & Supply Chain Risk 0.2/100 · LOW

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

Agent Over-Engineering Ratio 2.8/100 · LOW

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

PR Review Velocity Impact 3.6/100 · LOW

Which changes need focused human review? 247 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 1HIGH 1MEDIUM 7LOW 238

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 247 distinct pattern matches across 9 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 Identifiers191 hits · 212 pts
SeverityFileLineSnippetContext
LOWdocs/guides/build-modular-monolith.md917function buildOnGatewayResponseCallback (peopleProps) {CODE
LOWpackages/wattpm-pprof-capture/index.js105function scheduleLastProfileCleanup (state) {CODE
LOWpackages/wattpm-pprof-capture/index.js119function unscheduleLastProfileCleanup (state) {CODE
LOWpackages/wattpm-pprof-capture/index.js137function unscheduleProfileRotation (state) {CODE
LOWpackages/wattpm-pprof-capture/test/sourcemap.test.js25function verifyTypeScriptFilesInProfile (profile) {CODE
LOW…es/wattpm-pprof-capture/lib/node-modules-sourcemaps.js186export async function loadNodeModulesSourceMaps (appPath, moduleNames, debug = false) {CODE
LOWpackages/globals/lib/index.js78export function getAdditionalServerOptions (options) {CODE
LOWpackages/globals/lib/index.js190export function getOnActiveResourcesEventLoop (options) {CODE
LOW⚡packages/globals/lib/index.d.ts208export declare function getAdditionalServerOptions (options?: RequiredGlobalGetterOptions): PlatformaticGlobal['additionCODE
LOW⚡packages/globals/lib/index.d.ts209export declare function getAdditionalServerOptions (options: OptionalGlobalGetterOptions): PlatformaticGlobal['additionaCODE
LOW⚡packages/globals/lib/index.d.ts210export declare function getAdditionalServerOptions (options: GlobalGetterOptions): PlatformaticGlobal['additionalServerOCODE
LOW⚡packages/globals/lib/index.d.ts292export declare function getOnActiveResourcesEventLoop (options?: RequiredGlobalGetterOptions): PlatformaticGlobal['onActCODE
LOW⚡packages/globals/lib/index.d.ts293export declare function getOnActiveResourcesEventLoop (options: OptionalGlobalGetterOptions): PlatformaticGlobal['onActiCODE
LOW⚡packages/globals/lib/index.d.ts294export declare function getOnActiveResourcesEventLoop (options: GlobalGetterOptions): PlatformaticGlobal['onActiveResourCODE
LOWpackages/metrics/index.js179function getHttpClientRequestOrigin (request) {CODE
LOWpackages/metrics/index.js187function isHttpClientMetricsEnabled (metricsConfig) {CODE
LOWpackages/metrics/index.js407export function collectEluAndSystemCpuMetrics (registry) {CODE
LOWpackages/next/test/compatibility/compatibility.test.js40async function verifyDevelopmentMiddlewareContext (t, configuration) {CODE
LOWpackages/next/test/integration/development.test.js33export async function verifyDevelopmentFrontendWithExternalProxy (CODE
LOWpackages/next/test/caching/helper.js12export async function prepareRuntimeWithBackend (CODE
LOWpackages/next/lib/standalone.js7export async function resolveStandaloneEntrypoint (root) {CODE
LOWpackages/next/lib/standalone.js31export async function parseStandaloneNextConfig (serverEntrypoint) {CODE
LOWpackages/next/lib/standalone.js41export function requireStandaloneStartServer (serverEntrypoint) {CODE
LOWpackages/next/lib/pack.js76export async function materializeRuntimeDependencies ({ bundleRoot, logger }) {CODE
LOWpackages/next/lib/pack.js149function listWorkspaceDependencies (packageJson) {CODE
LOWpackages/next/lib/pack.js197function resolvePackageJsonFromSearchPaths (require, name) {CODE
LOWpackages/next/lib/pack.js229function resolveWorkspacePackageRoot (name) {CODE
LOWpackages/next/lib/pack.js437export async function ensurePortableNodeModules (bundleRoot) {CODE
LOWpackages/next/lib/loader.js25function createEvaluatorWrapperFunction (original) {CODE
LOWpackages/sql-openapi/test/ignore.test.js31async function createUsersWithPasswordHash (db, sql) {CODE
LOWpackages/sql-openapi/lib/utils.js3function removeOperationPropertiesFromOpenApiPathItem (pathItem) {CODE
LOWpackages/sql-openapi/lib/utils.js14export function getSchemaOverrideFromOpenApiPathItem (pathItem, method) {CODE
LOW⚡packages/tanstack/test/production.test.js22function verifyFrontendWithBundleOnRoot (t, url) {CODE
LOW⚡packages/tanstack/test/production.test.js26async function verifyFrontendWithBundleOnPrefix (t, url) {CODE
LOW⚡packages/tanstack/test/production.test.js33async function verifyFrontendWithBundleOnAutodetectedPrefix (t, url) {CODE
LOWpackages/create-wattpm/test/cli/helper.js54export async function executeCreatePlatformatic (dir, options = {}) {CODE
LOWpackages/create-wattpm/lib/utils.js103 async function resolveWorkspaceDependency (dependencyName) {CODE
LOWpackages/create-wattpm/lib/utils.js122export function convertApplicationNameToPrefix (applicationName) {CODE
LOWpackages/sql-json-schema-mapper/index.js61function mapSQLTypeToOpenAPISchema (field, output) {CODE
LOWpackages/sql-json-schema-mapper/test/simple.test.js43async function createBasicGeneratedTests (db, sql) {CODE
LOWpackages/runtime/test/pprof-auto-detection.test.js9function isWattpmPprofCapturePreloaded (preload) {CODE
LOWpackages/runtime/test/scheduler-control.test.js12async function createRuntimeWithScheduler (t, scheduler, { managementApi = false } = {}) {CODE
LOW…ages/runtime/test/worker-interceptor-rejection.test.js25function captureUnhandledRejections (t) {CODE
LOWpackages/runtime/test/opentelemetry-metrics.test.js11async function testOpenTelemetryMetricsForwarding (t, fixture) {CODE
LOWpackages/runtime/test/scheduler.test.js13async function createRuntimeWithScheduler (t, scheduler) {CODE
LOWpackages/runtime/test/base-path.test.js11async function startApplicationWithEntrypoint (t, fixture, entrypoint) {CODE
LOWpackages/runtime/test/api/metrics.test.js10function findPrometheusLinesForMetric (metric, output) {CODE
LOW…kages/runtime/test/api/metrics-label-collision.test.js9function createRuntimeWithCollidingLabels (t) {CODE
LOW…/runtime/test/multiple-workers/per-worker-port.test.js31async function getOccupiedPortWithAvailablePreviousPort () {CODE
LOW…/runtime/test/multiple-workers/per-worker-port.test.js50async function preparePerWorkerPortRuntime (CODE
LOWpackages/runtime/lib/config.js313function conflictingApplicationSource (root, resolvedApplicationsPath, existing, entryPath) {CODE
LOWpackages/runtime/lib/prom-server.js116function isHealthProbesServerEnabled (healthProbes) {CODE
LOWpackages/runtime/lib/prom-server.js145function resolveHealthProbesOptions (metricsOpts, healthProbes) {CODE
LOWpackages/runtime/lib/prom-server.js162async function registerExtensionHealthRoutes (promServer, runtime) {CODE
LOWpackages/runtime/lib/policies.js1export function createChannelCreationHook (config) {CODE
LOWpackages/runtime/lib/generator.js34function getRuntimeWrappableProperties (skipServer) {CODE
LOWpackages/runtime/lib/worker/health-signals.js95export function startEventLoopDelayMonitor (sendHealthSignal, options = {}) {CODE
LOWpackages/runtime/lib/worker/health-signals.js112 return function stopEventLoopDelayMonitor () {CODE
LOWpackages/runtime/lib/worker/interceptors.js23export function markAsPlatformaticDispatcher (dispatcher) {CODE
LOWpackages/runtime/lib/worker/interceptors.js126function createUpdatableInterceptor (originInterceptor) {CODE
131 more matches not shown…
Structural Annotation Overuse28 hits · 42 pts
SeverityFileLineSnippetContext
LOWdocs/learn/beginner/environment-variables.md23## Step 1: Understanding Variable ReplacementCOMMENT
LOWdocs/learn/beginner/environment-variables.md47## Step 2: Using .env Files for Local DevelopmentCOMMENT
LOWdocs/learn/beginner/environment-variables.md66## Step 3: Setting Variables from Command LineCOMMENT
LOWdocs/learn/beginner/environment-variables.md80## Step 4: Environment-Specific ConfigurationCOMMENT
LOWdocs/learn/beginner/environment-variables.md108## Step 5: Common Configuration PatternsCOMMENT
LOWdocs/learn/beginner/crud-application.md62## Step 1: Add Your First Application to WattCOMMENT
LOWdocs/learn/beginner/crud-application.md103## Step 2: Define Your Application's Data SchemaCOMMENT
LOWdocs/learn/beginner/crud-application.md298## Step 3: Explore Your Application's Auto-Generated APICOMMENT
LOWdocs/learn/beginner/crud-application.md312## Step 4: Experience Watt's Unified Development EnvironmentCOMMENT
LOWdocs/learn/beginner/crud-application.md372## Step 5: Prepare for Multi-Application ArchitectureCOMMENT
LOWdocs/guides/use-watt-multiple-repository.md39## Step 1: Create Your ProjectCOMMENT
LOWdocs/guides/use-watt-multiple-repository.md83## Step 2: Configure Multi-Repository ApplicationsCOMMENT
LOWdocs/guides/use-watt-multiple-repository.md142## Step 3: Configure Environment VariablesCOMMENT
LOWdocs/guides/use-watt-multiple-repository.md196## Step 4: Resolve and Run ApplicationsCOMMENT
LOWdocs/guides/use-watt-multiple-repository.md240## Step 5: Verification and TestingCOMMENT
LOWdocs/guides/use-watt-with-ts-node.md148### Step 1: Install DependenciesCOMMENT
LOWdocs/guides/use-watt-with-ts-node.md155### Step 2: Create Watt ConfigurationCOMMENT
LOWdocs/guides/use-watt-with-ts-node.md193### Step 3: Update Package.jsonCOMMENT
LOWdocs/guides/cache-with-platformatic-watt.md123## Step 1: Setup Fastify and Enable HTTP CacheCOMMENT
LOWdocs/guides/cache-with-platformatic-watt.md182## Step 2: Add Multiple Services for DemonstrationCOMMENT
LOWdocs/guides/cache-with-platformatic-watt.md212## Step 3: Add Cache Headers to Your ResponsesCOMMENT
LOWdocs/guides/cache-with-platformatic-watt.md312## Step 4: Configure the GatewayCOMMENT
LOWdocs/guides/cache-with-platformatic-watt.md348## Step 5: Enable HTTP Cache in WattCOMMENT
LOWdocs/guides/cache-with-platformatic-watt.md415## Step 6: Implement Cache InvalidationCOMMENT
LOWdocs/guides/cache-with-platformatic-watt.md535## Step 7: Verification and TestingCOMMENT
LOWdocs/guides/deployment/dockerize-a-watt-app.md21## Step 1: Configure Your Application for ContainersCOMMENT
LOWdocs/guides/deployment/dockerize-a-watt-app.md43## Step 2: Create Your DockerfileCOMMENT
LOWdocs/guides/deployment/dockerize-a-watt-app.md99## Step 3: Build and Run Your ContainerCOMMENT
Over-Commented Block17 hits · 17 pts
SeverityFileLineSnippetContext
LOWscripts/license-check.js1#!/usr/bin/env nodeCOMMENT
LOW…ages/runtime/test/worker-interceptor-rejection.test.js1import { deepStrictEqual, ok } from 'node:assert'COMMENT
LOWpackages/runtime/lib/runtime.js181 #loggerDestinationCOMMENT
LOWpackages/runtime/lib/runtime.js201 #healthMetricsTimerCOMMENT
LOWpackages/runtime/lib/runtime.js221 #extensionsCOMMENT
LOWpackages/runtime/lib/runtime.js2741 // The main thread drives it based on the ELU measured by the healthCOMMENT
LOWpackages/runtime/lib/runtime.js2881 this.#workers.set(workerId, worker)COMMENT
LOWpackages/runtime/lib/runtime.js3021 // Reschedule the next check. We are not using .refresh() because it's moreCOMMENT
LOWpackages/runtime/lib/worker-scaler.js21 #maxWorkersCOMMENT
LOWpackages/basic/lib/worker/child-manager.js41COMMENT
LOWpackages/db-core/index.js41COMMENT
LOWpackages/db-core/index.js61 // {COMMENT
LOWpackages/nuxt/lib/dev-ready.js1// Runs inside the spawned `nuxt dev` child process (either the built-in developmentCOMMENT
LOWpackages/generators/test/base-generator.test.js541 })COMMENT
LOWpackages/node/lib/capability.js121export class NodeCapability extends BaseCapability {COMMENT
LOWpackages/gateway/lib/graphql-fetch.js1import { compose } from '@platformatic/graphql-composer'COMMENT
LOWpackages/gateway/lib/capability.js101 }COMMENT
Modern AI Meta-Vocabulary5 hits · 13 pts
SeverityFileLineSnippetContext
MEDIUMdocs/guides/use-watt-multiple-repository.md127├── my-microapplications-app/ # Main orchestration appCODE
MEDIUM…rate-frontend-code-to-consume-platformatic-rest-api.md50Refer to the [Scaffolding Your First Vite Project](https://vitejs.dev/guide/#scaffolding-your-first-vite-project) documeCODE
MEDIUMdocs/skills/watt/references/wattpm-cli.md51## Existing scaffolding and dependency workflowsCOMMENT
MEDIUMdocs/overview/comparison-with-alternatives.md426# Convert each microservice to Watt serviceCOMMENT
MEDIUMdocs/overview/comparison-with-alternatives.md427# Keep existing business logic, change orchestrationCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALpackages/gateway/lib/root.js47 app.platformatic.config.gateway.applications.forEach(s => {CODE
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM…ime/test/gateway-restart-on-application-change.test.js15// with two or more workers and SO_REUSEPORT the restart is seamless — but withCOMMENT
MEDIUMpackages/gateway/lib/capability.js117 // seamless; with ONE — the default, and forced wherever reusePort isCOMMENT
Magic Placeholder Names1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHdocs/guides/datadog.md58DD_API_KEY=replace-with-your-api-keyCODE
Verbosity Indicators1 hit · 2 pts
SeverityFileLineSnippetContext
LOWpackages/db-authorization/index.js168 // If we have `fields` in save rules, we need to check if all the not-nullableCOMMENT
Slop Phrases1 hit · 1 pts
SeverityFileLineSnippetContext
LOWpackages/basic/lib/modules.js87 logger.warn(`Also don't forget to add "${moduleName}" to the application dependencies.`)CODE