AI Slop Code Risk Monitor

loft-sh/vcluster

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

vCluster creates tenant clusters: fully isolated environments delivered as managed Kubernetes, or as the foundation for Slurm, Ray, Run:ai and inference clusters. Each gets its own API server, CRDs and RBAC, and runs on an existing cluster or standalone on bare metal. CNCF Certified Kubernetes.

1.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for loft-sh/vcluster, a Go project with 11,370 GitHub stars. SynthScan examined 181,481 lines of code across 982 source files, recording 96 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 1.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.

1.8
Adjusted Signal
1.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
11.4K
Stars
Go
Language
181.5K
Lines of Code
982
Files
96
Pattern Hits
2026-10-31
Scan Date
0.03
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.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 6.8/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 8.6/100 · LOW

Which changes need focused human review? 96 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 25HIGH 0MEDIUM 2LOW 69

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 96 distinct pattern matches across 6 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.

Hallucination Indicators25 hits · 250 pts
SeverityFileLineSnippetContext
CRITICALpkg/config/config.go124 OverrideHostsContainerImage: v.Sync.ToHost.Pods.RewriteHosts.InitContainer.Image.String(),CODE
CRITICALpkg/mappings/resources/gateways.go108 return ctx.Config.Sync.FromHost.Gateways.Selector.Matches(obj)CODE
CRITICALpkg/controllers/resources/gatewayclasses/syncer.go55 matches, err := ctx.Config.Sync.FromHost.GatewayClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/gatewayclasses/syncer.go80 matches, err := ctx.Config.Sync.FromHost.GatewayClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/runtimeclasses/syncer.go52 matches, err := ctx.Config.Sync.FromHost.RuntimeClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/runtimeclasses/syncer.go74 matches, err := ctx.Config.Sync.FromHost.RuntimeClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/priorityclasses/syncer.go82 matches, err := ctx.Config.Sync.FromHost.PriorityClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/priorityclasses/syncer.go122 matches, err := ctx.Config.Sync.FromHost.PriorityClasses.Selector.Matches(event.Host)CODE
CRITICAL…controllers/resources/persistentvolumeclaims/syncer.go326 if !ctx.Config.Sync.FromHost.StorageClasses.Enabled.Bool() ||CODE
CRITICAL…controllers/resources/persistentvolumeclaims/syncer.go327 ctx.Config.Sync.FromHost.StorageClasses.Selector.Empty() ||CODE
CRITICAL…controllers/resources/persistentvolumeclaims/syncer.go349 matches, err := ctx.Config.Sync.FromHost.StorageClasses.Selector.Matches(pStorageClass)CODE
CRITICALpkg/controllers/resources/ingresses/syncer.go142 ctx.Config.Sync.FromHost.IngressClasses.Selector.Empty() ||CODE
CRITICALpkg/controllers/resources/ingresses/syncer.go164 matches, err := ctx.Config.Sync.FromHost.IngressClasses.Selector.Matches(pIngressClass)CODE
CRITICALpkg/controllers/resources/pods/syncer.go612 ctx.Config.Sync.FromHost.PriorityClasses.Selector.Empty() ||CODE
CRITICALpkg/controllers/resources/pods/syncer.go634 matches, err := ctx.Config.Sync.FromHost.PriorityClasses.Selector.Matches(pPriorityClass)CODE
CRITICALpkg/controllers/resources/pods/syncer.go667 ctx.Config.Sync.FromHost.RuntimeClasses.Selector.Empty() ||CODE
CRITICALpkg/controllers/resources/pods/syncer.go689 matches, err := ctx.Config.Sync.FromHost.RuntimeClasses.Selector.Matches(pRuntimeClass)CODE
CRITICALpkg/controllers/resources/gateways/syncer.go342 matches, err := ctx.Config.Sync.FromHost.Gateways.Selector.Matches(gateway)CODE
CRITICALpkg/controllers/resources/persistentvolumes/syncer.go337 if !ctx.Config.Sync.FromHost.StorageClasses.Enabled.Bool() ||CODE
CRITICALpkg/controllers/resources/persistentvolumes/syncer.go338 ctx.Config.Sync.FromHost.StorageClasses.Selector.Empty() ||CODE
CRITICALpkg/controllers/resources/persistentvolumes/syncer.go358 matches, err := ctx.Config.Sync.FromHost.StorageClasses.Selector.Matches(pStorageClass)CODE
CRITICALpkg/controllers/resources/storageclasses/host_syncer.go56 matches, err := ctx.Config.Sync.FromHost.StorageClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/storageclasses/host_syncer.go78 matches, err := ctx.Config.Sync.FromHost.StorageClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/ingressclasses/syncer.go52 matches, err := ctx.Config.Sync.FromHost.IngressClasses.Selector.Matches(event.Host)CODE
CRITICALpkg/controllers/resources/ingressclasses/syncer.go74 matches, err := ctx.Config.Sync.FromHost.IngressClasses.Selector.Matches(event.Host)CODE
Over-Commented Block61 hits · 61 pts
SeverityFileLineSnippetContext
LOW.goreleaser.yaml1version: 2COMMENT
LOW.goreleaser.yaml141 - "^test:"COMMENT
LOWtest/framework/framework.go61 // HostClient is the kubernetes client of the currentCOMMENT
LOWconfig/config.go261 // Warning: this feature takes precedence over a Pod's terminationGracePeriodSeconds value, and bypasses any blocked PDCOMMENT
LOWconfig/config.go301 // Nodes dictates the maximum number of NodeClaims owned by this NodePoolCOMMENT
LOWconfig/config.go341 // When set, drifted nodes will begin draining even if there are pods blocking eviction. Draining will respect PDBs andCOMMENT
LOWconfig/config.go641type NodeRegistration struct {COMMENT
LOWconfig/config.go1441type EnableSwitchWithResourcesMappings struct {COMMENT
LOWconfig/config.go1461 // 3. To match a specific object in the control plane namespace and sync it to the same namespace with a different nameCOMMENT
LOWconfig/config.go2301 // Connector specifies a secret located in a connected vCluster Platform that contains database server connection inforCOMMENT
LOWconfig/config.go3041}COMMENT
LOWconfig/config.go3061 // +listType=atomicCOMMENT
LOWconfig/config.go3081 // destination). If this field is present and contains at least one item, this ruleCOMMENT
LOWconfig/config.go3101COMMENT
LOWconfig/config.go3121COMMENT
LOWconfig/config.go3141 // CIDR defines the allowed workload public egress destination.COMMENT
LOWconfig/config.go3241 // matchPolicy defines how the "rules" list is used to match incoming requests.COMMENT
LOWconfig/config.go3261 // TimeoutSeconds specifies the timeout for this webhook.COMMENT
LOWconfig/config.go3301 // Path is an optional URL path which will be sent in any request toCOMMENT
LOWconfig/config.go3601 Resources []string `protobuf:"bytes,3,rep,name=resources" json:"resources,omitempty"`COMMENT
LOWconfig/config.go3621 // A list of DNS search domains for host-name lookup.COMMENT
LOWchart/values.yaml41 hybridScheduling:COMMENT
LOWchart/values.yaml101 # BackendTLSPolicies configures BackendTLSPolicy sync to the control plane cluster.COMMENT
LOWchart/values.yaml161 # Enabled defines if this option should be enabled.COMMENT
LOWchart/values.yaml181 # byName:COMMENT
LOWchart/values.yaml201 # Enabled defines if this option should be enabled.COMMENT
LOWchart/values.yaml221 # "foo/*": "foo-in-virtual/*"COMMENT
LOWchart/values.yaml261 # Enabled specifies if syncing real nodes should be enabled. If this is disabled, vCluster will create fake nodes COMMENT
LOWchart/values.yaml281 # byName:COMMENT
LOWchart/values.yaml361 backingStore:COMMENT
LOWchart/values.yaml381 # and non-privileged user. A kine endpoint should be created using the database and user on Platform registratioCOMMENT
LOWchart/values.yaml841 enabled: trueCOMMENT
LOWchart/values.yaml961 # within the same namespace as this virtual cluster and vCluster annotates the nodes with the virtual machineCOMMENT
LOWchart/values.yaml981 # two default storage classes leave it to Kubernetes which provisioner a claim without a storage class ends up oCOMMENT
LOWchart/values.yaml1321 # ClusterRole to assign to the service account.COMMENT
LOWchart/values.yaml1401 file:COMMENT
LOWhack/test-config.yaml1version: v1beta1COMMENT
LOW.github/secret_scanning.yml1# vendor/ is generated by `go mod vendor` and contains upstream documentationCOMMENT
LOW.github/actionlint.yaml21 # Exclude some noisy rulesCOMMENT
LOWe2e/test_core/lifecycle/test_connect.go21//COMMENT
LOWe2e/test_security/webhook/test_webhook.go361 // NOTE: The old test suite also had "should be able to deny attaching pod"COMMENT
LOWpkg/snapshot/controller.go61 staleExpiry time.TimeCOMMENT
LOWpkg/pro/snapshot_credentials.go21//COMMENT
LOWpkg/util/websocketproxy/websocketproxy.go41 // Backend returns the backend URL which the proxy uses to reverse proxyCOMMENT
LOWpkg/util/osutil/interrupt_windows.go1// Copyright 2015 The etcd AuthorsCOMMENT
LOWpkg/util/osutil/interrupt_unix.go1// Copyright 2015 The etcd AuthorsCOMMENT
LOWpkg/util/log/log_sink.go61}COMMENT
LOWpkg/util/portforward/portforward.go481 _ = dataStream.Reset()COMMENT
LOWpkg/patcher/patcher.go101COMMENT
LOWpkg/patcher/apply.go341// suitable for use as a json.RawMessage.COMMENT
LOWpkg/cli/create_docker.go141COMMENT
LOWpkg/cli/util/args.go41 NamespaceNameOnlyUseLine, NamespaceNameOnlyValidator = NamedPositionalArgsValidator(true, true, "NAMESPACE_NAME")COMMENT
LOWpkg/syncer/translator/sanitising_event_recorder.go21// Two passes are applied:COMMENT
LOWpkg/controllers/resources/pods/translate/hostpath.go41}COMMENT
LOWpkg/controllers/resources/pods/translate/hostpath.go61 // type: ""COMMENT
LOWpkg/helm/labels.go1package helmCOMMENT
LOWpkg/helm/labels.go21// }COMMENT
LOWpkg/helm/secrets.go61type Info struct {COMMENT
LOWpkg/helm/secrets.go81COMMENT
LOWpkg/helm/secrets.go101 // +optionalCOMMENT
1 more matches not shown…
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/auto-approve-bot-prs.yaml9# GITHUB_TOKEN permissions, never elevate them, and anything omitted defaults toCOMMENT
MEDIUM.vscode/launch.json41 //"trace": "verbose", // use for debugging problems with delve (breakpoints not working, etc.)COMMENT
TODO Padding3 hits · 4 pts
SeverityFileLineSnippetContext
LOWpkg/util/blockingcacheclient/client.go238// TODO: implement DeleteAllOfCOMMENT
LOWpkg/util/pluginhookclient/client.go196// TODO: implement DeleteAllOfCOMMENT
LOWpkg/controllers/resources/pods/translate/translator.go860 // TODO: implement support for using .namespaces together with the .namespaceSelectorCOMMENT
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippetContext
LOWchart/values.schema.json5280 "placeholder": {CODE
LOWpkg/certs/watcher_test.go32 data = []byte("placeholder")CODE
LOWpkg/certs/watcher_test.go62 data = []byte("placeholder")CODE
LOWpkg/certs/watcher_test.go92 data = []byte("placeholder")CODE
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOWassets/push-images.sh108 # Check if the arch-specific image existsCOMMENT