AI Slop Code Risk Monitor

rui314/mold

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

mold 🦠: A Modern Linker in Rust 🦀

9.3 Moderate pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for rui314/mold, a Rust project with 17,707 GitHub stars. SynthScan examined 152,973 lines of code across 1594 source files, recording 508 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 9.3 (Moderate 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.

9.3
Adjusted Signal
9.3
Raw Pattern Score
100%
Time Factor
2026-10-22
Last Push
17.7K
Stars
Rust
Language
153.0K
Lines of Code
1.6K
Files
508
Pattern Hits
2026-10-31
Scan Date
0.05
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 13.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 27.4/100 · MEDIUM

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 34.1/100 · MEDIUM

Which changes need focused human review? 508 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 83HIGH 1MEDIUM 9LOW 415

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 508 distinct pattern matches across 7 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.

Hallucination Indicators83 hits · 980 pts
SeverityFileLineSnippetContext
CRITICALelf/symbol.rs1145 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1156 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1161 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1166 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1173 return ctx.plt.hdr.shdr.sh_addr.get() + E::plt_entry_offset(ctx, idx);CODE
CRITICAL⚡elf/symbol.rs1175 ctx.pltgot.hdr.shdr.sh_addr.get()CODE
CRITICALelf/passes.rs2767 let offset = ctx.dynstr.hdr.shdr.sh_size.get();CODE
CRITICALelf/passes.rs2795 ctx.dynstr.hdr.shdr.sh_size.set(end);CODE
CRITICALelf/passes.rs2806 ctx.dynsym.hdr.shdr.sh_info.set(num_locals as u32 + 1);CODE
CRITICALelf/passes.rs3848 let before = ctx.reldyn.hdr.shdr.sh_size.get();CODE
CRITICALelf/passes.rs3850 if before != ctx.reldyn.hdr.shdr.sh_size.get() {CODE
CRITICALelf/chunks/versym.rs34 ctx.versym.hdr.shdr.sh_size.set(size);CODE
CRITICALelf/chunks/versym.rs35 ctx.versym.hdr.shdr.sh_link.set(ctx.dynsym.hdr.shndx);CODE
CRITICAL⚡elf/chunks/got.rs65 let size = ctx.got.hdr.shdr.sh_size.get();CODE
CRITICAL⚡elf/chunks/got.rs73 ctx.got.hdr.shdr.sh_size.set(size.wrapping_add(increment));CODE
CRITICAL⚡elf/chunks/got.rs78 let size = ctx.got.hdr.shdr.sh_size.get();CODE
CRITICAL⚡elf/chunks/got.rs82 ctx.got.hdr.shdr.sh_size.set(size + word::<E>());CODE
CRITICAL⚡elf/chunks/got.rs87 let size = ctx.got.hdr.shdr.sh_size.get();CODE
CRITICAL⚡elf/chunks/got.rs91 ctx.got.hdr.shdr.sh_size.set(size + 2 * word::<E>());CODE
CRITICAL⚡elf/chunks/got.rs104 let size = ctx.got.hdr.shdr.sh_size.get();CODE
CRITICAL⚡elf/chunks/got.rs108 ctx.got.hdr.shdr.sh_size.set(size + 2 * word::<E>());CODE
CRITICAL⚡elf/chunks/got.rs114 let size = ctx.got.hdr.shdr.sh_size.get();CODE
CRITICAL⚡elf/chunks/got.rs116 ctx.got.hdr.shdr.sh_size.set(size + 2 * word::<E>());CODE
CRITICALelf/chunks/got.rs305 ctx.got.hdr.shdr.sh_addr.get() + ent.idx as u64 * word::<E>(),CODE
CRITICALelf/chunks/gotplt.rs50 write(buf, i + 3, ctx.plt.hdr.shdr.sh_addr.get());CODE
CRITICALelf/chunks/pltgot.rs44 ctx.pltgot.hdr.shdr.sh_size.set(size);CODE
CRITICALelf/chunks/relplt.rs53 let ptr = ctx.plt.hdr.shdr.sh_addr.get()CODE
CRITICALelf/chunks/dynsym.rs66 ctx.dynsym.hdr.shdr.sh_link.set(ctx.dynstr.hdr.shndx);CODE
CRITICALelf/chunks/dynsym.rs67 ctx.dynsym.hdr.shdr.sh_size.set(size);CODE
CRITICALelf/chunks/plt.rs54 ctx.plt.hdr.shdr.sh_size.set(if n == 0 {CODE
CRITICALelf/chunks/reldyn.rs131 let old_size = ctx.reldyn.hdr.shdr.sh_size.get() as usize;CODE
CRITICALelf/chunks/reldyn.rs144 ctx.reldyn.hdr.shdr.sh_size.set(size);CODE
CRITICALelf/chunks/reldyn.rs145 ctx.reldyn.hdr.shdr.sh_link.set(ctx.dynsym.hdr.shndx);CODE
CRITICALelf/chunks/mod.rs520 if ctx.sframe.hdr.shdr.sh_size.get() != 0 && ctx.chunks.contains(&ChunkId::SFrame) {CODE
CRITICAL⚡elf/chunks/dynamic.rs81 if ctx.reldyn.hdr.shdr.sh_size.get() != 0 {CODE
CRITICAL⚡elf/chunks/dynamic.rs88 define(rel, ctx.reldyn.hdr.shdr.sh_addr.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs89 define(relsz, ctx.reldyn.hdr.shdr.sh_size.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs91 define(rel, ctx.reldyn.hdr.shdr.sh_addr.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs92 define(relsz, ctx.reldyn.hdr.shdr.sh_size.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs129 if ctx.dynsym.hdr.shdr.sh_size.get() != 0 {CODE
CRITICAL⚡elf/chunks/dynamic.rs130 define(DT_SYMTAB, ctx.dynsym.hdr.shdr.sh_addr.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs133 if ctx.dynstr.hdr.shdr.sh_size.get() != 0 {CODE
CRITICAL⚡elf/chunks/dynamic.rs134 define(DT_STRTAB, ctx.dynstr.hdr.shdr.sh_addr.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs135 define(DT_STRSZ, ctx.dynstr.hdr.shdr.sh_size.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs155 if ctx.versym.hdr.shdr.sh_size.get() != 0 {CODE
CRITICAL⚡elf/chunks/dynamic.rs156 define(DT_VERSYM, ctx.versym.hdr.shdr.sh_addr.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs158 if ctx.verneed.hdr.shdr.sh_size.get() != 0 {CODE
CRITICAL⚡elf/chunks/dynamic.rs159 define(DT_VERNEED, ctx.verneed.hdr.shdr.sh_addr.get());CODE
CRITICAL⚡elf/chunks/dynamic.rs160 define(DT_VERNEEDNUM, ctx.verneed.hdr.shdr.sh_info.get() as u64);CODE
CRITICALelf/chunks/sframe_reloc.rs40 let r_offset = ctx.sframe.hdr.shdr.sh_addr.get()CODE
CRITICALelf/chunks/verneed.rs117 ctx.verneed.hdr.shdr.sh_info.set(builder.num_groups);CODE
CRITICALelf/chunks/verneed.rs182 ctx.verneed.hdr.shdr.sh_size.set(size);CODE
CRITICALelf/chunks/verneed.rs183 ctx.verneed.hdr.shdr.sh_link.set(ctx.dynstr.hdr.shndx);CODE
CRITICALelf/arch/sparc64.rs202 let plt = ctx.plt.hdr.shdr.sh_addr.get();CODE
CRITICALelf/arch/sparc64.rs400 let got = ctx.got.hdr.shdr.sh_addr.get();CODE
CRITICALelf/arch/arm64.rs232 let plt = ctx.plt.hdr.shdr.sh_addr.get();CODE
CRITICALelf/arch/arm64.rs447 let got = ctx.got.hdr.shdr.sh_addr.get();CODE
CRITICALelf/arch/sh4.rs178 let got = u64::from(ctx.got.hdr.shdr.sh_addr.get());CODE
CRITICALelf/arch/sh4.rs210 gotplt.wrapping_sub(u64::from(ctx.got.hdr.shdr.sh_addr.get())) as u32,CODE
CRITICALelf/arch/sh4.rs242 got.wrapping_sub(u64::from(ctx.got.hdr.shdr.sh_addr.get())) as u32,CODE
23 more matches not shown…
Over-Commented Block411 hits · 401 pts
SeverityFileLineSnippetContext
LOWdist.sh1#!/bin/bashCOMMENT
LOWdist.sh21# Neither do the musl builds, which are built on Alpine Linux. Alpine keepsCOMMENT
LOWmacho/symbol.rs61 /// slice - mold's name_ptr/name_len. Read through name().COMMENT
LOWmacho/symbol.rs81 /// The boolean attributes, packed into one atomic word as moldCOMMENT
LOWmacho/symbol.rs381 }COMMENT
LOWmacho/symbol.rs421 /// dylib or bundle, by flat lookup (an image loaded before it may),COMMENT
LOWmacho/symbol.rs541 /// every loaded image for the coalesced definition - rather thanCOMMENT
LOWmacho/symbol.rs601 } else {COMMENT
LOWmacho/symbol.rs761/// each `NO_IDX` when absent. Only the few symbols that take a slotCOMMENT
LOWmacho/symbol.rs801/// symbol table: keys carry their xxh3 hash, computed in parallelCOMMENT
LOWmacho/arch.rs21/// How LC_SEGMENT_SPLIT_INFO records a reference a relocation typeCOMMENT
LOWmacho/arch.rs41/// initializes at its first use (see lazy_load::create_lazy_loads andCOMMENT
LOWmacho/arch.rs101 const PAGE_SIZE: u64;COMMENT
LOWmacho/arch.rs121 /// alignment of __delay_stubs and __delay_helper.COMMENT
LOWmacho/arch.rs141 const RELOC_GOT_LOADS: &'static [u8];COMMENT
LOWmacho/arch.rs181 /// reference loads the slot's pointer (arm64's adrp, or the ldrCOMMENT
LOWmacho/arch.rs201 /// Writes the __TEXT,__stub_helper section: the header that pushesCOMMENT
LOWmacho/arm64.rs1421 // code branches to one of its own (see LazyUse::Load andCOMMENT
LOWmacho/cmdline.rs61 /// A file path a -filelist gives, which ld-prime takes as it is,COMMENT
LOWmacho/cmdline.rs81 Path(PathBuf),COMMENT
LOWmacho/cmdline.rs101 /// -hidden-l, -hidden_framework, -load_hidden: an archive whoseCOMMENT
LOWmacho/cmdline.rs121 NoMerge,COMMENT
LOWmacho/cmdline.rs201#[derive(Debug)]COMMENT
LOWmacho/cmdline.rs241 /// The output file type: MH_EXECUTE, MH_DYLIB, MH_BUNDLE,COMMENT
LOWmacho/cmdline.rs281 pub load_objc: bool,COMMENT
LOWmacho/cmdline.rs301 pub map: Option<PathBuf>,COMMENT
LOWmacho/cmdline.rs321 pub no_fixup_chains: bool,COMMENT
LOWmacho/cmdline.rs341 /// lasts; 0 for libLTO's default.COMMENT
LOWmacho/cmdline.rs361 /// -v: print the version and the search paths.COMMENT
LOWmacho/cmdline.rs381 /// -version_load_command: give a -static image LC_BUILD_VERSION.COMMENT
LOWmacho/cmdline.rs401 /// -data_const / -no_data_const: whether read-only-after-fixup dataCOMMENT
LOWmacho/cmdline.rs421 /// though dyld refuses to load an image without one.COMMENT
LOWmacho/cmdline.rs441 /// object references weakly (weak_import).COMMENT
LOWmacho/cmdline.rs461 /// -force_symbols_weak_list / -force_symbols_not_weak_list: theCOMMENT
LOWmacho/cmdline.rs481 /// warning unless given).COMMENT
LOWmacho/cmdline.rs501 /// device's image): the image's code may be encrypted after theCOMMENT
LOWmacho/cmdline.rs521 /// load costs every process (resolved at the end of parsing).COMMENT
LOWmacho/cmdline.rs541 /// -no_compact_unwind: no __unwind_info; the image unwinds by itsCOMMENT
LOWmacho/cmdline.rs561 /// variable, which marks it too) makes that the default, whichCOMMENT
LOWmacho/cmdline.rs581 /// in the search path in its Versions/Current too.COMMENT
LOWmacho/cmdline.rs601 pub order_file_statistics: bool,COMMENT
LOWmacho/cmdline.rs621 /// output section whatever its members ask for.COMMENT
LOWmacho/cmdline.rs641 /// $LD_TRACE_SYMBOLS_DIR: the directory -trace_symbols_file's recordCOMMENT
LOWmacho/cmdline.rs661 pub dylib_subtypes_must_match: bool,COMMENT
LOWmacho/cmdline.rs681 /// header's; a -segaddr for __TEXT sets it too. resolve_image_baseCOMMENT
LOWmacho/cmdline.rs701 /// the file, as regular sections.COMMENT
LOWmacho/cmdline.rs721 /// modification times.COMMENT
LOWmacho/cmdline.rs741 pub text_exec: bool,COMMENT
LOWmacho/cmdline.rs761 /// Xcode builds a MERGEABLE_LIBRARY.COMMENT
LOWmacho/cmdline.rs781 /// -no_dwarf_unwind: leave the inputs' __eh_frame out of the outputCOMMENT
LOWmacho/cmdline.rs2781/// $LD_DYLIB_CPU_SUBTYPES_MUST_MATCH give one, names one of the CPUCOMMENT
LOWmacho/cmdline.rs3061 // -no_fixup_chains for them.COMMENT
LOWmacho/cmdline.rs3241 }COMMENT
LOWmacho/cmdline.rs3561COMMENT
LOWmacho/icf.rs1//! This file implements identical code folding: it merges functions whoseCOMMENT
LOWmacho/icf.rs221COMMENT
LOWmacho/lto.rs1//! This file implements link-time optimization (LTO). As with ELF, whenCOMMENT
LOWmacho/lto.rs141 // SAFETY: T is a function pointer type of the same size as theCOMMENT
LOWmacho/lto.rs361/// What the command line asks of ThinLTO.COMMENT
LOWmacho/lto.rs621/// A bitcode file LTO compiled, as the passes after LTO still see itCOMMENT
351 more matches not shown…
Self-Referential Comments6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMdist.sh147# Create a Podman image containing the native C tools and a pinned RustCOMMENT
MEDIUMtests/elf/shuffle-sections.sh11# Create a lot of sections to lower the probability thatCOMMENT
MEDIUMtests/elf/shuffle-sections-seed.sh11# Create a lot of sections to lower the probability thatCOMMENT
MEDIUMtests/elf/as-needed-gc.sh4# Create a shared libraryCOMMENT
MEDIUMtests/elf/as-needed-gc.sh9# Create an object file with a dead function referencing foo(),COMMENT
MEDIUMtests/elf/lto-unclaimed.sh7# Create a fake LLVM bitcode fileCOMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/macho.yml20 # the harness runs every test natively and again under Rosetta.COMMENT
MEDIUM.github/workflows/macho.yml37 # The unit tests, then the shell tests with twice the harness'sCOMMENT
MEDIUM.github/workflows/macho.yml48 # The harness reports only which tests failed; each test's logCOMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHelf/chunks/gotplt.rs44 // The first slot of .got.plt points to _DYNAMIC, as requested byCOMMENT
Redundant / Tautological Comments3 hits · 4 pts
SeverityFileLineSnippetContext
LOWtests/elf/arch-x86_64-z-rewrite-endbr3.sh7# Check if Intel SDE CPU emulator is availableCOMMENT
LOWtests/elf/print-dependencies-crel.sh31# Set sh_type to SHT_CREL and sh_size to 4. They are at offsets 4 and 32COMMENT
LOWtests/elf/arch-ppc64-opd-crel.sh35# Set sh_type to SHT_CREL and sh_size to 4. They are at offsets 4 and 32COMMENT
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtests/macho/dof-dump.py27CODE