AI Slop Code Risk Monitor

apollographql/apollo-server

SlopCodeMonitor badge for apollographql/apollo-server Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

🌍  Spec-compliant and production ready JavaScript GraphQL server that lets you develop in a schema-first way. Built for Express, Connect, Hapi, Koa, and more.

2.2 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for apollographql/apollo-server, a TypeScript project with 13,958 GitHub stars. SynthScan examined 52,250 lines of code across 209 source files, recording 100 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 2.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.

2.2
Adjusted Signal
2.2
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
14.0K
Stars
TypeScript
Language
52.2K
Lines of Code
209
Files
100
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 10.4/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 98 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 4.8/100 · LOW

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

PR Review Velocity Impact 10.5/100 · LOW

Which changes need focused human review? 100 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 2MEDIUM 3LOW 95

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

Hyper-Verbose Identifiers49 hits · 52 pts
SeverityFileLineSnippetContext
LOWpackages/integration-testsuite/src/httpSpecTests.ts8export function defineIntegrationTestSuiteHttpSpecTests(CODE
LOWpackages/integration-testsuite/src/apolloServerTests.ts164export function defineIntegrationTestSuiteApolloServerTests(CODE
LOWpackages/integration-testsuite/src/apolloServerTests.ts2379 async function makeFakeUsageReportingServer({CODE
LOWpackages/integration-testsuite/src/apolloServerTests.ts2584 function createApolloFetchAsIfFromGateway(uri: string): ApolloFetch {CODE
LOWpackages/integration-testsuite/src/httpServerTests.ts268export function defineIntegrationTestSuiteHttpServerTests(CODE
LOWpackages/integration-testsuite/src/index.ts27export function defineIntegrationTestSuite(CODE
LOWpackages/server/src/runHttpQuery.ts37function searchParamIfSpecifiedOnce(CODE
LOWpackages/server/src/runHttpQuery.ts54function jsonParsedSearchParamIfSpecifiedOnce(CODE
LOWpackages/server/src/runHttpQuery.ts99function ensureQueryIsStringOrMissing(query: unknown) {CODE
LOWpackages/server/src/runHttpQuery.ts369function orderExecutionResultFields(CODE
LOWpackages/server/src/requestPipeline.ts88function isBadUserInputGraphQLError(error: GraphQLError): boolean {CODE
LOWpackages/server/src/ApolloServer.ts1429export function chooseContentTypeForSingleResultResponse(CODE
LOW…ckages/server/src/plugin/subscriptionCallback/index.ts20export function ApolloServerPluginSubscriptionCallback(CODE
LOWpackages/server/src/plugin/cacheControl/index.ts55export function ApolloServerPluginCacheControl(CODE
LOWpackages/server/src/plugin/cacheControl/index.ts102 function memoizedCacheAnnotationFromType(CODE
LOWpackages/server/src/plugin/cacheControl/index.ts114 function memoizedCacheAnnotationFromField(CODE
LOWpackages/server/src/plugin/cacheControl/index.ts350function parseExistingCacheControlHeader(CODE
LOWpackages/server/src/plugin/cacheControl/index.ts372function cacheAnnotationFromDirectives(CODE
LOWpackages/server/src/plugin/inlineTrace/index.ts47export function ApolloServerPluginInlineTrace(CODE
LOW…src/plugin/usageReporting/operationDerivedDataCache.ts10export function createOperationDerivedDataCache({CODE
LOW…src/plugin/usageReporting/operationDerivedDataCache.ts56export function operationDerivedDataCacheKey(CODE
LOWpackages/server/src/plugin/usageReporting/plugin.ts221 function executableSchemaIdForSchema(schema: GraphQLSchema) {CODE
LOWpackages/server/src/plugin/usageReporting/plugin.ts237 async function sendAllReportsAndReportErrors(): Promise<void> {CODE
LOWpackages/server/src/plugin/usageReporting/plugin.ts245 async function sendReportAndReportErrors(CODE
LOWpackages/server/src/plugin/usageReporting/plugin.ts423 async function maybeCallIncludeRequestHook(CODE
LOW…kages/server/src/plugin/usageReporting/traceDetails.ts75function handleVariableValueTransformError(CODE
LOW…/plugin/usageReporting/defaultSendOperationsAsTrace.ts6export function defaultSendOperationsAsTrace() {CODE
LOW⚡packages/server/src/plugin/disabled/index.ts23export function ApolloServerPluginCacheControlDisabled(): ApolloServerPlugin<BaseContext> {CODE
LOW⚡packages/server/src/plugin/disabled/index.ts27export function ApolloServerPluginInlineTraceDisabled(): ApolloServerPlugin<BaseContext> {CODE
LOW⚡packages/server/src/plugin/disabled/index.ts31export function ApolloServerPluginLandingPageDisabled(): ApolloServerPlugin<BaseContext> {CODE
LOW⚡packages/server/src/plugin/disabled/index.ts35export function ApolloServerPluginSchemaReportingDisabled(): ApolloServerPlugin<BaseContext> {CODE
LOW⚡packages/server/src/plugin/disabled/index.ts39export function ApolloServerPluginUsageReportingDisabled(): ApolloServerPlugin<BaseContext> {CODE
LOWpackages/server/src/plugin/schemaReporting/index.ts60export function ApolloServerPluginSchemaReporting(CODE
LOWpackages/server/src/plugin/drainHttpServer/index.ts27export function ApolloServerPluginDrainHttpServer(CODE
LOWpackages/server/src/plugin/landingPage/default/index.ts23export function ApolloServerPluginLandingPageLocalDefault(CODE
LOWpackages/server/src/plugin/landingPage/default/index.ts38export function ApolloServerPluginLandingPageProductionDefault(CODE
LOWpackages/server/src/plugin/disableSuggestions/index.ts4export function ApolloServerPluginDisableSuggestions(): ApolloServerPlugin {CODE
LOWpackages/server/src/utils/schemaInstrumentation.ts46export function pluginsEnabledForSchemaResolvers(CODE
LOWpackages/server/src/__tests__/runQuery.test.ts1037 function createLifecyclePluginMocks() {CODE
LOWpackages/server/src/__tests__/runQuery.test.ts1141 function cacheRepresentationOfQuery(query: string): string {CODE
LOW…rc/__tests__/plugin/subscriptionCallback/index.test.ts2151function mockRouterCheckResponseWithError(opts?: {CODE
LOW…rc/__tests__/plugin/subscriptionCallback/index.test.ts2213function mockRouterCompleteResponse(requestOpts?: {CODE
LOW…ests__/plugin/cacheControl/collectCacheControlHints.ts10export async function collectCacheControlHintsAndPolicyIfCacheable(CODE
LOW…c/__tests__/plugin/cacheControl/cacheControlSupport.ts8export function augmentTypeDefsWithCacheControlSupport(typeDefs: string) {CODE
LOW…c/__tests__/plugin/cacheControl/cacheControlSupport.ts25export function buildSchemaWithCacheControlSupport(source: string) {CODE
LOW…c/__tests__/plugin/cacheControl/cacheControlSupport.ts29export function makeExecutableSchemaWithCacheControlSupport(CODE
LOW…ver/src/__tests__/plugin/usageReporting/plugin.test.ts311 function containsFieldExecutionData(CODE
LOW…server/src/validationRules/RecursiveSelectionsLimit.ts157export function createMaxRecursiveSelectionsRule(CODE
LOWpackages/cache-control-types/src/index.ts79export function maybeCacheControlFromInfo(CODE
Over-Commented Block44 hits · 44 pts
SeverityFileLineSnippetContext
LOW.gitleaks.toml1# This file exists primarily to influence scheduled scans that Apollo runs of all repos in Apollo-managed orgs.COMMENT
LOWsmoke-test/smoke-test.sh41node generated/tsc/smoke-test.mjsCOMMENT
LOWpackages/integration-testsuite/src/httpSpecTests.ts41 }COMMENT
LOWpackages/integration-testsuite/src/resolvable.ts1// Copyright 2019 Joseph GentleCOMMENT
LOWpackages/server/src/internalPlugin.ts1import type { BaseContext, ApolloServerPlugin } from './externalTypes/index.js';COMMENT
LOWpackages/server/src/preventCsrf.ts1import MIMEType from 'whatwg-mimetype';COMMENT
LOWpackages/server/src/preventCsrf.ts21const NON_PREFLIGHTED_CONTENT_TYPES = [COMMENT
LOWpackages/server/src/preventCsrf.ts41// content types. For those operations, we require (if this feature is enabled)COMMENT
LOWpackages/server/src/preventCsrf.ts61 // actually *ok* because that would lead to a preflight. (For example, theCOMMENT
LOWpackages/server/src/requestPipeline.ts281 return await sendErrorResponse(COMMENT
LOWpackages/server/src/requestPipeline.ts481 // The first thing that execution does is coerce the request's variablesCOMMENT
LOWpackages/server/src/ApolloServer.ts181 legacyExperimentalExecuteIncrementally?: LegacyExperimentalExecuteIncrementally;COMMENT
LOWpackages/server/src/ApolloServer.ts381 'The `status400ForVariableCoercionErrors: false` configuration option is deprecated and will be removed in ApoCOMMENT
LOWpackages/server/src/ApolloServer.ts401 // Apollo Server 3+ the functions like `expressMiddleware` use `assertStarted`COMMENT
LOWpackages/server/src/ApolloServer.ts621 process.on(signal, signalHandler);COMMENT
LOWpackages/server/src/ApolloServer.ts681 }.'`,COMMENT
LOWpackages/server/src/ApolloServer.ts761 // missing/undefined means use the default (creating a new one eachCOMMENT
LOWpackages/server/src/ApolloServer.ts1001 // this if an API key was configured and log a warning.)COMMENT
LOWpackages/server/src/ApolloServer.ts1341 logger: server.logger,COMMENT
LOWpackages/server/src/externalTypes/plugins.ts81 // Called on startup fail. This can occur if the schema fails to load or if aCOMMENT
LOWpackages/server/src/plugin/traceTreeBuilder.ts81 }COMMENT
LOWpackages/server/src/plugin/traceTreeBuilder.ts101 //COMMENT
LOWpackages/server/src/plugin/traceTreeBuilder.ts281 return err;COMMENT
LOWpackages/server/src/plugin/schemaIsSubgraph.ts1import {COMMENT
LOWpackages/server/src/plugin/cacheControl/index.ts221 // (uncached) or the default if specified in the constructor.COMMENT
LOWpackages/server/src/plugin/cacheControl/index.ts301 policyIfCacheable &&COMMENT
LOW…src/plugin/usageReporting/operationDerivedDataCache.ts21 },COMMENT
LOWpackages/server/src/plugin/usageReporting/plugin.ts141COMMENT
LOWpackages/server/src/plugin/usageReporting/plugin.ts501 requestContext.operation === undefined;COMMENT
LOWpackages/server/src/plugin/usageReporting/stats.ts21// interface is what is accepted as input. We build up our messages using customCOMMENT
LOWpackages/server/src/plugin/usageReporting/stats.ts301COMMENT
LOW…/plugin/usageReporting/defaultSendOperationsAsTrace.ts1import { LRUCache } from 'lru-cache';COMMENT
LOWpackages/server/src/plugin/drainHttpServer/stoppable.ts1// This file is adapted from the stoppable npm package:COMMENT
LOW…s/server/src/utils/makeGatewayGraphQLRequestContext.ts21// exist any more.COMMENT
LOW…s/server/src/utils/makeGatewayGraphQLRequestContext.ts41//COMMENT
LOW…s/server/src/utils/makeGatewayGraphQLRequestContext.ts61// Similarly, it's not clear what the intended use case of mutating `debug` inCOMMENT
LOWpackages/server/src/utils/resolvable.ts1// Copyright 2019 Joseph GentleCOMMENT
LOW…src/__tests__/plugin/drainHttpServer/stoppable.test.ts1// This file is adapted from the stoppable npm package:COMMENT
LOWpackages/cache-control-types/src/index.ts61 extends Omit<GraphQLResolveInfo, 'cacheControl'> {COMMENT
LOW…-response-cache/src/ApolloServerPluginResponseCache.ts21 // JSON object with keys representing the query document, operation name,COMMENT
LOW…-response-cache/src/ApolloServerPluginResponseCache.ts41 // - Else it will be cached under a cache key tagged with the modeCOMMENT
LOW…-response-cache/src/ApolloServerPluginResponseCache.ts61 // Note: this hook has been updated in Apollo Server v4 to only return aCOMMENT
LOW…-response-cache/src/ApolloServerPluginResponseCache.ts81COMMENT
LOW…-response-cache/src/ApolloServerPluginResponseCache.ts301 if (errors || !data || !policyIfCacheable) {COMMENT
Synthetic Comment Markers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHCHANGELOG_historical.md1202- Add support for GraphiQL editor themes in [#484](https://github.com/apollographql/apollo-server/pull/484) as requestedCODE
HIGHCHANGELOG_historical.md1202- Add support for GraphiQL editor themes in [#484](https://github.com/apollographql/apollo-server/pull/484) as requestedCODE
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM.gitleaks.toml12# or wasn't as robust as we needed. For example, one of the allowlisting options offered by Gitleaks depends on the lineCOMMENT
MEDIUM.gitleaks.toml14# This creates a fairly fragile allowlisting mechanism. This file allows us to leverage the full capabilities of the GitCOMMENT
MEDIUMpackages/server/src/requestPipeline.ts216 // utilize the operation's hash to lookup the AST from the previouslyCOMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWdocs/source/schema/schema.md557 "name": "Jane Doe",CODE
LOWdocs/source/schema/schema.md606 "name": "Jane Doe",CODE