A network load-balancer implementation for Kubernetes using standard routing protocols
This report summarizes scanner evidence for metallb/metallb, a Go project with 8,392 GitHub stars. SynthScan examined 173,043 lines of code across 913 source files, recording 184 pattern matches distributed across 16 syntactic categories. The legacy adjusted pattern signal is 2.0 (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? 139 finding(s).
Are imports declared and package/API names verified? 36 finding(s).
Are wrappers, guards, and repeated structures necessary? 18 finding(s).
Which changes need focused human review? 184 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 184 distinct pattern matches across 16 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 | design/preferred-node-l2.md | 61 | // leader election. Nodes matching these selectors receive a higher score | COMMENT |
| LOW | design/crd-configstate.md | 41 | $ kubectl get configurationstates -n metallb-system -l metallb.io/node-name=kind-worker | COMMENT |
| LOW | frr-tools/metrics/collector/bgp_test.go | 21 | metallb_bgp_keepalives_received{peer="{{ .NeighborIP }}", vrf="{{ .NeighborVRF }}"} {{ .KeepalivesReceived }} | COMMENT |
| LOW | frr-tools/metrics/collector/bfd_test.go | 21 | metallb_bfd_control_packet_input{peer="{{ .Peer }}", vrf="{{ .NeighborVRF }}"} {{ .ControlPacketInput }} | COMMENT |
| LOW | config/frr/frr-cm.yaml | 1 | # FRR expects to have these files owned by frr:frr on startup. | COMMENT |
| LOW | config/frr/frr-cm.yaml | 61 | pbrd_options=" -A 127.0.0.1" | COMMENT |
| LOW | config/prometheus-frr/rbac-proxy-patch.yaml | 1 | # Native TLS is now built into the controller, speaker, and frr-metrics binaries. | COMMENT |
| LOW | config/manifests/metallb-frr-k8s-prometheus.yaml | 3661 | babeld_options=" -A 127.0.0.1" | COMMENT |
| LOW | config/manifests/metallb-frr-k8s.yaml | 3561 | # ATTENTION: | COMMENT |
| LOW | config/manifests/metallb-frr-k8s.yaml | 3621 | # Upon startup this is read by the control files and ulimit | COMMENT |
| LOW | config/manifests/metallb-frr-prometheus.yaml | 2221 | # /usr/share/doc/frr/examples/. | COMMENT |
| LOW | config/manifests/metallb-frr-prometheus.yaml | 2281 | # | COMMENT |
| LOW | config/manifests/metallb-frr.yaml | 2161 | data: | COMMENT |
| LOW | config/manifests/metallb-frr.yaml | 2221 | # configuration profile | COMMENT |
| LOW | config/prometheus-native/rbac-proxy-patch.yaml | 1 | # Native TLS is now built into the controller and speaker binaries. | COMMENT |
| LOW | speaker/layer2_controller.go | 1 | // Copyright 2017 Google Inc. | COMMENT |
| LOW | speaker/main.go | 1 | // Copyright 2017 Google Inc. | COMMENT |
| LOW | speaker/bgp_controller.go | 1 | // Copyright 2017 Google Inc. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 1 | # If an option value is said to be not set, you can achieve the same behavior | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 21 | COMMENT | |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 41 | # Branding | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 81 | # them with the same file name. In certain installations it was observed, that | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 101 | COMMENT | |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 121 | # those auxiliary languages here. This will create a search index with | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 141 | # If the TOC button is hidden, also the keyboard shortcut is disabled. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 161 | # `${FilePath}` which will be replaced by the file path of your displayed page. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 181 | # If shown, a Home button will appear below the search bar and the main menu. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 201 | # Shows expander for submenus. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 221 | # Hide the language switcher. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 241 | COMMENT | |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 261 | # Changes the title separator used when concatenating the page title with the | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 281 | # breadcrumbs to you, so this is the option to turn off breadcrumbs on term | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 301 | # Wrap for code blocks. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 321 | # aborted. | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 341 | # Links | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 361 | externalLinkTarget = "_blank" | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 381 | # Default: true | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 401 | COMMENT | |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 421 | # codefence is involved and the library is not loaded by default. In this case | COMMENT |
| LOW | …-theme-relearn/exampleSite/config/_default/params.toml | 441 | # OpenAPI will be loaded regardlessly. The option is still useful in case you | COMMENT |
| LOW | …go-theme-relearn/exampleSite/config/_default/hugo.toml | 1 | # this is a required setting for this theme to appear on https://themes.gohugo.io/ | COMMENT |
| LOW | …go-theme-relearn/exampleSite/config/_default/hugo.toml | 41 | [markup.highlight] | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 1 | # If an option value is said to be not set, you can achieve the same behavior | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 21 | # Default: not set | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 41 | disableToc = false | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 61 | # parameter is given but you want to hide the button for the displayed page, | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 81 | COMMENT | |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 101 | # If set to true, a submenu in the sidebar will be displayed in a collapsible | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 121 | # These options modify how your content is displayed. | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 141 | # default footer. | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 161 | COMMENT | |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 181 | COMMENT | |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 201 | # Specifies the remote location of the MathJax library. By default the shipped | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 221 | # If not set, the set value of your site's hugo.toml is used. | COMMENT |
| LOW | …/exampleSite/content/cont/frontmatter/frontmatter.toml | 241 | COMMENT | |
| LOW | website/themes/hugo-theme-relearn/static/css/theme.css | 421 | #R-topbar a:active:empty, | COMMENT |
| LOW | website/themes/hugo-theme-relearn/static/css/theme.css | 681 | #R-body div.box > .box-content > :nth-child(1 of :not(:empty)) :nth-child(1 of :not(:empty)), | COMMENT |
| LOW | website/themes/hugo-theme-relearn/static/css/theme.css | 1661 | h2 a, | COMMENT |
| LOW | …te/themes/hugo-theme-relearn/static/css/theme-neon.css | 261 | #R-body h2, | COMMENT |
| LOW | website/themes/hugo-theme-relearn/static/js/url.js | 1 | // https://github.com/inexorabletash/polyfill/blob/v0.1.25/url.js | COMMENT |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | …/hugo-theme-relearn/static/js/mathjax/tex-mml-chtml.js | 1 | !function(){"use strict";var t={351:function(t,e,r){var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPr | CODE |
| CRITICAL | …emes/hugo-theme-relearn/static/js/mathjax/tex-chtml.js | 1 | !function(){"use strict";var t={351:function(t,e,r){var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPr | CODE |
| CRITICAL | …emes/hugo-theme-relearn/static/js/mathjax/mml-chtml.js | 1 | !function(){"use strict";var t={351:function(t,e,r){var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPr | CODE |
| CRITICAL | …hugo-theme-relearn/static/js/mathjax/tex-chtml-full.js | 1 | !function(){"use strict";var t={351:function(t,e,r){var n,o=this&&this.__extends||(n=function(t,e){return(n=Object.setPr | CODE |
| CRITICAL | …ugo-theme-relearn/static/js/mathjax/input/asciimath.js | 1 | !function(){var t={884:function(t,e,i){"use strict";var n,a=this&&this.__extends||(n=function(t,e){return(n=Object.setPr | CODE |
| CRITICAL | …s/hugo-theme-relearn/static/js/mathjax/output/chtml.js | 1 | !function(){"use strict";var t,e,r,o,n,i,a,s,l,h,c,u,p,d,f,m,y,v,b,x,g,M,_,w,C,j,S,O,T,L,B,P,H,A,k,N,E,D,W,R,I,F,J,V,z,U | CODE |
| CRITICAL⚡ | …ugo-theme-relearn/static/js/mathjax/sre/sre_browser.js | 775 | sre.ClearspeakPreferences.Comparator=function(a,b){sre.DynamicCstr.DefaultComparator.call(this,a,b);this.preference=a.pr | CODE |
| CRITICAL⚡ | …ugo-theme-relearn/static/js/mathjax/sre/sre_browser.js | 776 | sre.ClearspeakPreferences.Comparator.prototype.compare=function(a,b){var c=sre.ClearspeakPreferences.Comparator.superCla | CODE |
| CRITICAL⚡ | …ugo-theme-relearn/static/js/mathjax/sre/sre_browser.js | 778 | sre.ClearspeakPreferences.Parser.prototype.parse=function(a){var b=sre.ClearspeakPreferences.Parser.superClass_.parse.ca | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config/frr/frr-cm.yaml | 86 | # or you can use "all_wrap" for all daemons, e.g. to use perf record: | COMMENT |
| MEDIUM | config/manifests/metallb-frr-k8s-prometheus.yaml | 3688 | # or you can use "all_wrap" for all daemons, e.g. to use perf record: | COMMENT |
| MEDIUM | config/manifests/metallb-frr-k8s.yaml | 3633 | # or you can use "all_wrap" for all daemons, e.g. to use perf record: | COMMENT |
| MEDIUM | config/manifests/metallb-frr-prometheus.yaml | 2295 | # or you can use "all_wrap" for all daemons, e.g. to use perf record: | COMMENT |
| MEDIUM | config/manifests/metallb-frr.yaml | 2240 | # or you can use "all_wrap" for all daemons, e.g. to use perf record: | COMMENT |
| MEDIUM | …-theme-relearn/exampleSite/config/_default/params.toml | 59 | # "blue", "green", "red". In addition you can use auto mode variants. See the | COMMENT |
| LOW⚡ | …-theme-relearn/exampleSite/config/_default/params.toml | 105 | # of Hugo and the theme in your HTML head. In tihs case also don't forget to | COMMENT |
| LOW⚡ | …-theme-relearn/exampleSite/config/_default/params.toml | 105 | # of Hugo and the theme in your HTML head. In tihs case also don't forget to | COMMENT |
| MEDIUM | …go-theme-relearn/exampleSite/config/_default/hugo.toml | 47 | # stylesheets which are linked in your generated HTML pages; you can use Hugo to generate | COMMENT |
| MEDIUM | …go-theme-relearn/exampleSite/config/_default/hugo.toml | 75 | # showcase of the menu shortcuts; you can use relative URLs linking | COMMENT |
| MEDIUM | charts/metallb/templates/speaker.yaml | 110 | # or you can use "all_wrap" for all daemons, e.g. to use perf record: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | website/content/release-notes/_index.md | 122 | - Remove valid, but expired "placeholder" caBundle from the BGPPeers CRD conversion webhook configuration. (#2696, @dlip | CODE |
| LOW⚡ | …eme-relearn/exampleSite/content/shortcodes/badge.en.md | 224 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. {{%/* badge style="blue" icon="rocket" %}}Aw | CODE |
| LOW⚡ | …eme-relearn/exampleSite/content/shortcodes/badge.en.md | 224 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. {{%/* badge style="blue" icon="rocket" %}}Aw | CODE |
| LOW⚡ | …eme-relearn/exampleSite/content/shortcodes/badge.en.md | 227 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. {{% badge style="blue" icon="rocket" %}}Awes | CODE |
| LOW⚡ | …eme-relearn/exampleSite/content/shortcodes/badge.en.md | 227 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. {{% badge style="blue" icon="rocket" %}}Awes | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 48 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 48 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 54 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 54 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 99 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 99 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 107 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW⚡ | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 107 | Lorem ipsum dolor sit amet, graecis denique ei vel, at duo primis mandamus. | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 226 | - Lorem ipsum dolor sit amet | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 226 | - Lorem ipsum dolor sit amet | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 237 | - Lorem ipsum dolor sit amet | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 237 | - Lorem ipsum dolor sit amet | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 256 | 1. Lorem ipsum dolor sit amet | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 256 | 1. Lorem ipsum dolor sit amet | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 267 | 1. Lorem ipsum dolor sit amet | CODE |
| LOW | …-theme-relearn/exampleSite/content/cont/markdown.en.md | 267 | 1. Lorem ipsum dolor sit amet | CODE |
| LOW | …learn/exampleSite/content/cont/archetypes/_index.en.md | 32 | Lorem Ipsum. | CODE |
| LOW | …learn/exampleSite/content/cont/archetypes/_index.en.md | 56 | Lorem Ipsum. | CODE |
| LOW | …learn/exampleSite/content/cont/archetypes/_index.en.md | 86 | Lorem Ipsum. | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tasks.py | 714 | except FileExistsError: | CODE |
| HIGH | tasks.py | 1128 | except UnexpectedExit: | CODE |
| HIGH | tasks.py | 281 | except: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …us-operator-0alertmanagerCustomResourceDefinition.yaml | 0 | type: string resourcefieldref: description: 'selects a resource of the container: only resources limits and requests (li | STRING |
| HIGH | …heus-operator-0prometheusCustomResourceDefinition.yaml | 0 | type: string resourcefieldref: description: 'selects a resource of the container: only resources limits and requests (li | STRING |
| HIGH | …eus-operator-0thanosrulerCustomResourceDefinition.yaml | 0 | type: string resourcefieldref: description: 'selects a resource of the container: only resources limits and requests (li | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tasks.py | 711 | # Create a new directory that will be used as the config volume for frr. | COMMENT |
| MEDIUM | config/prometheus-frr/rbac-proxy-patch.yaml | 3 | # This file is kept for kustomize compatibility but applies no changes. | COMMENT |
| MEDIUM | config/prometheus-native/rbac-proxy-patch.yaml | 3 | # This file is kept for kustomize compatibility but applies no changes. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tasks.py | 136 | def _get_subnets_allocated_ips(): | CODE |
| LOW | tasks.py | 1369 | def remove_lb_exclusion_from_nodes(ctx): | CODE |
| LOW | website/themes/hugo-theme-relearn/static/js/theme.js | 1045 | function closeSomeTopbarButtonFlyout(){ | CODE |
| LOW | website/themes/hugo-theme-relearn/static/js/theme.js | 1082 | function topbarFlyoutEscapeHandler( event ){ | CODE |
| LOW | website/themes/hugo-theme-relearn/static/js/theme.js | 1704 | function adjustEmptyTopbarContents(){ | CODE |
| LOW | …te/themes/hugo-theme-relearn/static/js/lunr/wordcut.js | 5137 | function createPredicateIndexFinder(dir) { | CODE |
| LOW | …n/static/js/swagger-ui/swagger-ui-standalone-preset.js | 2 | !function webpackUniversalModuleDefinition(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"fu | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tasks.py | 1743 | run("cd e2etest && go mod tidy", echo=True) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tasks.py | 387 | except Exception as e: | CODE |
| LOW | tasks.py | 716 | except Exception as e: | CODE |
| MEDIUM | tasks.py | 111 | def _is_network_exist(network): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/k8s/k8s.go | 80 | // +kubebuilder:scaffold:scheme | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | internal/k8s/controllers/config_conversion.go | 29 | // We need to do this ballet because we need to leverage the GetName() function | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | …-theme-relearn/exampleSite/config/_default/params.toml | 104 | # Set this to true if you want to disable generation for generator meta tags | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tasks.py | 254 | CODE | |
| LOW | tasks.py | 1662 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tasks.py | 447 | CODE | |
| LOW | tasks.py | 1220 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tasks.py | 16 | CODE | |
| LOW | tasks.py | 18 | CODE |