AI Slop Code Risk Monitor

osrg/gobgp

SlopCodeMonitor badge for osrg/gobgp Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

BGP implemented in the Go Programming Language

2.4 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for osrg/gobgp, a Go project with 4,118 GitHub stars. SynthScan examined 219,919 lines of code across 298 source files, recording 486 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 2.4 (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.

2.4
Adjusted Signal
2.4
Raw Pattern Score
100%
Time Factor
2026-10-29
Last Push
4.1K
Stars
Go
Language
219.9K
Lines of Code
298
Files
486
Pattern Hits
2026-10-31
Scan Date
0.06
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 8.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 2.3/100 · LOW

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

Agent Over-Engineering Ratio 1.0/100 · LOW

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

PR Review Velocity Impact 12.3/100 · LOW

Which changes need focused human review? 486 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 18MEDIUM 1LOW 467

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 486 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 Block355 hits · 324 pts
SeverityFileLineSnippetContext
LOWcmd/gobgp/global.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/vrf.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/neighbor_test.go1// Copyright (C) 2026 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/monitor.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/neighbor.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/policy_test.go1// Copyright (C) 2026 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/policy.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/common_test.go1// Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/tcp_ao_test.go1// Copyright (C) 2026 The GoBGP Authors.COMMENT
LOWcmd/gobgp/loglevel.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/mrt.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/common.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/rpki.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/bmp.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/global_test.go1// Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/tcp_ao.go1// Copyright (C) 2026 The GoBGP Authors.COMMENT
LOWcmd/gobgp/main.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgp/root.go1// Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgpd/util.go1// Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.COMMENT
LOWcmd/gobgpd/main.go1//COMMENT
LOWtools/grep_non_ascii.sh1#!/usr/bin/env bashCOMMENT
LOWtools/pyang_plugins/bgpyang2golang.py1# Copyright (C) 2014,2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtools/pyang_plugins/bgpyang2golang.py21from pyang import pluginCOMMENT
LOWtools/spell-check/scspell.sh1#!/usr/bin/env bashCOMMENT
LOWtools/mrt-updates/main.go1// Copyright (C) 2026 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtools/mrt-updates/main.go121 return errShortCOMMENT
LOWtest/scenario_test/route_server_softreset_test.py1# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/bgp_ls_test.py1# Copyright (C) 2026 The GoBGP Authors.COMMENT
LOWtest/scenario_test/addpath_test.py1# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/bgp_confederation_test.py1# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/bgp_confederation_test.py41 # +-----Confederation(AS30)-----+COMMENT
LOWtest/scenario_test/zapi_v3_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/route_reflector_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/aspath_test.py1# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/route_server_as2_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/bgp_unnumbered_test.py1# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/bgp_malformed_msg_handling_test.py1# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/long_lived_graceful_restart_test.py1# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/route_server_malformed_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/evpn_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/zapi_v3_multipath_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/bgp_zebra_nht_test.py1# Copyright (C) 2017 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/tcp_ao_test.py1# Copyright (C) 2026 The GoBGP Authors.COMMENT
LOWtest/scenario_test/bgp_zebra_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/route_server_ipv4_v6_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/vrf_neighbor_test2.py1# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/rtc_test.py1# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/rtc_test.py221 self.__class__.g5 = g5COMMENT
LOWtest/scenario_test/rtc_test.py341 def test_20_rr_and_non_rr_setup(self):COMMENT
LOWtest/scenario_test/rtc_test.py621 # +----------+ +----------+COMMENT
LOWtest/scenario_test/rtc_test.py841 self.g5.local("gobgp vrf del vrf2")COMMENT
LOWtest/scenario_test/route_server_policy_grpc_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/route_server_test2.py1# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/ibgp_router_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/global_policy_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/route_server_policy_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/graceful_restart_test.py1# Copyright (C) 2016 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/bgp_router_test.py1# Copyright (C) 2015 Nippon Telegraph and Telephone Corporation.COMMENT
LOWtest/scenario_test/mup_test.py1# Copyright (C) 2022 Yuya Kusakabe <yuya.kusakabe@gmail.com>COMMENT
LOWtest/scenario_test/tcp_md5_test.py1# Copyright (C) 2026 Nippon Telegraph and Telephone Corporation.COMMENT
295 more matches not shown…
Unused Imports54 hits · 54 pts
SeverityFileLineSnippetContext
LOWtools/grpc/python/flowspec_mitigation.py45CODE
LOWtools/grpc/python/flowspec_mitigation.py46CODE
LOWtools/grpc/python/flowspec_mitigation.py49CODE
LOWtools/grpc/python/list_peer.py3CODE
LOWtools/grpc/python/list_peer.py4CODE
LOWtools/grpc/python/sr_policy.py3CODE
LOWtools/grpc/python/sr_policy.py4CODE
LOWtools/grpc/python/add_path.py3CODE
LOWtools/grpc/python/add_path.py4CODE
LOWtools/pyang_plugins/bgpyang2golang.py16CODE
LOWtest/scenario_test/route_server_softreset_test.py17CODE
LOWtest/scenario_test/addpath_test.py16CODE
LOWtest/scenario_test/addpath_test.py17CODE
LOWtest/scenario_test/addpath_test.py26CODE
LOWtest/scenario_test/bgp_confederation_test.py17CODE
LOWtest/scenario_test/bgp_confederation_test.py28CODE
LOWtest/scenario_test/zapi_v3_test.py16CODE
LOWtest/scenario_test/route_reflector_test.py17CODE
LOWtest/scenario_test/aspath_test.py17CODE
LOWtest/scenario_test/aspath_test.py28CODE
LOWtest/scenario_test/route_server_as2_test.py18CODE
LOWtest/scenario_test/route_server_as2_test.py28CODE
LOWtest/scenario_test/bgp_unnumbered_test.py20CODE
LOWtest/scenario_test/bgp_unnumbered_test.py22CODE
LOWtest/scenario_test/bgp_unnumbered_test.py23CODE
LOWtest/scenario_test/bgp_unnumbered_test.py30CODE
LOWtest/scenario_test/bgp_malformed_msg_handling_test.py17CODE
LOWtest/scenario_test/bgp_malformed_msg_handling_test.py28CODE
LOWtest/scenario_test/long_lived_graceful_restart_test.py18CODE
LOWtest/scenario_test/long_lived_graceful_restart_test.py29CODE
LOWtest/scenario_test/route_server_malformed_test.py29CODE
LOWtest/scenario_test/evpn_test.py18CODE
LOWtest/scenario_test/zapi_v3_multipath_test.py16CODE
LOWtest/scenario_test/bgp_zebra_nht_test.py16CODE
LOWtest/scenario_test/bgp_zebra_test.py17CODE
LOWtest/scenario_test/route_server_ipv4_v6_test.py17CODE
LOWtest/scenario_test/vrf_neighbor_test2.py17CODE
LOWtest/scenario_test/rtc_test.py18CODE
LOWtest/scenario_test/route_server_test2.py17CODE
LOWtest/scenario_test/ibgp_router_test.py18CODE
LOWtest/scenario_test/ibgp_router_test.py29CODE
LOWtest/scenario_test/global_policy_test.py17CODE
LOWtest/scenario_test/graceful_restart_test.py17CODE
LOWtest/scenario_test/bgp_router_test.py18CODE
LOWtest/scenario_test/mup_test.py18CODE
LOWtest/scenario_test/mup_test.py31CODE
LOWtest/scenario_test/tcp_md5_test.py19CODE
LOWtest/scenario_test/route_server_test.py17CODE
LOWtest/scenario_test/route_server_test.py28CODE
LOWtest/scenario_test/flow_spec_test.py17CODE
LOWtest/scenario_test/flow_spec_test.py28CODE
LOWtest/scenario_test/vrf_neighbor_test.py17CODE
LOWtest/lib/bird.py18CODE
LOWtest/lib/base.py17CODE
Cross-Language Confusion14 hits · 50 pts
SeverityFileLineSnippetContext
HIGHtools/pyang_plugins/bgpyang2golang.py288 print('if lhs == nil || rhs == nil {', file=fd)STRING
HIGH⚡test/scenario_test/bgp_zebra_nht_test.py81 " && echo OK || echo NG" % prefix,CODE
HIGH⚡test/scenario_test/bgp_zebra_nht_test.py89 " && echo OK || echo NG" % prefix,CODE
HIGH⚡test/scenario_test/bgp_zebra_nht_test.py97 " && echo OK || echo NG" % prefix,CODE
HIGHtest/scenario_test/route_server_policy_grpc_test.py888 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_grpc_test.py967 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_grpc_test.py1035 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_grpc_test.py1180 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_grpc_test.py1251 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_test.py937 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_test.py1023 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_test.py1099 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_test.py1258 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
HIGHtest/scenario_test/route_server_policy_test.py1336 | -> q2-rib -> q2-adj-rib-out | ->(community=null)-> q2STRING
Deep Nesting21 hits · 21 pts
SeverityFileLineSnippetContext
LOWtools/grpc/python/flowspec_mitigation.py254CODE
LOWtools/pyang_plugins/bgpyang2golang.py139CODE
LOWtools/pyang_plugins/bgpyang2golang.py367CODE
LOWtools/pyang_plugins/bgpyang2golang.py455CODE
LOWtools/pyang_plugins/bgpyang2golang.py581CODE
LOWtest/scenario_test/route_reflector_test.py101CODE
LOWtest/scenario_test/route_server_malformed_test.py461CODE
LOWtest/scenario_test/evpn_test.py38CODE
LOWtest/scenario_test/zapi_v3_multipath_test.py75CODE
LOWtest/scenario_test/route_server_ipv4_v6_test.py84CODE
LOWtest/scenario_test/route_server_policy_grpc_test.py1738CODE
LOWtest/scenario_test/route_server_policy_grpc_test.py1938CODE
LOWtest/scenario_test/ibgp_router_test.py115CODE
LOWtest/scenario_test/route_server_policy_test.py1863CODE
LOWtest/scenario_test/route_server_policy_test.py2280CODE
LOWtest/scenario_test/route_server_test.py78CODE
LOWtest/scenario_test/ci-scripts/build_embedded_go.py5CODE
LOWtest/lib/quagga.py151CODE
LOWtest/lib/gobgp.py365CODE
LOWtest/lib/base.py157CODE
LOWtest/lib/base.py434CODE
Hyper-Verbose Identifiers16 hits · 16 pts
SeverityFileLineSnippetContext
LOWtools/pyang_plugins/bgpyang2golang.py779def generate_common_functions(fd):STRING
LOWtest/scenario_test/bgp_ls_test.py145 def _has_expected_destinations():CODE
LOWtest/scenario_test/evpn_test.py38def get_mac_mobility_sequence(pattr):CODE
LOWtest/scenario_test/tcp_ao_test.py123def _assert_keepalives_advance(test, endpoints):CODE
LOWtest/scenario_test/rtc_test.py33def global_rib_paths_from_peer(src, dst, rf):CODE
LOWtest/scenario_test/tcp_md5_test.py82def _wait_dynamic_established(ctn, peer_addr):CODE
LOWtest/lib/quagga.py105 def get_global_rib_with_prefix(self, prefix, rf):CODE
LOWtest/lib/yabgp.py140 def _construct_ip_unicast_update(self, rf, prefix, nexthop):CODE
LOWtest/lib/yabgp.py221 def _construct_ip_unicast_withdraw(self, rf, prefix):CODE
LOWtest/lib/yabgp.py271 def _construct_flowspec_match(self, matchs):CODE
LOWtest/lib/yabgp.py288 def _construct_flowspec_update(self, rf, matchs, thens):CODE
LOWtest/lib/yabgp.py339 def _construct_flowspec_withdraw(self, rf, matchs):CODE
LOWtest/lib/exabgp.py140 def _construct_path_attributes(self, path):CODE
LOWtest/lib/gobgp.py146 def _get_enabled_quagga_daemons(self):CODE
LOWtest/lib/utils.py18def _dump_link_local_probe_diagnostics(a, b, aif, bif):CODE
LOWtest/lib/utils.py50def _link_local_ping_reachable(a, b, aif, bif, a_lladdr, b_lladdr):CODE
Empty Error Handlers3 hits · 15 pts
SeverityFileLineSnippetContext
HIGHtools/grpc/python/flowspec_mitigation.py273except grpc.RpcError:CODE
HIGHtest/lib/yabgp_helper.py46except KeyError:CODE
HIGHtest/lib/yabgp_helper.py57except KeyError:CODE
AI Structural Patterns9 hits · 9 pts
SeverityFileLineSnippetContext
LOWtools/pyang_plugins/bgpyang2golang.py484CODE
LOWtools/pyang_plugins/bgpyang2golang.py489CODE
LOWtest/lib/quagga.py324CODE
LOWtest/lib/yabgp.py397CODE
LOWtest/lib/exabgp.py177CODE
LOWtest/lib/gobgp.py62CODE
LOWtest/lib/gobgp.py600CODE
LOWtest/lib/base.py434CODE
LOWtest/lib/base.py545CODE
Verbosity Indicators4 hits · 9 pts
SeverityFileLineSnippetContext
LOW⚡internal/pkg/table/destination_test.go751 // Step 1: local path added via CLI -- no MED, no source (nil -> localSource)COMMENT
LOW⚡internal/pkg/table/destination_test.go760 // Step 2: path is added to destination (first time -- no old entry)COMMENT
LOW⚡internal/pkg/table/destination_test.go771 // Step 3: clone with IsNexthopInvalid=true (what applyToPathList does)COMMENT
LOW⚡internal/pkg/table/destination_test.go775 // Step 4: feed the invalidated clone into Calculate (what updatePath does)COMMENT
Structural Annotation Overuse4 hits · 9 pts
SeverityFileLineSnippetContext
LOW⚡internal/pkg/table/destination_test.go751 // Step 1: local path added via CLI -- no MED, no source (nil -> localSource)COMMENT
LOW⚡internal/pkg/table/destination_test.go760 // Step 2: path is added to destination (first time -- no old entry)COMMENT
LOW⚡internal/pkg/table/destination_test.go771 // Step 3: clone with IsNexthopInvalid=true (what applyToPathList does)COMMENT
LOW⚡internal/pkg/table/destination_test.go775 // Step 4: feed the invalidated clone into Calculate (what updatePath does)COMMENT
Excessive Try-Catch Wrapping5 hits · 6 pts
SeverityFileLineSnippetContext
LOWtools/grpc/python/flowspec_mitigation.py300 except Exception as e:CODE
LOWtools/grpc/python/flowspec_mitigation.py311 except Exception as e:CODE
LOWtest/lib/yabgp_helper.py184 except Exception as e:CODE
MEDIUMtest/lib/yabgp_helper.py41def _extract_nlri_list(msg):CODE
LOWtest/lib/utils.py73 except Exception:CODE
Docstring Block Structure1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtest/scenario_test/ci-scripts/build_embedded_go.py6 Extract embedded Go code snippets from a Markdown file and compile each of them. Args: filename (str):STRING