AI Slop Code Risk Monitor

odin-lang/Odin

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

Odin Programming Language

1.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for odin-lang/Odin, a Odin project with 12,233 GitHub stars. SynthScan examined 233,473 lines of code across 368 source files, recording 337 pattern matches distributed across 11 syntactic categories. The legacy adjusted pattern signal is 1.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.

1.8
Adjusted Signal
1.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
12.2K
Stars
Odin
Language
233.5K
Lines of Code
368
Files
337
Pattern Hits
2026-10-31
Scan Date
0.01
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 5.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.1/100 · LOW

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

Agent Over-Engineering Ratio 3.3/100 · LOW

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

PR Review Velocity Impact 9.5/100 · LOW

Which changes need focused human review? 337 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 2MEDIUM 59LOW 276

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 337 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 Block245 hits · 204 pts
SeverityFileLineSnippetContext
LOWcore/rexcode/isa/mos65816/tools/verify_against_ca65.sh1#!/usr/bin/env bashCOMMENT
LOWcore/rexcode/isa/mos65816/tools/verify_against_ca65.sh41 echo "ca65 failed — see errors above"COMMENT
LOWcore/rexcode/isa/arm32/tools/llvm_per_line.sh1#!/bin/bashCOMMENT
LOWcore/rexcode/isa/mips/tools/llvm_per_line.sh1#!/bin/bashCOMMENT
LOWcore/rexcode/isa/rsp/tools/armips_lwv_patch.sh1#!/usr/bin/env bashCOMMENT
LOWcore/rexcode/isa/rsp/tools/verify_against_armips.sh1#!/usr/bin/env bashCOMMENT
LOWcore/rexcode/isa/ppc_vle/tools/verify_against_vle_as.sh1#!/usr/bin/env bashCOMMENT
LOWcore/rexcode/isa/riscv/tools/llvm_per_line.sh1#!/bin/bashCOMMENT
LOWcore/rexcode/isa/arm64/tools/llvm_per_line.sh1#!/bin/bashCOMMENT
LOWcore/rexcode/isa/mos6502/tools/verify_against_xa.sh1#!/usr/bin/env bashCOMMENT
LOWcore/sys/android/_gen/table.py281# "enums": {enum name: {member: value}} in the field's own units, or {enum name: (members, shift)}: theCOMMENT
LOWtests/core/sys/posix/structs/structs.c1#include <stddef.h>COMMENT
LOWtests/core/sys/posix/structs/structs.c21#include <sys/resource.h>COMMENT
LOWtests/core/sys/windows/win32gen/win32gen.cpp1#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headersCOMMENT
LOWtests/abi/run.sh1#!/usr/bin/env bashCOMMENT
LOWtests/abi/cross.sh1#!/usr/bin/env bashCOMMENT
LOWtests/issues/run.sh21# By default, it uses clang. export ODIN_TESTS_NO_CLANG=1 to disable these tests.COMMENT
LOWtests/issues/run.sh321fiCOMMENT
LOW…sts/issues/test_issue_6809_6816/test_issue_6809_6816.c1#include <stdint.h>COMMENT
LOW.github/workflows/stale.yml21# I am marking this issue as stale as it has not received any engagement from the community or maintainers 12COMMENT
LOW.github/workflows/ci.yml441 build_linux_riscv64:COMMENT
LOWbase/runtime/odin_debugger.py1# Pretty printers for Odin types in gdb and lldbCOMMENT
LOWsrc/llvm_backend.cpp1#define MULTITHREAD_OBJECT_GENERATION 1COMMENT
LOWsrc/llvm_backend.cpp21#include "llvm_backend.hpp"COMMENT
LOWsrc/llvm_backend.cpp2921 LLVMPassBuilderOptionsRef pb_options = LLVMCreatePassBuilderOptions();COMMENT
LOWsrc/common.cpp1#if defined(GB_SYSTEM_UNIX)COMMENT
LOWsrc/common.cpp21#define GB_WINDOWS_H_INCLUDEDCOMMENT
LOWsrc/common.cpp81void restore_old_codepage() {}COMMENT
LOWsrc/common.cpp1161 #pragma warning(pop)COMMENT
LOWsrc/libtommath.cpp1// NOTE: the default is 32 digits (256 bytes), but nearly every constant fits in 64 bits and digitsCOMMENT
LOWsrc/libtommath.cpp21#include "libtommath/mp_cutoffs.c"COMMENT
LOWsrc/libtommath.cpp41#include "libtommath/mp_get_i64.c"COMMENT
LOWsrc/libtommath.cpp61#include "libtommath/mp_lcm.c"COMMENT
LOWsrc/libtommath.cpp81// #include "libtommath/mp_prime_miller_rabin.c"COMMENT
LOWsrc/libtommath.cpp101#include "libtommath/mp_sbin_size.c"COMMENT
LOWsrc/libtommath.cpp121#include "libtommath/mp_ubin_size.c"COMMENT
LOWsrc/libtommath.cpp141#include "libtommath/s_mp_mul_balance.c"COMMENT
LOWsrc/types.cpp5461COMMENT
LOWsrc/types.cpp5481// case Type_Slice:COMMENT
LOWsrc/types.cpp5501// break;COMMENT
LOWsrc/llvm_abi.cpp221 }COMMENT
LOWsrc/llvm_abi.cpp541 // take the indirect path below, ergo the vector check has to be first.COMMENT
LOWsrc/bug_report.cpp1/*COMMENT
LOWsrc/check_decl.cpp201 //COMMENT
LOWsrc/exact_value.cpp661// GB_PANIC("Expected an integer or float type for 'exact_value_make_imag'");COMMENT
LOWsrc/exact_value.cpp681// switch (v.kind) {COMMENT
LOWsrc/linker.cpp801 // objectCOMMENT
LOWsrc/linker.cpp881 // These are not always typically inside /lib, /lib64, or /usr versionsCOMMENT
LOWsrc/linker.cpp1021 //COMMENT
LOWsrc/check_expr.cpp3921 Type *src = core_type(x);COMMENT
LOWsrc/check_expr.cpp8421 // }COMMENT
LOWsrc/check_expr.cpp13001}COMMENT
LOWsrc/build_cpuid.cpp1#if !defined(GB_COMPILER_MSVC)COMMENT
LOWsrc/semantics_writer.cpp1// `-export-semantics`: what each identifier of the exported files refers to, for editors and other toolsCOMMENT
LOWsrc/check_atomics.cpp1// NOTE(bill, 2026-10-08): Atomic memory ordering analysisCOMMENT
LOWsrc/check_atomics.cpp21// - An `atomic_signal_fence` where an `atomic_thread_fence` would pair, as it only orders within its own threadCOMMENT
LOWsrc/check_atomics.cpp41//COMMENT
LOWsrc/llvm_backend_general.cpp941COMMENT
LOWsrc/llvm_backend_general.cpp981 // a [0]T element has no components, nor does its soa struct have a field to get a ptr to;COMMENT
LOWsrc/llvm_backend_general.cpp2821 // if (type_size_of(t) == 0) {COMMENT
185 more matches not shown…
Decorative Section Separators48 hits · 141 pts
SeverityFileLineSnippetContext
MEDIUM⚡core/rexcode/isa/mos65816/tools/verify_against_ca65.sh4# =============================================================================COMMENT
MEDIUM⚡core/rexcode/isa/mos65816/tools/verify_against_ca65.sh6# =============================================================================COMMENT
MEDIUMcore/rexcode/isa/rsp/tools/armips_lwv_patch.sh4# =============================================================================COMMENT
MEDIUMcore/rexcode/isa/rsp/tools/armips_lwv_patch.sh6# =============================================================================COMMENT
MEDIUM⚡core/rexcode/isa/rsp/tools/verify_against_armips.sh4# =============================================================================COMMENT
MEDIUM⚡core/rexcode/isa/rsp/tools/verify_against_armips.sh6# =============================================================================COMMENT
MEDIUM⚡core/rexcode/isa/ppc_vle/tools/verify_against_vle_as.sh4# =============================================================================COMMENT
MEDIUM⚡core/rexcode/isa/ppc_vle/tools/verify_against_vle_as.sh6# =============================================================================COMMENT
MEDIUM⚡core/rexcode/isa/mos6502/tools/verify_against_xa.sh4# =============================================================================COMMENT
MEDIUM⚡core/rexcode/isa/mos6502/tools/verify_against_xa.sh6# =============================================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt26# ================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt35# ================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt41# ================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt1341# ================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt1349# ================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt1355# ================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt1361# ================================================COMMENT
MEDIUM⚡tests/core/assets/UCD/PropList.txt1369# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt10# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt70# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt85# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt118# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt239# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt420# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt431# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt439# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt873# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt901# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1172# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1221# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1254# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1264# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1287# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1390# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1406# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1420# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1459# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1471# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1480# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1492# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1521# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1539# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1632# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1641# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1652# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1912# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1924# ================================================COMMENT
MEDIUMtests/core/assets/UCD/PropList.txt1930# ================================================COMMENT
AI Slop Vocabulary7 hits · 26 pts
SeverityFileLineSnippetContext
MEDIUM⚡core/rexcode/isa/mos65816/tools/verify_against_ca65.sh5# W65C816 verification harness — assembles via ca65, compares bytesCOMMENT
MEDIUM⚡core/rexcode/isa/rsp/tools/verify_against_armips.sh5# N64 RSP verification harness — assembles via `armips`, compares bytesCOMMENT
MEDIUM⚡core/rexcode/isa/ppc_vle/tools/verify_against_vle_as.sh5# PowerPC VLE verification harness — assemble + objdump (binutils VLE)COMMENT
MEDIUM⚡core/rexcode/isa/mos6502/tools/verify_against_xa.sh5# MOS 6502 verification harness — disassembles via `da65` (cc65)COMMENT
MEDIUMsrc/check_stmt.cpp1563 // TODO(bill): Make robustCOMMENT
MEDIUMsrc/check_decl.cpp1459 error(e->token, "#force_inline cannot be used in conjunction with the attribute 'optimization_mode' with neither \"noCODE
MEDIUMsrc/microsoft_craziness.h606 //? This may not be robust enough using `um\x64` and `ucrt\x64`COMMENT
Deep Nesting18 hits · 18 pts
SeverityFileLineSnippetContext
LOWcore/sys/android/_gen/generate.py354CODE
LOWcore/sys/android/_gen/generate.py655CODE
LOWcore/sys/android/_gen/generate.py843CODE
LOWcore/sys/android/_gen/generate.py901CODE
LOWcore/sys/android/_gen/generate.py1086CODE
LOWcore/sys/android/_gen/generate.py1249CODE
LOWcore/sys/android/_gen/generate.py1312CODE
LOWcore/sys/android/_gen/generate.py1434CODE
LOWcore/sys/android/_gen/generate.py1533CODE
LOWcore/sys/android/_gen/generate.py1708CODE
LOWcore/sys/android/_gen/generate.py1851CODE
LOWcore/sys/android/_gen/generate.py1902CODE
LOWcore/sys/android/_gen/generate.py2032CODE
LOWcore/sys/android/_gen/generate.py509CODE
LOWcore/sys/android/_gen/generate.py559CODE
LOWci/nightly.py34CODE
LOWtests/core/download_assets.py650CODE
LOWbase/runtime/odin_debugger.py175CODE
Empty Error Handlers2 hits · 10 pts
SeverityFileLineSnippetContext
HIGHci/nightly.py21except:CODE
HIGHtests/core/download_assets.py711except FileExistsError:CODE
Example Usage Blocks4 hits · 6 pts
SeverityFileLineSnippetContext
LOWcore/rexcode/isa/arm32/tools/llvm_per_line.sh12# Usage:COMMENT
LOWcore/rexcode/isa/mips/tools/llvm_per_line.sh12# Usage:COMMENT
LOWcore/rexcode/isa/riscv/tools/llvm_per_line.sh12# Usage:COMMENT
LOWcore/rexcode/isa/arm64/tools/llvm_per_line.sh12# Usage:COMMENT
Self-Referential Comments2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/nightly.yml84 # Creating a tarball so executable permissions are retained, see https://github.com/actions/upload-artifact/isCOMMENT
MEDIUM.github/workflows/nightly.yml131 # Creating a tarball so executable permissions are retained, see https://github.com/actions/upload-artifact/isCOMMENT
Excessive Try-Catch Wrapping3 hits · 5 pts
SeverityFileLineSnippetContext
MEDIUMci/nightly.py56 print(f"Error: archive {source_archive} not found.")CODE
MEDIUMci/nightly.py133 print("Error: Expected artifact command to be given platform prefix and artifact path.\n")CODE
LOWbase/runtime/odin_debugger.py208 except Exception:CODE
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/core/math/big/generate_tests.py10CODE
LOWtests/core/math/big/generate_tests.py12CODE
LOWtests/core/math/big/generate_tests.py13CODE
LOWtests/core/math/big/generate_tests.py14CODE
Slop Phrases2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtests/issues/run.sh17# Otherwise, add it here in the appropriate block, and make sure toCOMMENT
LOWsrc/libtommath/mp_sqrtmod_prime.c17 Don't forget to change them here when you change them there! */CODE
Hyper-Verbose Identifiers2 hits · 2 pts
SeverityFileLineSnippetContext
LOWci/nightly.py34def create_and_upload_artifact_zip(platform: str, artifact: str) -> int:CODE
LOWtests/core/download_assets.py650def try_download_and_unpack_zip(base_path, suite, debug):CODE