AI Slop Code Risk Monitor

tinygo-org/tinygo

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

Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.

2.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for tinygo-org/tinygo, a Go project with 17,868 GitHub stars. SynthScan examined 238,430 lines of code across 2044 source files, recording 654 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 2.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.

2.8
Adjusted Signal
2.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
17.9K
Stars
Go
Language
238.4K
Lines of Code
2.0K
Files
654
Pattern Hits
2026-10-31
Scan Date
0.00
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 12.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 0.1/100 · LOW

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

PR Review Velocity Impact 13.0/100 · LOW

Which changes need focused human review? 654 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 0MEDIUM 5LOW 649

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 654 distinct pattern matches across 9 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 Block623 hits · 604 pts
SeverityFileLineSnippetContext
LOWdiff.go21//COMMENT
LOWmain.go2381// handleChdirFlag handles the -C flag before doing anything else.COMMENT
LOWtestdata/corpus.yaml1# This contains code from https://github.com/dgryski/tinygo-test-corpusCOMMENT
LOWtestdata/corpus.yaml241 - pkg: stat/distmatCOMMENT
LOWtestdata/corpus.yaml261 #- pkg: spatial/vptree # panic: unimplemented: (reflect.Value).MapKeys()COMMENT
LOWtestdata/gc-liveness-repro.go1// A pointer that is live in a frame is not necessarily rooted by that frame.COMMENT
LOWtestdata/cgo/main.go1package mainCOMMENT
LOWtestdata/errors/compiler.go21// ERROR: compiler.go:4:6: can only use //go:wasmimport on declarationsCOMMENT
LOWtestdata/errors/pragma.go61}COMMENT
LOWtestdata/errors/interp.go21// ERROR: # mainCOMMENT
LOWtools/gen-device-svd/gen-device-svd.go941 return fieldsCOMMENT
LOWinterp/memory.go1package interpCOMMENT
LOWinterp/memory.go61// A memoryView is bound to a function activation. Loads are done from this viewCOMMENT
LOWinterp/memory.go1101 }COMMENT
LOWinterp/compiler.go281 // Encode operands in a special way. The elementOffsetCOMMENT
LOWinterp/interpreter.go81 startRTInsts = len(mem.instructions)COMMENT
LOWinterp/interp_test.go121// around).COMMENT
LOWgoenv/goenv.go341// -resource-dir flag. If it isn't available, an empty string is returned andCOMMENT
LOWtests/text/template/smoke/smoke_test.go41 t := template.Must(template.New("letter").Parse(letter))COMMENT
LOWtests/text/template/smoke/smoke_test.go61 //COMMENT
LOWtests/text/template/smoke/smoke_test.go101 // Output:COMMENT
LOWinternal/diff/diff.go21//COMMENT
LOWinternal/diff/diff.go181// tgs returns the pairs of indexes of the longest common subsequenceCOMMENT
LOWdocs/conf.py1# -*- coding: utf-8 -*-COMMENT
LOWdocs/conf.py21# sys.path.insert(0, os.path.abspath('.'))COMMENT
LOWdocs/conf.py61# The full version, including alpha/beta/rc tags.COMMENT
LOWdocs/conf.py81# directories to ignore when looking for source files.COMMENT
LOWdocs/conf.py101#COMMENT
LOWdocs/conf.py121#COMMENT
LOWdocs/conf.py141COMMENT
LOWdocs/conf.py161COMMENT
LOWdocs/conf.py181# html_sidebars = {}COMMENT
LOWdocs/conf.py201#COMMENT
LOWdocs/conf.py221# Language to be used for generating the HTML full-text search index.COMMENT
LOWdocs/conf.py241COMMENT
LOWdocs/conf.py261COMMENT
LOWdocs/conf.py281#COMMENT
LOWdocs/conf.py321# dir menu entry, description, category)COMMENT
LOWdocs/conf.py341#COMMENT
LOWcgo/libclang_config_llvm22.go1//go:build !byollvm && llvm22COMMENT
LOWcgo/libclang_config_llvm16.go1//go:build !byollvm && llvm16COMMENT
LOWcgo/libclang_config_llvm23.go1//go:build !byollvm && llvm23COMMENT
LOWcgo/libclang_config_llvm17.go1//go:build !byollvm && llvm17COMMENT
LOWcgo/libclang_config_llvm18.go1//go:build !byollvm && llvm18COMMENT
LOWcgo/cgo_test.go241func TestCGoBuildConstraints(t *testing.T) {COMMENT
LOWcgo/security.go1// Copyright 2018 The Go Authors. All rights reserved.COMMENT
LOWcgo/libclang_config_llvm19.go1//go:build !byollvm && llvm19COMMENT
LOWcgo/libclang.go21)COMMENT
LOWcgo/libclang.go661 // Starting with LLVM 16, the elaborated type is used for more types.COMMENT
LOWcgo/cgo.go1// Package cgo implements CGo by modifying a loaded AST. It does this by parsingCOMMENT
LOWcgo/cgo.go701// return (*float64)(unsafe.Pointer(&union.$union))COMMENT
LOWcgo/cgo.go921 }COMMENT
LOWcgo/libclang_config_llvm20.go1//go:build !byollvm && !llvm15 && !llvm16 && !llvm17 && !llvm18 && !llvm19 && !llvm21 && !llvm22 && !llvm23COMMENT
LOWcgo/libclang_config_llvm21.go1//go:build !byollvm && llvm21COMMENT
LOWcgo/libclang_config_llvm15.go1//go:build !byollvm && llvm15COMMENT
LOWcgo/testdata/flags.go1package mainCOMMENT
LOWcgo/testdata/errors.out.go1// CGo errors:COMMENT
LOWcgo/testdata/errors.go21#define SOME_CONST_b 3 ) // const with lots of weird whitespace (to test error locations)COMMENT
LOWloader/goroot.go301// Note that while Windows 10 does support symlinks and allows them to beCOMMENT
LOWloader/loader.go241 Err: err,COMMENT
563 more matches not shown…
TODO Padding14 hits · 21 pts
SeverityFileLineSnippetContext
LOWsrc/reflect/type.go397 // TODO: implement canRangeFuncCOMMENT
LOWsrc/reflect/type.go411 // TODO: implement canRangeFunc2COMMENT
LOWsrc/internal/cm/stream.go15// TODO: implement methods on type streamCOMMENT
LOWsrc/internal/cm/future.go15// TODO: implement methods on type futureCOMMENT
LOWsrc/testing/testing_test.go3// TODO: implement readdir for windows, then enable this fileCOMMENT
LOWsrc/machine/machine_mimxrt1062_i2c.go165 // TODO: implementCOMMENT
LOWsrc/machine/machine_stm32f103.go337// TODO: implement SPI2 and SPI3.COMMENT
LOWsrc/machine/machine_stm32f103.go384// TODO: implement I2C2.COMMENT
LOWsrc/machine/machine_stm32u031.go178 // TODO: implement output channelsCOMMENT
LOWsrc/machine/board_stm32f469disco.go62// TODO: implement SPI2 and SPI3.COMMENT
LOWsrc/machine/board_stm32f4disco.go89// TODO: implement SPI2 and SPI3.COMMENT
LOWsrc/machine/machine_stm32_i2c_reva.go162 // TODO: implementCOMMENT
LOWsrc/device/arm/semihosting.go62// TODO: implement it here using inline assembly.COMMENT
LOWsrc/os/removeall_test.go3// TODO: implement ReadDir on windowsCOMMENT
Verbosity Indicators4 hits · 9 pts
SeverityFileLineSnippetContext
LOW⚡src/machine/machine_nrf52840.go83 // Step 1: wait for new sampling to start for target bufferCOMMENT
LOW⚡src/machine/machine_nrf52840.go88 // Step 2: swap out buffers for next recording so we don't continue toCOMMENT
LOW⚡src/machine/machine_nrf52840.go94 // Step 3: wait for original event to endCOMMENT
LOW⚡src/machine/machine_nrf52840.go98 // Step 4: wait for default buffer to start recording before proceedingCOMMENT
Structural Annotation Overuse4 hits · 9 pts
SeverityFileLineSnippetContext
LOW⚡src/machine/machine_nrf52840.go83 // Step 1: wait for new sampling to start for target bufferCOMMENT
LOW⚡src/machine/machine_nrf52840.go88 // Step 2: swap out buffers for next recording so we don't continue toCOMMENT
LOW⚡src/machine/machine_nrf52840.go94 // Step 3: wait for original event to endCOMMENT
LOW⚡src/machine/machine_nrf52840.go98 // Step 4: wait for default buffer to start recording before proceedingCOMMENT
AI Slop Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
LOWtools/tgtestjson.sh6# TODO: let's just add -json support to tinygo test.COMMENT
MEDIUMsrc/runtime/complex.go24 // Algorithm for robust complex division as described inCOMMENT
MEDIUMsrc/runtime/pprof/label.go75// Currently only the CPU and goroutine profiles utilize any labelsCOMMENT
Decorative Section Separators2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMsrc/machine/machine_esp32c6_adc.go107// ── regI2C: internal I2C-bus (LP_I2C_ANA_MST) for SAR ADC calibration ───────COMMENT
MEDIUMsrc/machine/machine_esp32c6_adc.go334// ── Self-calibration ──────────────────────────────────────────────────────────COMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMdocs/conf.py6# This file is execfile()d with the current directory set to itsCOMMENT
Slop Phrases2 hits · 3 pts
SeverityFileLineSnippetContext
LOWcompiler/llvm.go22// This is useful for creating temporary allocas for intrinsics. Don't forget toCOMMENT
LOWcompiler/llvmutil/llvm.go38// This is useful for creating temporary allocas for intrinsics. Don't forget toCOMMENT
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWdocs/conf.py123CODE