AI Slop Code Risk Monitor

ardatan/graphql-mesh

SlopCodeMonitor badge for ardatan/graphql-mesh Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

🕸️ GraphQL Federation Framework for any API services such as REST, OpenAPI, Swagger, SOAP, gRPC and more...

0.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for ardatan/graphql-mesh, a TypeScript project with 3,514 GitHub stars. SynthScan examined 372,665 lines of code across 1378 source files, recording 175 pattern matches distributed across 5 syntactic categories. The legacy adjusted pattern signal is 0.5 (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.5
Adjusted Signal
0.5
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
3.5K
Stars
TypeScript
Language
372.7K
Lines of Code
1.4K
Files
175
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 1.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 1.8/100 · LOW

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

PR Review Velocity Impact 2.5/100 · LOW

Which changes need focused human review? 175 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 0MEDIUM 1LOW 173

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 175 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 Identifiers132 hits · 132 pts
SeverityFileLineSnippetContext
LOWpackages/fusion/composition/tests/transforms/utils.ts26export function composeAndGetPublicSchema(subgraphs: SubgraphConfig[]) {CODE
LOWpackages/fusion/composition/tests/transforms/utils.ts118export function printSortedSchemaWithDirectives(schema: GraphQLSchema) {CODE
LOWpackages/fusion/composition/src/federation-utils.ts31export function importFederationDirectives(subgraph: GraphQLSchema, directives: string[]) {CODE
LOWpackages/fusion/composition/src/federation-utils.ts101export function detectAndAddMeshDirectives(subgraph: GraphQLSchema) {CODE
LOWpackages/fusion/composition/src/federation-utils.ts146export function normalizeDirectiveExtensions(subgraph: GraphQLSchema) {CODE
LOWpackages/fusion/composition/src/compose.ts55export function getUnifiedGraphGracefully(subgraphs: SubgraphConfig[]) {CODE
LOWpackages/fusion/composition/src/compose.ts586export function composeAnnotatedSubgraphs(annotatedSubgraphs: ServiceDefinition[]) {CODE
LOWpackages/fusion/composition/src/compose.ts595function addAnnotationsForSemanticConventions({CODE
LOWpackages/fusion/composition/src/transforms.ts7export function createTypeReplaceTransform(CODE
LOW…fusion/composition/src/transforms/naming-convention.ts58export function createNamingConventionTransform(CODE
LOW…fusion/composition/src/transforms/naming-convention.ts131 return function namingConventionTransform(schema: GraphQLSchema) {CODE
LOW…ckages/fusion/composition/src/transforms/federation.ts221export function createFederationTransform(config: FederationTransformConfig): SubgraphTransform {CODE
LOW…kages/fusion/composition/src/transforms/hoist-field.ts81export function createHoistFieldTransform(opts: CreateHoistFieldTransformOpts): SubgraphTransform {CODE
LOWpackages/fusion/composition/src/transforms/rename.ts286export function createRenameTypeTransform(CODE
LOWpackages/fusion/composition/src/transforms/rename.ts340export function createRenameFieldTransform(CODE
LOW…kages/fusion/composition/src/transforms/encapsulate.ts39export function createEncapsulateTransform(opts: EncapsulateTransformOpts = {}): SubgraphTransform {CODE
LOW…ges/fusion/composition/src/transforms/filter-schema.ts33function compareAndAddInaccessibleDirective(CODE
LOW…incontext-sdk-codegen/src/generateIncontextSDKTypes.ts10async function loadTypeScriptCodegenPlugin(): Promise<typeof GraphQLCodegenTypeScript> {CODE
LOW…incontext-sdk-codegen/src/generateIncontextSDKTypes.ts26function buildSignatureBasedOnRootFields(CODE
LOW…incontext-sdk-codegen/src/generateIncontextSDKTypes.ts87export async function generateIncontextSDKTypes(options: {CODE
LOW…incontext-sdk-codegen/src/generateIncontextSDKTypes.ts179export function generateUnifiedContextTypeFromIdentifiers(identifiers: string[]): string {CODE
LOWpackages/cache/redis/src/iam.ts207export function setupIamAuthRefreshForStandalone(CODE
LOWpackages/plugins/live-query/src/index.ts31 ? function resourceIdentifierFactory({ typename, id }) {CODE
LOW…kages/plugins/operation-field-permissions/src/index.ts6export default function useMeshOperationFieldPermissions(CODE
LOWpackages/plugins/http-details-extensions/src/index.ts33export default function useIncludeHttpDetailsInExtensions(opts: {CODE
LOWpackages/json-machete/src/healUntitledDefinitions.ts1export function handleUntitledDefinitions(schemaDocument: any) {CODE
LOWpackages/transports/neo4j/src/executor.ts120export function getExecutableSchemaFromTypeDefsAndDriver({CODE
LOWpackages/transports/neo4j/src/eventEmitterForPubSub.ts5export function getEventEmitterFromPubSub(pubsub: MeshPubSub) {CODE
LOWpackages/transports/grpc/src/utils.ts138export function addExecutionLogicToScalar(CODE
LOWpackages/transports/grpc/src/index.ts210 return function connectivityStateResolver(_, { tryToConnect }) {CODE
LOWpackages/transports/soap/tests/multi-namespace.spec.ts9function getRequestBodyFromFetchSpy(fetchSpy: jest.Mock): string {CODE
LOWpackages/transports/soap/src/executor.ts54function normalizeArgsForConverter(args: any): any {CODE
LOWpackages/transports/soap/src/executor.ts181function getOrAssignPrefix(CODE
LOWpackages/transports/soap/src/executor.ts614export function createExecutorFromSchemaAST(CODE
LOWpackages/transports/mysql/src/parseEndpointUri.ts6export function getConnectionOptsFromEndpointUri(endpointUri: string) {CODE
LOW…ckages/transports/rest/src/directives/discriminator.ts3export function processDiscriminatorAnnotations({CODE
LOW…ckages/transports/rest/src/directives/discriminator.ts15 interfaceType.resolveType = function discriminatorDirectiveHandler(data) {CODE
LOWpackages/transports/rest/src/directives/scalars.ts34export function addExecutionLogicToScalar(CODE
LOWpackages/transports/rest/src/directives/dictionary.ts3export function processDictionaryDirective(CODE
LOWpackages/transports/rest/src/directives/dictionary.ts7 field.resolve = function dictionaryDirectiveHandler(root) {CODE
LOW…ges/transports/rest/src/directives/resolveRootField.ts11export function processResolveRootFieldAnnotations(CODE
LOWpackages/transports/rest/src/directives/utils.ts44function normalizeArgValueForInterpolation(argValue: any): any {CODE
LOWpackages/transports/rest/src/directives/utils.ts51export function serializeArgumentsForInterpolation(argValue: any, argType: GraphQLInputType) {CODE
LOWpackages/transports/rest/src/directives/resolveRoot.ts7export function processResolveRootAnnotations(field: GraphQLField<any, any>) {CODE
LOW…/rest/src/directives/getTypeResolverForAbstractType.ts9export function getTypeResolverForAbstractType({CODE
LOW…ckages/transports/rest/src/directives/httpOperation.ts27const isListTypeOrNonNullListType = memoize1(function isListTypeOrNonNullListType(CODE
LOW…rts/rest/src/directives/resolveDataByUnionInputType.ts6export function resolveDataByUnionInputType(CODE
LOWpackages/transports/rest/src/directives/flatten.ts3export function processFlattenAnnotations(field: GraphQLField<any, any>) {CODE
LOW…ages/transports/rest/src/directives/pubsubOperation.ts13export function processPubSubOperationAnnotations({CODE
LOW…ransports/rest/src/directives/typescriptAnnotations.ts3export function processTypeScriptAnnotations(type: GraphQLLeafType, typeDefinition: string) {CODE
LOW…ges/transports/rest/src/directives/responseMetadata.ts3export function processResponseMetadataAnnotations(field: GraphQLField<any, any>) {CODE
LOWpackages/transports/rest/src/directives/link.ts7export function processLinkFieldAnnotations(CODE
LOWpackages/legacy/migrate-config-cli/src/migrate.ts562function handleTransformConfiguration(CODE
LOWpackages/legacy/config/src/utils.ts89export async function resolveAdditionalTypeDefs(baseDir: string, additionalTypeDefs: string) {CODE
LOWpackages/legacy/runtime/src/get-mesh.ts83function createProxyingResolverFactory(CODE
LOWpackages/legacy/runtime/src/get-mesh.ts358 function handleExecutorResultForSdk(result) {CODE
LOWpackages/legacy/apollo-link/src/index.ts13function createMeshApolloRequestHandler(CODE
LOWpackages/legacy/utils/src/getOperationsAndFragments.ts4export const getOperationsAndFragments = memoize1(function getOperationsAndFragments(CODE
LOWpackages/legacy/utils/src/in-context-sdk.ts293function getSelectionSetFromDocumentNode(documentNode: DocumentNode): SelectionSetNode {CODE
LOWpackages/legacy/utils/src/in-context-sdk.ts303function normalizeSelectionSetParam(selectionSetParam: SelectionSetParam): SelectionSetNode {CODE
72 more matches not shown…
Fake / Example Data33 hits · 33 pts
SeverityFileLineSnippetContext
LOWexamples/hive-example/sources/authors/src/index.ts7 name: 'John Doe',CODE
LOWexamples/hive-example/sources/authors/src/index.ts12 name: 'Jane Doe',CODE
LOW…type-merging-batching-example/author-service-schema.ts6 name: 'John Doe',CODE
LOW…type-merging-batching-example/author-service-schema.ts10 name: 'Jane Doe',CODE
LOW…s/type-merging-batching-example/book-service-schema.ts6 title: 'Lorem Ipsum',CODE
LOW…s/type-merging-batching-example/book-service-schema.ts11 title: 'Dolor Sit Amet',CODE
LOWexamples/programmatic-batching/example-api/app.ts6 { id: 1, name: 'John Doe' },CODE
LOWexamples/programmatic-batching/example-api/app.ts7 { id: 2, name: 'Jane Doe' },CODE
LOWexamples/nextjs-apollo-example/pages/api/hello.js4 res.status(200).json({ name: 'John Doe' });CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts335 addUser(name: "John Doe") {CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts346 expect(addUserResult?.data?.addUser?.name).toBe('John Doe');CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts362 expect(getUserResult?.data?.user?.name).toBe('John Doe');CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts365 updateUser(id: "${addedUserId}", name: "Jane Doe") {CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts377 expect(updateUserResult?.data?.updateUser?.name).toBe('Jane Doe');CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts445 addUser(name: "John Doe") {CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts455 expect(addUserResult?.data?.addUser?.name).toBe('John Doe');CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts470 expect(getUserResult?.data?.user?.name).toBe('John Doe');CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts473 updateUser(id: "${addedUserId}", name: "Jane Doe") {CODE
LOWpackages/plugins/mock/tests/mocking.spec.ts484 expect(updateUserResult?.data?.updateUser?.name).toBe('Jane Doe');CODE
LOW…kages/legacy/runtime/test/reproduction-8688/schema.yml155 example: 'Jane Doe'CODE
LOW…es/legacy/handlers/supergraph/tests/supergraph.spec.ts118 name: 'Jane Doe',CODE
LOW…es/legacy/handlers/supergraph/tests/supergraph.spec.ts169 name: 'Jane Doe',CODE
LOW…es/legacy/handlers/supergraph/tests/supergraph.spec.ts223 name: 'Jane Doe',CODE
LOWe2e/type-merging-batching/services/authors.ts8 name: 'John Doe',CODE
LOWe2e/type-merging-batching/services/authors.ts12 name: 'Jane Doe',CODE
LOWe2e/type-merging-batching/services/books.ts8 title: 'Lorem Ipsum',CODE
LOWe2e/type-merging-batching/services/books.ts13 title: 'Dolor Sit Amet',CODE
LOWe2e/programmatic-batching/services/api.ts6 { id: 1, name: 'John Doe' },CODE
LOWe2e/programmatic-batching/services/api.ts7 { id: 2, name: 'Jane Doe' },CODE
LOWe2e/type-merging-with-transforms/services/authors.ts8 name: 'John Doe',CODE
LOWe2e/type-merging-with-transforms/services/authors.ts12 name: 'Jane Doe',CODE
LOWe2e/type-merging-with-transforms/services/books.ts8 title: 'Lorem Ipsum',CODE
LOWe2e/type-merging-with-transforms/services/books.ts13 title: 'Dolor Sit Amet',CODE
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALpackages/legacy/handlers/odata/test/handler.spec.ts675 const correctUrl = `https://services.odata.org/TripPinRESTierService/People/russellwhyte/Microsoft.OData.Service.SamCODE
Over-Commented Block8 hits · 8 pts
SeverityFileLineSnippetContext
LOWexamples/openapi-react-weatherbit/src/serviceWorker.ts1// This optional code is used to register a service worker.COMMENT
LOWexamples/openapi-react-weatherbit/src/setupTests.ts1// jest-dom adds custom jest matchers for asserting on DOM nodes.COMMENT
LOW…graphql-file-upload-example/frontend/src/setupTests.ts1// jest-dom adds custom jest matchers for asserting on DOM nodes.COMMENT
LOWexamples/nextjs-sdk-example/next-env.d.ts1/// <reference types="next" />COMMENT
LOWexamples/nextjs-apollo-example/next-env.d.ts1/// <reference types="next" />COMMENT
LOWpackages/transports/soap/src/executor.ts381 const argTypeMap = Object.fromEntries(fieldDef.args.map(a => [a.name, a.type]));COMMENT
LOWpackages/loaders/openapi/tests/example_api.test.ts1781 // ofType {COMMENT
LOWpackages/loaders/openapi/tests/example_api.test.ts1801 // return field.name === 'patent_id';COMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMexamples/type-merging-batching-example/.meshrc.yml44# Create a stitching resolver with batchingCOMMENT