AI Slop Code Risk Monitor

kubernetes-sigs/external-dns

SlopCodeMonitor badge for kubernetes-sigs/external-dns Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Configure external DNS servers dynamically from Kubernetes resources

0.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for kubernetes-sigs/external-dns, a Go project with 9,145 GitHub stars. SynthScan examined 182,601 lines of code across 596 source files, recording 112 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 0.9 (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.9
Adjusted Signal
0.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
9.1K
Stars
Go
Language
182.6K
Lines of Code
596
Files
112
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 3.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.8/100 · LOW

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

Agent Over-Engineering Ratio 0.4/100 · LOW

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

PR Review Velocity Impact 4.1/100 · LOW

Which changes need focused human review? 112 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 6MEDIUM 6LOW 100

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 112 distinct pattern matches across 13 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.

Over-Commented Block63 hits · 63 pts
SeverityFileLineSnippetContext
LOWapis/v1alpha1/dnsrecord.go21COMMENT
LOWapis/v1alpha1/dnsrecord.go81// +k8s:openapi-gen=trueCOMMENT
LOWplan/plan.go81// DNSName | Current record | Desired Records |COMMENT
LOWplan/plan.go101}COMMENT
LOWsource/kong_tcpingress.go41 "sigs.k8s.io/external-dns/source/informers"COMMENT
LOWsource/gateway.go101// +externaldns:source:provider-specific=trueCOMMENT
LOWsource/gateway.go121// +externaldns:source:provider-specific=trueCOMMENT
LOWsource/service.go61// matched services' entrypoints it will return a correspondingCOMMENT
LOWsource/openshift_route.go41// ocpRouteSource is an implementation of Source for OpenShift Route objects.COMMENT
LOWsource/store.go61 }COMMENT
LOWsource/store.go81// - RESTConfig: Instrumented REST config for creating custom clientsCOMMENT
LOWsource/store.go241// Supported Source Types:COMMENT
LOWsource/store.go321 }COMMENT
LOWsource/store.go341// 7. combineFQDNAndAnnotation (bool) - Whether to combine FQDN template with annotationsCOMMENT
LOWsource/pod.go41COMMENT
LOWsource/unstructured.go41 "sigs.k8s.io/external-dns/source/template"COMMENT
LOWsource/empty.go21COMMENT
LOWsource/ingress.go41)COMMENT
LOWsource/contour_httpproxy.go41// The HTTPProxy implementation uses the spec.virtualHost.fqdn value for the hostname.COMMENT
LOWsource/crd.go41// crdSource is an implementation of Source that provides endpoints by listingCOMMENT
LOWsource/skipper_routegroup.go41// +externaldns:source:category=Ingress ControllersCOMMENT
LOWsource/gateway_hostname.go1// Copyright 2011 The Go Authors. All rights reserved.COMMENT
LOWsource/ambassador_host.go61// The IngressRoute implementation uses the spec.virtualHost.fqdn value for the hostname.COMMENT
LOWsource/istio_gateway.go41 "sigs.k8s.io/external-dns/pkg/events"COMMENT
LOWsource/informers/transformers.go81 o.keepAnnotationPrefixes = append(o.keepAnnotationPrefixes, prefixes...)COMMENT
LOWsource/informers/indexers.go81}COMMENT
LOWsource/informers/indexers.go101// err := IndexerWithOptions[*v1.Pod](COMMENT
LOWsource/template/engine.go41 // Parsed from --fqdn-template.COMMENT
LOWtests/integration/scenarios/tests.yaml1# Integration Test ScenariosCOMMENT
LOWinternal/gen/docs/sources/main_test.go101COMMENT
LOWinternal/gen/docs/sources/main_test.go161func TestParseFile_MultipleSourcesInOneFile(t *testing.T) {COMMENT
LOWinternal/testutils/metrics.go21 "sort"COMMENT
LOWinternal/testutils/endpoint.go121// Usage example:COMMENT
LOWinternal/testutils/log/log.go41COMMENT
LOWprovider/cloudflare/cloudflare_regional_test.go1281 // Region key should be present with expected valueCOMMENT
LOWprovider/godaddy/client.go281//COMMENT
LOWprovider/godaddy/client.go301// - full serialized request bodyCOMMENT
LOWprovider/aws/aws.go41)COMMENT
LOWdocs/snippets/contributing/collect-extdns-info.sh1#!/usr/bin/env bashCOMMENT
LOWdocs/snippets/contributing/collect-resources.sh1#!/usr/bin/env bashCOMMENT
LOWdocs/contributing/sources-and-providers.md41* `FakeSource`: returns a random list of Endpoints for the purpose of testing providers without having access to a KuberCOMMENT
LOWdocs/scripts/requirements.txt481 # mkdocs-get-depsCOMMENT
LOWdocs/tutorials/gke.md401 # # uncomment below if static credentials are usedCOMMENT
LOWdocs/tutorials/scaleway.md101 - --domain-filter=example.com # (optional) limit to only example.com domains; change to match the zone created aCOMMENT
LOWendpoint/endpoint.go101// The bounds must stay wide enough for every endpoint external-dns can build: aCOMMENT
LOWendpoint/endpoint.go281}COMMENT
LOWendpoint/endpoint.go301// DNSName is bounded at 254, one over the RFC 1035 §2.3.4 limit of 253, because theCOMMENT
LOWendpoint/endpoint.go321 // meaningful when --default-targets is configured.COMMENT
LOWscripts/build-fips-image.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/file-hygiene.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/install-tools.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/generate-crd.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/generate-crd.sh21## What this script does:COMMENT
LOWscripts/helm-tools.sh1#!/bin/bashCOMMENT
LOWscripts/chart-release.sh1#!/bin/bashCOMMENT
LOWscripts/install-ko.sh1#!/usr/bin/env bashCOMMENT
LOWscripts/aws-cleanup-legacy-txt-records.py1#!/usr/bin/env pythonCOMMENT
LOWscripts/aws-cleanup-legacy-txt-records.py21# The script performs the following steps:COMMENT
LOWscripts/aws-cleanup-legacy-txt-records.py41# WARNING: run this script at your own RISK. This will delete all the TXT records that do contain certain string.COMMENT
LOWscripts/update_route53_k8s_txt_owner.py1#!/usr/bin/env pythonCOMMENT
3 more matches not shown…
Magic Placeholder Names5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHdocs/tutorials/godaddy.md35 - --godaddy-api-key=YOUR_API_KEYCODE
HIGHdocs/tutorials/godaddy.md39Be sure to replace YOUR_API_KEY and YOUR_API_SECRET with your actual GoDaddy API key and GoDaddy API secret.CODE
HIGHdocs/tutorials/cloudflare.md99kubectl create secret generic cloudflare-api-key --from-literal=apiKey=YOUR_API_KEY --from-literal=email=YOUR_CLOUDFLARECODE
HIGHdocs/tutorials/cloudflare.md108Ensure to replace YOUR_API_KEY with your actual CloudFlare API key and YOUR_CLOUDFLARE_EMAIL with the email associated wCODE
HIGHdocs/tutorials/myra.md51 --from-literal=myrasec-api-key=YOUR_API_KEY \CODE
Structural Annotation Overuse13 hits · 21 pts
SeverityFileLineSnippetContext
LOWprovider/coredns/coredns_test.go1658 // Step 1: Create a PTR record pointing to "old-host"COMMENT
LOWprovider/coredns/coredns_test.go1669 // Step 2: Update target to "new-host"COMMENT
LOWdocs/advanced/import-records.md98## Step 1: Create Corresponding TXT RecordsCOMMENT
LOWdocs/advanced/import-records.md116## Step 2: Verify ExternalDNS BehaviorCOMMENT
LOWdocs/tutorials/ionoscloud.md36### Step 1: Create a Kubernetes Secret for the IONOS API TokenCOMMENT
LOWdocs/tutorials/ionoscloud.md46### Step 2: Configure ExternalDNSCOMMENT
LOWdocs/tutorials/ionoscloud.md81### Step 3: Install ExternalDNS Using HelmCOMMENT
LOWdocs/tutorials/ionoscloud.md92### Step 1: Create a DeploymentCOMMENT
LOWdocs/tutorials/ionoscloud.md127### Step 2: Create a ServiceCOMMENT
LOWdocs/tutorials/ionoscloud.md158### Step 3: Create an IngressCOMMENT
LOW⚡scripts/generate-crd.sh46# Step 1: Generate deepcopy methods for endpoint typesCOMMENT
LOW⚡scripts/generate-crd.sh56# Step 2: Generate CRD manifests for API typesCOMMENT
LOWscripts/generate-crd.sh68# Step 3: Copy CRDs to Helm chart with filtered annotationsCOMMENT
Example Usage Blocks9 hits · 14 pts
SeverityFileLineSnippetContext
LOWsource/informers/indexers.go100// Example usage:COMMENT
LOWinternal/testutils/metrics.go33// Example usage:COMMENT
LOWinternal/testutils/endpoint.go121// Usage example:COMMENT
LOWdocs/snippets/contributing/collect-extdns-info.sh4# Usage:COMMENT
LOWdocs/snippets/contributing/collect-resources.sh4# Usage:COMMENT
LOWendpoint/domain_filter.go100// Example usage:COMMENT
LOWendpoint/endpoint.go551// Example usage:COMMENT
LOWscripts/build-fips-image.sh21# Usage:COMMENT
LOWscripts/generate-crd.sh26# Usage:COMMENT
Decorative Section Separators4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMsource/pod_fqdn_test.go68 // ── fqdn-target-template cases ────────────────────────────────────────COMMENT
MEDIUMsource/pod_fqdn_test.go131 // ── fqdn-template cases ───────────────────────────────────────────────COMMENT
MEDIUMsource/service_fqdn_test.go65 // ── fqdn-target-template cases ────────────────────────────────────────COMMENT
MEDIUMsource/service_fqdn_test.go128 // ── fqdn-template cases ───────────────────────────────────────────────COMMENT
Verbosity Indicators5 hits · 9 pts
SeverityFileLineSnippetContext
LOWprovider/coredns/coredns_test.go1658 // Step 1: Create a PTR record pointing to "old-host"COMMENT
LOWprovider/coredns/coredns_test.go1669 // Step 2: Update target to "new-host"COMMENT
LOW⚡scripts/generate-crd.sh46# Step 1: Generate deepcopy methods for endpoint typesCOMMENT
LOW⚡scripts/generate-crd.sh56# Step 2: Generate CRD manifests for API typesCOMMENT
LOWscripts/generate-crd.sh68# Step 3: Copy CRDs to Helm chart with filtered annotationsCOMMENT
Fake / Example Data5 hits · 5 pts
SeverityFileLineSnippetContext
LOWprovider/cloudflare/cloudflare_test.go1004 {Key: cfAPIEmailEnvKey, Value: "test@test.com"},CODE
LOWprovider/cloudflare/cloudflare_test.go1891 cfAPIEmailEnvKey: "test@test.com",CODE
LOWendpoint/crypto_test.go32 plaintext := "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the indusCODE
LOWpkg/events/controller_test.go71 token: fake-tokenCODE
LOWpkg/client/config_test.go288 token: fake-tokenCODE
AI Response Leakage1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHdocs/tutorials/aws.md735 secretName: external-dns # In this example, the secret will have the data stored in a key named `my_credentials`CODE
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMprovider/scaleway/scaleway_test.go652// feel free to modify if you have a better ideaCOMMENT
Excessive Try-Catch Wrapping2 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/aws-cleanup-legacy-txt-records.py180 except Exception as e:CODE
MEDIUMscripts/aws-cleanup-legacy-txt-records.py181 print(f"An error occurred: {e}")CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWscripts/e2e-test.sh31# Set trap to cleanup on script exitCOMMENT
LOW.github/workflows/validate-crd.yml43 # Check if there are any changes to generated filesCOMMENT
Hyper-Verbose Identifiers1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/aws-cleanup-legacy-txt-records.py140def orphaned_alias_cname_records(all_txt: list[Record], contain: str) -> list[Record]:CODE
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWscripts/aws-cleanup-legacy-txt-records.py110CODE