Rainbond is an open-source container platform that requires no Kubernetes expertise. Its core capabilities are 100% open source. It abstracts away infrastructure complexity and provides a unified way to deploy and manage business applications, AI-generated projects, open-source AI software, and large language model services. AI helps teams deploy
This report summarizes scanner evidence for goodrain/rainbond, a Go project with 6,290 GitHub stars. SynthScan examined 492,653 lines of code across 2341 source files, recording 1643 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 3.6 (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? 1604 finding(s).
Are imports declared and package/API names verified? 7 finding(s).
Are wrappers, guards, and repeated structures necessary? 69 finding(s).
Which changes need focused human review? 1643 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 1643 distinct pattern matches across 14 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 |
|---|---|---|---|---|
| LOW | cmd/version.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/grctl/grctl.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/grctl/server/grctl.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/grctl/option/conf.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/init-probe/probe.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | cmd/init-probe/cmd/probe_cmd.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | cmd/init-probe/healthy/depends_health.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | cmd/api/main.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/api/option/option.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/mq/mq.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/worker/worker.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | cmd/builder/builder.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/clients/kubernetes.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/cmd/config.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | grctl/cmd/cmd.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/cmd/build.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | grctl/cmd/registry.go | 1 | // Copyright (C) 2014-2021 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/cmd/replace.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/cluster/cluster.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | grctl/registry/freeversion.go | 1 | // Copyright (C) 2014-2021 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/registry/freeimage.go | 1 | // Copyright (C) 2014-2021 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/registry/registry.go | 1 | // Copyright (C) 2014-2021 Goodrain Co., Ltd. | COMMENT |
| LOW | grctl/registry/freecomponent.go | 1 | // Copyright (C) 2014-2021 Goodrain Co., Ltd. | COMMENT |
| LOW | util/sshclient.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/ippool.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/command.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/uuid_test.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/pprofer.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/comman.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/hosts.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/constants.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/string_test.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/sshclient_test.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/chan.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/hash_test.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/language.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/ip.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/copyio.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/ip_test.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/comman_test.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/hash.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/uuid.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/bytes.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/string.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/prober/manager_test.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/prober/manager.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/prober/probes/http.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/prober/probes/probe.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/prober/types/v1/types.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/grpc/resolver.go | 1 | // Copyright 2016 The etcd Authors | COMMENT |
| LOW | util/retryutil/retry_util.go | 1 | // Copyright (C) 2014-2021 Goodrain Co., Ltd. | COMMENT |
| LOW | util/leader/kube_leader.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/ansible/node.go | 1 | // Copyright (C) 2014-2018 Goodrain Co., Ltd. | COMMENT |
| LOW | util/zip/register.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/zip/writer.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/zip/writer.go | 221 | COMMENT | |
| LOW | util/zip/writer.go | 281 | // Officially, the name and comment fields are supposed to be encoded | COMMENT |
| LOW | util/zip/reader.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| LOW | util/zip/reader.go | 461 | // signature, the value 0x08074b50 has commonly been adopted | COMMENT |
| LOW | util/zip/struct.go | 1 | // RAINBOND, Application Management Platform | COMMENT |
| 1478 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | hack/release/release.py | 88 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 90 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | hack/release/release.py | 103 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | hack/release/release.py | 105 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | hack/release/release.py | 169 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | hack/release/release.py | 171 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 204 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 206 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 235 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 237 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 258 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 260 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 280 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 282 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 345 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | hack/release/release.py | 347 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 1 | # ============================================================================= | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 19 | # ============================================================================= | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 66 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 68 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 110 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 112 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 178 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 180 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 234 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 236 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 282 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | .github/workflows/dev-build.yml | 286 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | api/handler/k8s_attribute_vm_runtime_test.go | 239 | if updated.Spec.Template.Spec.Domain.Memory.Guest.Cmp(targetMemory) != 0 { | CODE |
| CRITICAL | api/handler/k8s_attribute_vm_runtime_test.go | 294 | if updated.Spec.Template.Spec.Domain.Memory.Guest.Cmp(targetMemory) != 0 { | CODE |
| CRITICAL | api/handler/k8s_attribute_vm_runtime_test.go | 356 | if updated.Spec.Template.Spec.Domain.Memory.Guest.Cmp(targetMemory) != 0 { | CODE |
| CRITICAL | api/handler/k8s_attribute_vm_runtime_test.go | 426 | if updated.Spec.Template.Spec.Domain.Memory.Guest.Cmp(desiredMemory) != 0 { | CODE |
| CRITICAL | api/handler/service_vm_live_update.go | 150 | if vm.Spec.Template.Spec.Domain.Memory.Guest == nil || vm.Spec.Template.Spec.Domain.Memory.Guest.Cmp(targetGuest) != 0 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | hack/release/release.py | 111 | def validate_upgrade_versions(entries): | CODE |
| LOW⚡ | hack/release/release.py | 163 | def release_date_from_timestamp(published_at, tz_hours=8): | CODE |
| LOW⚡ | hack/release/release_test.py | 22 | def test_parse_and_chart_version(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 26 | def test_rejects_non_release_tags(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 33 | def test_entry_matches_published_shape(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 49 | def test_sorts_by_semver_not_string(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 54 | def test_rerun_same_release_is_noop(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 60 | def test_conflicting_existing_entry_is_refused(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 65 | def test_foreign_image_is_refused(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 71 | def test_unsorted_feed_is_refused(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 75 | def test_china_date_from_utc_timestamp(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 79 | def test_checked_in_feed_is_valid_and_round_trips(self): | CODE |
| LOW | hack/release/release_test.py | 91 | def test_install_script_only_changes_version_line(self): | CODE |
| LOW | hack/release/release_test.py | 95 | def test_install_script_requires_exactly_one_line(self): | CODE |
| LOW | hack/release/release_test.py | 109 | def test_chart_never_moves_backwards(self): | CODE |
| LOW | hack/release/release_test.py | 115 | def test_chart_bump_ignores_nested_version_keys(self): | CODE |
| LOW⚡ | hack/release/release_test.py | 139 | def test_patch_release_does_not_touch_docs(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 144 | def test_new_minor_rolls_table(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 153 | def test_older_release_leaves_docs_alone(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 209 | def test_green_full_run_of_same_commits_passes(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 212 | def test_failed_or_env_failure_blocks(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 216 | def test_fast_tier_does_not_count(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 224 | def test_nightly_without_sources_blocks(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 229 | def test_signature_matches_feishu_algorithm(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 235 | def test_payload_without_secret(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 244 | def test_payload_with_secret_is_signed(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 249 | def test_notify_without_webhook_is_a_no_op(self): | STRING |
| LOW⚡ | hack/release/release_test.py | 257 | def test_notify_failure_does_not_fail(self): | STRING |
| LOW | hack/release/release_test.py | 169 | def test_single_arch_and_missing_are_reported(self): | STRING |
| LOW | hack/release/release_test.py | 180 | def test_bearer_challenge_is_followed(self): | STRING |
| LOW⚡ | …/contrib/docker/registry-gc/provision_identity_test.py | 13 | def test_independent_keys_and_console_scope_are_consistent(self): | CODE |
| LOW⚡ | …/contrib/docker/registry-gc/provision_identity_test.py | 23 | def test_reuse_does_not_rotate_existing_credentials(self): | CODE |
| LOW⚡ | …/contrib/docker/registry-gc/provision_identity_test.py | 31 | def test_partial_installation_preserves_existing_key(self): | CODE |
| LOW⚡ | …/contrib/docker/registry-gc/provision_identity_test.py | 41 | def test_foreign_scope_or_corruption_blocks_all_writes(self): | CODE |
| LOW⚡ | …/contrib/docker/registry-gc/provision_identity_test.py | 54 | def test_reused_shared_key_is_rejected(self): | CODE |
| LOW⚡ | …/contrib/docker/registry-gc/provision_identity_test.py | 60 | def test_create_race_does_not_overwrite_or_print_credentials(self): | CODE |
| LOW⚡ | …/contrib/docker/registry-gc/provision_identity_test.py | 69 | def test_cli_requires_explicit_context_and_redacts_subprocess_errors(self): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | third_party/process-exporter/proc/tracker.go | 419 | // Step 1: track any new proc that should be tracked based on its name and cmdline. | COMMENT |
| LOW | third_party/process-exporter/proc/tracker.go | 440 | // Step 2: track any untracked new proc that should be tracked because its parent is tracked. | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_5.md | 133 | #### Step 1: check upgrade requirements | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_5.md | 161 | #### Step 2: download snapshot backup from leader | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_5.md | 195 | #### Step 3: stop one existing etcd server | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_5.md | 250 | #### Step 4: restart the etcd server with same configuration | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_5.md | 299 | #### Step 5: repeat *step 3* and *step 4* for rest of the members | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_4.md | 257 | #### Step 1: check upgrade requirements | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_4.md | 285 | #### Step 2: download snapshot backup from leader | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_4.md | 319 | #### Step 3: stop one existing etcd server | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_4.md | 367 | #### Step 4: restart the etcd server with same configuration | COMMENT |
| LOW | …arty/coreos-etcd/Documentation/upgrades/upgrade_3_4.md | 418 | #### Step 5: repeat *step 3* and *step 4* for rest of the members | COMMENT |
| LOW | pkg/component/filepersistence/volcengine.go | 168 | // Step 1: Find the file system ID by name | COMMENT |
| LOW | pkg/component/filepersistence/volcengine.go | 189 | // Step 2: Delete the file system by ID | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | third_party/coreos-etcd/etcdserver/server.go | 162 | // The API/raft component can utilize ClusterVersion to determine if | COMMENT |
| MEDIUM | builder/parser/compose/version3.go | 154 | // NOTE: V3 doesn't use IP (they utilize Swarm instead for host-networking). | COMMENT |
| MEDIUM | builder/sources/container_config.go | 80 | // container, and the runtime should leverage this to ensure correct | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | third_party/process-exporter/proc/tracker.go | 419 | // Step 1: track any new proc that should be tracked based on its name and cmdline. | COMMENT |
| LOW | third_party/process-exporter/proc/tracker.go | 440 | // Step 2: track any untracked new proc that should be tracked because its parent is tracked. | COMMENT |
| LOW | pkg/apis/rainbond/v1alpha1/helmapp_status.go | 82 | // We are updating an existing condition, so we need to check if it has changed. | COMMENT |
| LOW | pkg/component/filepersistence/volcengine.go | 168 | // Step 1: Find the file system ID by name | COMMENT |
| LOW | pkg/component/filepersistence/volcengine.go | 189 | // Step 2: Delete the file system by ID | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | hack/release/release.py | 447 | except Exception as err: # noqa: BLE001 | CODE |
| LOW | hack/contrib/docker/registry-gc/provision_identity.py | 60 | except Exception: | CODE |
| LOW | hack/contrib/docker/registry-gc/provision_identity.py | 111 | except Exception: | CODE |
| MEDIUM | hack/contrib/docker/registry-gc/provision_identity.py | 40 | def validate_secret(secret, name, enterprise, region): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | third_party/coreos-etcd/pkg/proxy/server.go | 247 | // TODO: implement packet reordering from multiple TCP connections | COMMENT |
| LOW | …_party/coreos-etcd/etcdserver/api/v3client/v3client.go | 48 | // TODO: implement clientv3.Auth interface? | COMMENT |
| LOW | pkg/apis/rainbond/v1alpha1/third_component.go | 203 | // TODO: implement a realistic TCP lifecycle hook | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | .github/workflows/mimo.yml | 92 | # Define the MiMo provider. apiKey uses {env:...} so the key is read at | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | pkg/common/scheme.go | 41 | // +kubebuilder:scaffold:scheme | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/validate_test_manifest.py | 55 | CODE | |
| LOW | scripts/report_go_test_coverage.py | 60 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | util/govalidator/validator_map.go | 14 | // e.g: data := map[string]interface{}{"name": "John Doe", "age": 30, "single": false} | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/report_go_test_coverage.py | 4 | CODE |