Open source hyperconverged infrastructure (HCI) software
This report summarizes scanner evidence for harvester/harvester, a Go project with 5,231 GitHub stars. SynthScan examined 234,836 lines of code across 994 source files, recording 129 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 1.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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 99 finding(s).
Are imports declared and package/API names verified? 19 finding(s).
Are wrappers, guards, and repeated structures necessary? 22 finding(s).
Which changes need focused human review? 129 finding(s).
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.
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.
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.
The scanner identified 129 distinct pattern matches across 15 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | pkg/webhook/resources/virtualmachine/validator.go | 854 | mem := vm.Spec.Template.Spec.Domain.Resources.Limits.Memory() | CODE |
| CRITICAL | pkg/webhook/resources/virtualmachine/validator.go | 895 | limitMem := vm.Spec.Template.Spec.Domain.Resources.Limits.Memory() | CODE |
| CRITICAL | pkg/webhook/resources/virtualmachine/mutator.go | 662 | if newVM.Spec.Template.Spec.Domain.Memory != nil && (newVM.Spec.Template.Spec.Domain.Memory.Guest.Value() != newVM.Spe | CODE |
| CRITICAL⚡ | pkg/webhook/resources/virtualmachine/mutator_test.go | 2362 | assertions.NotNil(patchedVMObj.Spec.Template.Spec.Domain.Resources.Limits.Cpu(), "expected CPU limit to be set for fo | CODE |
| CRITICAL⚡ | pkg/webhook/resources/virtualmachine/mutator_test.go | 2363 | assertions.NotNil(patchedVMObj.Spec.Template.Spec.Domain.Resources.Limits.Memory(), "expected Memory limit to be set | CODE |
| CRITICAL⚡ | pkg/webhook/resources/virtualmachine/mutator_test.go | 2364 | assertions.True(patchedVMObj.Spec.Template.Spec.Domain.Resources.Limits.Cpu().Equal(cpuLimit), "expected CPU limit to | CODE |
| CRITICAL⚡ | pkg/webhook/resources/virtualmachine/mutator_test.go | 2365 | assertions.True(patchedVMObj.Spec.Template.Spec.Domain.Resources.Limits.Memory().Equal(*vm.Spec.Template.Spec.Domain. | CODE |
| CRITICAL | pkg/controller/master/migration/vmim_controller.go | 193 | if vmi.Spec.Domain.Resources.Limits.Memory().IsZero() && vmi.Spec.Domain.Resources.Limits.Cpu().IsZero() { | CODE |
| CRITICAL | pkg/controller/master/migration/vmim_controller.go | 353 | if vmi.Spec.Domain.Resources.Limits.Memory().IsZero() { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | deploy/charts/harvester/values.yaml | 1 | ########################################################################### | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 21 | ## - RequireDualStack | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 81 | repository: registry.suse.com/suse/sles/16.0/libguestfs-tools | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 241 | ## are appended dynamically by dependency_charts/cdi/templates/cdi.yaml, | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 301 | ## Specify the tag of image. | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 341 | COMMENT | |
| LOW | deploy/charts/harvester/values.yaml | 361 | ## | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 401 | ## Specify the mode of vip, | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 421 | nodeSelector: {} | COMMENT |
| LOW | deploy/charts/harvester/values.yaml | 441 | ## | COMMENT |
| LOW | …harvester/dependency_charts/csi-snapshotter/Chart.yaml | 1 | apiVersion: v2 | COMMENT |
| LOW | …dency_charts/csi-snapshotter/templates/deployment.yaml | 41 | # Add a marker to the snapshot-controller manifests. This is needed to enable feature gates in CSI prow jobs | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 1 | ########################################################################### | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 21 | ## | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 41 | # monitorAccount: "prometheus-k8s" | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 81 | configuration: | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 101 | ## Specify the default CPU model of VirtualMachineInstance, selects from https://github.com/libvirt/libvirt/tree/mas | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 121 | ## Specify the virtual machine image pull policy of `virt-launcher` Pod, | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 141 | ## Specify the toleration in percent when PVs' available space is smaller than requested, | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 161 | ## Specify if uses eumlation, | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 181 | COMMENT | |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 201 | COMMENT | |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 221 | ## Specify to permit slirp interface, | COMMENT |
| LOW | …harts/harvester/dependency_charts/kubevirt/values.yaml | 241 | COMMENT | |
| LOW | …vester/dependency_charts/kubevirt-operator/values.yaml | 1 | ########################################################################### | COMMENT |
| LOW | …vester/dependency_charts/kubevirt-operator/values.yaml | 121 | COMMENT | |
| LOW | …rts/harvester/dependency_charts/whereabouts/Chart.yaml | 1 | apiVersion: v2 | COMMENT |
| LOW | …ackaging/hack/monitoring-logging-chart-images-list.txt | 1 | # This file tracks the images used by rancher-monitoring and rancher-logging charts. | COMMENT |
| LOW | …ackaging/hack/monitoring-logging-chart-images-list.txt | 41 | # Old version: 109.0.3+up80.9.1-rancher.14 | COMMENT |
| LOW | tests/framework/cluster/kind.go | 21 | COMMENT | |
| LOW | tests/framework/cluster/kind.go | 41 | Image string | COMMENT |
| LOW | scripts/collect-rancher-deps.sh | 1 | #!/bin/bash -e | COMMENT |
| LOW | .github/workflows/build-prime.yml | 1 | name: Build Prime | COMMENT |
| LOW | .github/workflows/codeql-analysis.yml | 41 | COMMENT | |
| LOW | .github/workflows/upgrade-risk.lock.yml | 1 | # gh-aw-metadata: {"schema_version":"v4","frontmatter_hash":"d4bcd7aca72fcdf8d8653446dc5097605970161c337b38d5ac98b7e95b0 | COMMENT |
| LOW | .github/workflows/upgrade-risk.lock.yml | 21 | # gh aw compile | COMMENT |
| LOW | .github/workflows/upgrade-risk.lock.yml | 41 | # - actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8.0.1 | COMMENT |
| LOW | .github/actions/setup-prime-build/action.yml | 1 | name: Set up Prime build | COMMENT |
| LOW | .github/actions/setup-prime-build/action.yml | 21 | # "aws_access_key_id": "...", | COMMENT |
| LOW | enhancements/20240611-vm-schedule-backup.md | 41 | // +kubebuilder:validation:Required | COMMENT |
| LOW | package/upgrade/upgrade_node.sh | 41 | echo " now: $(du -h $PASSIVE_IMG)" | COMMENT |
| LOW | package/upgrade/upgrade_node.sh | 561 | /usr/local/bin/harvester-installer generate-network-config --config ${HOST_DIR}/oem/harvester.config --connection-path | COMMENT |
| LOW | pkg/webhook/types/admission.go | 21 | // JSON Patch operations to mutate input data. See https://jsonpatch.com/ for more information. | COMMENT |
| LOW | pkg/webhook/resources/setting/validator_test.go | 3221 | // | COMMENT |
| LOW | pkg/webhook/resources/virtualmachineinstance/mutator.go | 161 | COMMENT | |
| LOW | pkg/settings/settings_helper.go | 201 | Enable bool `json:"enable"` | COMMENT |
| LOW | pkg/apis/harvesterhci.io/v1beta1/backup.go | 61 | COMMENT | |
| LOW | pkg/apis/harvesterhci.io/v1beta1/backup.go | 201 | type PersistentVolumeClaimSourceSpec struct { | COMMENT |
| LOW | pkg/apis/harvesterhci.io/v1beta1/imagedownloader.go | 41 | // +kubebuilder:validation:Enum:=qcow2 | COMMENT |
| LOW | pkg/apis/harvesterhci.io/v1beta1/image.go | 61 | // +optional | COMMENT |
| LOW | pkg/apis/harvesterhci.io/v1beta1/image.go | 81 | COMMENT | |
| LOW | pkg/apis/harvesterhci.io/v1beta1/schedulebackup.go | 21 | // +optional | COMMENT |
| LOW | pkg/containerd/registry.go | 1 | package containerd | COMMENT |
| LOW | pkg/server/http/ctx.go | 1 | package http | COMMENT |
| LOW | pkg/controller/master/upgrade/common.go | 81 | // (e.g., "rancher/harvester-abc:v0.5.0"), but nodes might pull from private, air-gapped, | COMMENT |
| LOW | pkg/controller/master/virtualmachine/vm_controller.go | 781 | if err := h.deleteBackendStorageCloneJobs(vm); err != nil { | COMMENT |
| LOW | pkg/controller/master/node/node_down_controller.go | 361 | COMMENT | |
| LOW | pkg/controller/master/setting/nodeconfig.go | 41 | } | COMMENT |
| LOW | pkg/backup/common/operator.go | 41 | COMMENT | |
| LOW | pkg/installer/config/config.go | 201 | PersistentPartitionSize string `json:"persistentPartitionSize,omitempty"` | COMMENT |
| 4 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .github/workflows/check-sprint-last-day.py | 0 | { organization(login: "%s") { projectsv2(first: 20) { nodes { id title number } } } } | STRING |
| HIGH | …ub/workflows/migrate-zenhub-board-to-github-project.py | 0 | { organization(login: "%s") { projectsv2(first: 20) { nodes { id title number } } } } | STRING |
| HIGH | .github/workflows/scan-and-notify-testing-items.py | 0 | { organization(login: "%s") { projectsv2(first: 20) { nodes { id title number } } } } | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …ackaging/hack/monitoring-logging-chart-images-list.txt | 17 | # ========================================== | COMMENT |
| MEDIUM | …ackaging/hack/monitoring-logging-chart-images-list.txt | 21 | # ========================================== | COMMENT |
| MEDIUM | …ackaging/hack/monitoring-logging-chart-images-list.txt | 39 | # ========================================== | COMMENT |
| MEDIUM | …ackaging/hack/monitoring-logging-chart-images-list.txt | 43 | # ========================================== | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pkg/volumeremotebackup/longhorn/restore.go | 149 | // Step 1: Create VolumeSnapshotContent | COMMENT |
| LOW | pkg/volumeremotebackup/longhorn/restore.go | 162 | // Step 2: Create VolumeSnapshot | COMMENT |
| LOW | pkg/volumeremotebackup/longhorn/restore.go | 178 | // Step 3: Create PVC from VolumeSnapshot | COMMENT |
| LOW⚡ | pkg/volumeremotebackup/longhorn/restore.go | 466 | // Step 1: Check VolumeSnapshotContent | COMMENT |
| LOW⚡ | pkg/volumeremotebackup/longhorn/restore.go | 475 | // Step 2: Check VolumeSnapshot | COMMENT |
| LOW⚡ | pkg/volumeremotebackup/longhorn/restore.go | 484 | // Step 3: Check PVC | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | pkg/volumeremotebackup/longhorn/restore.go | 149 | // Step 1: Create VolumeSnapshotContent | COMMENT |
| LOW | pkg/volumeremotebackup/longhorn/restore.go | 162 | // Step 2: Create VolumeSnapshot | COMMENT |
| LOW | pkg/volumeremotebackup/longhorn/restore.go | 178 | // Step 3: Create PVC from VolumeSnapshot | COMMENT |
| LOW⚡ | pkg/volumeremotebackup/longhorn/restore.go | 466 | // Step 1: Check VolumeSnapshotContent | COMMENT |
| LOW⚡ | pkg/volumeremotebackup/longhorn/restore.go | 475 | // Step 2: Check VolumeSnapshot | COMMENT |
| LOW⚡ | pkg/volumeremotebackup/longhorn/restore.go | 484 | // Step 3: Check PVC | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | pkg/installer/widgets/util_test.go | 75 | content: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr", | CODE |
| LOW⚡ | pkg/installer/widgets/util_test.go | 75 | content: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr", | CODE |
| LOW⚡ | pkg/installer/widgets/util_test.go | 84 | content: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr", | CODE |
| LOW⚡ | pkg/installer/widgets/util_test.go | 84 | content: "Lorem ipsum dolor sit amet, consetetur sadipscing elitr", | CODE |
| LOW⚡ | pkg/installer/widgets/util_test.go | 93 | content: "Lorem ipsum dolor sit amet, ", | CODE |
| LOW⚡ | pkg/installer/widgets/util_test.go | 93 | content: "Lorem ipsum dolor sit amet, ", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/check-sprint-last-day.py | 95 | def is_today_is_in_last_day_of_current_sprint(github_token, project_id): | STRING |
| LOW | …ub/workflows/migrate-zenhub-board-to-github-project.py | 96 | def get_github_project_status(github_token, github_org, github_repo, project_number): | STRING |
| LOW | …ub/workflows/migrate-zenhub-board-to-github-project.py | 104 | def get_github_project_estimate(github_token, github_org, github_repo, project_number): | STRING |
| LOW | …ub/workflows/migrate-zenhub-board-to-github-project.py | 268 | def check_zenhub_pipelins_github_project_status_match(board, status): | STRING |
| LOW | …ub/workflows/migrate-zenhub-board-to-github-project.py | 276 | def add_closed_issues_to_github_project(github_token, zenhub_token, github_org, github_repo, project_id, status, status_ | STRING |
| LOW | …ub/workflows/migrate-zenhub-board-to-github-project.py | 309 | def add_zenhub_pipelines_to_github_project(github_token, github_org, github_repo, project_id, board, status, status_node | STRING |
| LOW | .github/workflows/scan-and-notify-testing-items.py | 127 | def is_today_is_in_last_day_of_current_sprint(github_token, project_id): | STRING |
| LOW | .github/workflows/bot/issue_transfer.py | 19 | def create_comment_if_not_exist(self): | CODE |
| LOW | .github/workflows/bot/github_graphql/manager.py | 70 | def __get_orgnization_project(self, project_number): | CODE |
| LOW | .github/workflows/bot/label_action/create_e2e.py | 98 | def _find_or_create_milestone(self, milestone_title, harvester_milestone): | CODE |
| LOW | .github/workflows/bot/label_action/create_backport.py | 103 | def create_issue_if_not_exist(self): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/issue-management-add-to-projects.yml | 28 | # Check if email or company contains 'suse' (case insensitive) | COMMENT |
| LOW | .github/workflows/issue-management-add-to-projects.yml | 122 | # Check if email or company contains 'suse' (case insensitive) | COMMENT |
| LOW | package/upgrade/upgrade_manifests.sh | 1445 | # Check if .spec.rkeConfig.registries is not null or empty. | COMMENT |
| LOW | package/upgrade/lib.sh | 285 | # Check if images already exist | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | package/upgrade/upgrade_node.sh | 99 | # Create a systemd service on host to reboot the host if this running pod succeeds. | COMMENT |
| MEDIUM | package/harvester-os/files/usr/bin/setup-installer.sh | 2 | # Create a systemd drop-in unit to run installer on the first console tty. e.g., | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pkg/util/constants.go | 86 | // For any storageclass created & protected by controller, the controller can utilize this annotation | COMMENT |
| MEDIUM | pkg/controller/master/nodedrain/nodedrain_controller.go | 461 | // FindNonMigratableVMS is called by action handler to leverage caches to find unhealthy VM's impacted by the migration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/scan-and-notify-testing-items.py | 37 | except Exception as e: | CODE |
| MEDIUM | .github/workflows/scan-and-notify-testing-items.py | 38 | print(f"Error adding {emoji} reaction: {e}") | CODE |
| LOW | .github/workflows/bot/label_action/create_e2e.py | 134 | except Exception as e: | CODE |
| LOW | .github/workflows/bot/label_action/create_backport.py | 52 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ub/workflows/migrate-zenhub-board-to-github-project.py | 3 | CODE | |
| LOW | .github/workflows/bot/config.py | 5 | CODE | |
| LOW | .github/workflows/bot/__init__.py | 1 | CODE | |
| LOW | .github/workflows/bot/__init__.py | 2 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/scan-and-notify-testing-items.py | 11 | CODE | |
| LOW | .github/workflows/scan-and-notify-testing-items.py | 139 | CODE | |
| LOW | .github/workflows/scan-and-notify-testing-items.py | 243 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …ependency_charts/whereabouts/templates/reconciler.yaml | 1 | # Don't forget to update doc/crds/reconciler-deployment.yaml as well | COMMENT |