AI Slop Code Risk Monitor

zarf-dev/zarf

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

The Airgap Native Package Manager for Kubernetes

0.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for zarf-dev/zarf, a Go project with 2,079 GitHub stars. SynthScan examined 170,705 lines of code across 1449 source files, recording 78 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 0.7 (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.7
Adjusted Signal
0.7
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
2.1K
Stars
Go
Language
170.7K
Lines of Code
1.4K
Files
78
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 2.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.3/100 · LOW

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

Agent Over-Engineering Ratio 0.3/100 · LOW

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

PR Review Velocity Impact 2.9/100 · LOW

Which changes need focused human review? 78 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 0MEDIUM 12LOW 66

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 78 distinct pattern matches across 11 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 Block42 hits · 42 pts
SeverityFileLineSnippetContext
LOWadr/0020-package-sources.md41//COMMENT
LOWhack/check-vex-orphans.sh1#!/usr/bin/env bashCOMMENT
LOWhack/empty-config.toml1# This is here so it can be used during certain Zarf commandsCOMMENT
LOWexamples/longhorn/values.yaml181 nodeSelector: {}COMMENT
LOWexamples/longhorn/values.yaml201 nodeSelector: {}COMMENT
LOWexamples/longhorn/values.yaml221 # label-key2: "label-value2"COMMENT
LOWexamples/longhorn/values.yaml241 priorityClass: ~COMMENT
LOWexamples/longhorn/values.yaml261 # - key: "key"COMMENT
LOWexamples/longhorn/values.yaml281 ## Set this to true in order to enable TLS on the ingress recordCOMMENT
LOWexamples/longhorn/values.yaml301 ## If tls is set to true, annotation ingress.kubernetes.io/secure-backends: "true" will automatically be setCOMMENT
LOWpackages/init/v1alpha1/zarf-registry/chart/values.yaml101# caBundle: |COMMENT
LOWsite/src/env.d.ts1/// <reference path="../.astro/types.d.ts" />COMMENT
LOWsite/src/plugins/remark-link-rewrite.ts1// Remark plugin for archived docs staged under a version subtreeCOMMENT
LOWsrc/cmd/tools_trustedroot.go21 Short: lang.CmdToolsTrustedRootShort,COMMENT
LOWsrc/cmd/tools_trustedroot_test.go21 "CTFE": "CTFESpecs",COMMENT
LOW…/packages/42-values/schema-merge/override-invalid.yaml1# replicas: 7 violates the parent schema's maximum of 5.COMMENT
LOWsrc/test/e2e/05_tarball_test.go221 require.NoError(t, err, stdOut, stdErr)COMMENT
LOWsrc/test/e2e/05_tarball_test.go241 // | | |-- 4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1COMMENT
LOWsrc/test/e2e/05_tarball_test.go301 for _, e := range entries {COMMENT
LOWsrc/test/e2e/05_tarball_test.go321 // | | | `-- 1COMMENT
LOWsrc/test/e2e/05_tarball_test.go341 // | | | | `-- README.mdCOMMENT
LOWsrc/test/e2e/05_tarball_test.go361 // | | |-- coffee-ipsum.txtCOMMENT
LOWsrc/test/e2e/05_tarball_test.go381 // | | `-- README.mdCOMMENT
LOWsrc/test/e2e/05_tarball_test.go401 // | | |-- d37d27b92cce4fb1383d5fbe32540382ea3d9662c7be3555f5a0f6a044099e1bCOMMENT
LOWsrc/internal/agent/hooks/common_test.go141 require.Equal(t, tt.expected, mediaType)COMMENT
LOWsrc/internal/api/v1beta1/roundtrip_test.go401// - package.apiVersion and package.kind are canonicalized to the target API.COMMENT
LOWsrc/internal/api/v1alpha1/roundtrip_test.go301 }COMMENT
LOWsrc/internal/api/v1alpha1/migrate.go81// migrateScriptsToActions converts the deprecated scripts to the new actionsCOMMENT
LOWsrc/api/v1alpha1/package.go241 // Any migrations that have been run on this package.COMMENT
LOWsrc/api/v1alpha1/component.go281 KustomizeAllowAnyDirectory bool `json:"kustomizeAllowAnyDirectory,omitempty"`COMMENT
LOWsrc/pkg/archive/archive.go381//COMMENT
LOWsrc/pkg/value/testdata/valid/empty.yaml1# Empty fileCOMMENT
LOWsrc/pkg/template/template.go261// This is designed to be called from a template.COMMENT
LOWsrc/pkg/template/template.go301// fromYAML converts a YAML document into a map[string]interface{}.COMMENT
LOWsrc/pkg/template/template.go321// YAML documents. Additionally, because its intended use is within templatesCOMMENT
LOWsrc/pkg/template/template.go401// JSON documents. Additionally, because its intended use is within templatesCOMMENT
LOW…kager/testdata/find-images/helm-chart/chart/Chart.yaml1apiVersion: v2COMMENT
LOW…kager/testdata/find-images/helm-chart/chart/Chart.yaml21# incremented each time you make changes to the application. Versions are not expected toCOMMENT
LOWsrc/pkg/feature/feature.go61 // GA features have been fully released and are available for production usage.COMMENT
LOWsrc/pkg/ocischeme/ocischeme.go1// SPDX-License-Identifier: Apache-2.0COMMENT
LOWsrc/pkg/ocischeme/ocischeme.go41// http.ErrSchemeMismatch. A caller-supplied ProbeOptions.Transport that retriesCOMMENT
LOWsrc/pkg/ocischeme/ocischeme.go181 // server speaking plaintext HTTP on that port: crypto/tls first surfaces this as aCOMMENT
Self-Referential Comments4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml192 # Create the GitHub release notes, upload artifact backups to S3, publish homebrew recipeCOMMENT
MEDIUM.github/workflows/publish-application-packages.yml38 # Create the dos-games package with the cosign signature, publish to ghcr and copy the tags to allow 'uname -m' COMMENT
MEDIUMsrc/test/packages/36-health-check-crd/zarf.yaml26 # Create a CR,COMMENT
MEDIUMsrc/pkg/packager/testdata/load-package/split/zarf.yaml9 # This file is autogenerated by the testCOMMENT
Verbosity Indicators6 hits · 12 pts
SeverityFileLineSnippetContext
LOW⚡src/pkg/packager/generate_schema.go66 // Step 1: Copy package defaultsCOMMENT
LOW⚡src/pkg/packager/generate_schema.go72 // Step 2: Collect chart value schemasCOMMENT
LOWsrc/pkg/packager/generate_schema.go182 // Step 3: Merge inferred and chart schemasCOMMENT
LOW⚡src/pkg/packager/generate_schema.go199 // Step 4: Merge and reconcile any existing schemaCOMMENT
LOW⚡src/pkg/packager/generate_schema.go206 // Step 5: Save the resulting schema when requested.COMMENT
LOWsrc/pkg/packager/load/import.go552 // kustomizations can use non-standard urls, so we need to check if the composed path exists on the local filesystemCOMMENT
Structural Annotation Overuse5 hits · 10 pts
SeverityFileLineSnippetContext
LOW⚡src/pkg/packager/generate_schema.go66 // Step 1: Copy package defaultsCOMMENT
LOW⚡src/pkg/packager/generate_schema.go72 // Step 2: Collect chart value schemasCOMMENT
LOWsrc/pkg/packager/generate_schema.go182 // Step 3: Merge inferred and chart schemasCOMMENT
LOW⚡src/pkg/packager/generate_schema.go199 // Step 4: Merge and reconcile any existing schemaCOMMENT
LOW⚡src/pkg/packager/generate_schema.go206 // Step 5: Save the resulting schema when requested.COMMENT
Decorative Section Separators4 hits · 10 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/nightly-scan-cve.yml33 ## ── Tier 1: govulncheck ─────────────────────────────────────────────────COMMENT
MEDIUM.github/workflows/nightly-scan-cve.yml47 ## ── Tier 2: grype on the built binary ───────────────────────────────────COMMENT
MEDIUMsite/public/tutorials/k3s_init.html52<b style="color:#555555;"></b>───────────────────────────────────────────────────────────────────────────────────────CODE
MEDIUMsite/public/tutorials/k3s_init.html95<b style="color:#555555;"></b>───────────────────────────────────────────────────────────────────────────────────────CODE
Fake / Example Data8 hits · 10 pts
SeverityFileLineSnippetContext
LOW⚡src/cmd/package_test.go952 identity: "user@example.com",CODE
LOW⚡src/cmd/package_test.go962 identity: "user@example.com",CODE
LOW⚡src/cmd/package_test.go968 identity: "user@example.com",CODE
LOWsrc/internal/packager/helm/post-render_test.go482 cleaned = regexp.MustCompile(`{{[^}]*}}`).ReplaceAllString(cleaned, "placeholder")CODE
LOWsrc/pkg/logger/logger_test.go122 Format: "^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$ lorem ipsum dolor sit amet 243897 )*&($#",CODE
LOWsrc/pkg/logger/logger_test.go122 Format: "^\\w+([-+.']\\w+)*@\\w+([-.]\\w+)*\\.\\w+([-.]\\w+)*$ lorem ipsum dolor sit amet 243897 )*&($#",CODE
LOWsrc/pkg/packager/layout/package_test.go1743 AggregateChecksum: "placeholder",CODE
LOWsrc/pkg/packager/layout/package_test.go2111 AggregateChecksum: "placeholder",CODE
AI Slop Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMsite/package-lock.json8753 "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.3.tgz",CODE
MEDIUMsrc/test/common.go26// ZarfE2ETest Struct holding common fields most of the tests will utilize.COMMENT
MEDIUMsrc/pkg/utils/bytes.go70 // NOTE(mkcp): Negative bytes are nonsense, but it's more robust for inputs without erroring.COMMENT
Slop Phrases3 hits · 6 pts
SeverityFileLineSnippetContext
LOWpackages/init/v1alpha1/gitea/gitea-values.yaml24 # Note that the init script checks to see if the IP & port of the database service is accessible, so make sure youCOMMENT
LOWsrc/cmd/viper.go210 // Don't forget to read config either from cfgFile or from home directory!COMMENT
MEDIUM…/packages/23-data-injections/manifests/deployment.yaml19 # The main container can hot-load files from the filesystem, but if your application cannot, this example shows hoCOMMENT
Example Usage Blocks1 hit · 2 pts
SeverityFileLineSnippetContext
LOWhack/check-vex-orphans.sh14# Usage:COMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWexamples/longhorn/values.yaml281 ## Set this to true in order to enable TLS on the ingress recordCOMMENT
Hyper-Verbose Identifiers1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsite/src/plugins/remark-link-rewrite.ts53export function rewriteVersionedAssetImport(spec: string, versionSlug: string): string | null {CODE