AI Slop Code RIsk Monitor

rui314/mold

mold 🦠: A Modern Linker in Rust 🦀

9.3 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for rui314/mold, a Rust project with 17,607 GitHub stars. SynthScan examined 152,707 lines of code across 1591 source files, recording 503 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-11
Last Push
17.6K
Stars
Rust
Language
152.7K
Lines of Code
1.6K
Files
503
Pattern Hits
2026-10-12
Scan Date
0.05
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 13.3/100 · LOW

Can maintainers explain intent, assumptions, and trade-offs? 420 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? 503 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 410

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 503 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.rs1133 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1144 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1149 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1154 ctx.got.hdr.shdr.sh_addr.get()CODE
CRITICAL⚡elf/symbol.rs1161 return ctx.plt.hdr.shdr.sh_addr.get() + E::plt_entry_offset(ctx, idx);CODE
CRITICAL⚡elf/symbol.rs1163 ctx.pltgot.hdr.shdr.sh_addr.get()CODE
CRITICALelf/passes.rs2757 let offset = ctx.dynstr.hdr.shdr.sh_size.get();CODE
CRITICALelf/passes.rs2785 ctx.dynstr.hdr.shdr.sh_size.set(end);CODE
CRITICALelf/passes.rs2790 ctx.dynsym.hdr.shdr.sh_info.set(num_locals as u32 + 1);CODE
CRITICALelf/passes.rs3801 let before = ctx.reldyn.hdr.shdr.sh_size.get();CODE
CRITICALelf/passes.rs3803 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.rs61 ctx.dynsym.hdr.shdr.sh_link.set(ctx.dynstr.hdr.shndx);CODE
CRITICALelf/chunks/dynsym.rs62 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 Block406 hits · 396 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/cmdline.rs81/// What a library option makes of the library it names. The optionsCOMMENT
LOWmacho/cmdline.rs101 /// -needed-l, -needed_framework, -needed_library: always keep theCOMMENT
LOWmacho/cmdline.rs121 /// mergeable (LC_ATOM_INFO) linked as its objects would be, in placeCOMMENT
LOWmacho/cmdline.rs221/// -sdk_imports report, and its "apis" are the only imports the reportCOMMENT
LOWmacho/cmdline.rs241 pub output_type: u32,COMMENT
LOWmacho/cmdline.rs281 /// and those an export list names without wildcards (ld64's "initialCOMMENT
LOWmacho/cmdline.rs301 pub dependency_info: Option<PathBuf>,COMMENT
LOWmacho/cmdline.rs321 pub lto_library: Option<PathBuf>,COMMENT
LOWmacho/cmdline.rs341 /// -max_relative_cache_size_lto: the percentage of the free spaceCOMMENT
LOWmacho/cmdline.rs361 /// -version_details: print the linker's description in JSON and,COMMENT
LOWmacho/cmdline.rs381 /// LC_SOURCE_VERSION's version, -source_version's or 0; None for noCOMMENT
LOWmacho/cmdline.rs401 /// a __DATA_CONST segment. ld64's default is on but for a -staticCOMMENT
LOWmacho/cmdline.rs421 /// which saves hashing a large output.COMMENT
LOWmacho/cmdline.rs441 /// it imports that some objects reference weakly and others not.COMMENT
LOWmacho/cmdline.rs461 pub force_weak: Glob,COMMENT
LOWmacho/cmdline.rs481 /// -unaligned_pointers, resolved for the image at the end ofCOMMENT
LOWmacho/cmdline.rs501 /// LC_ENCRYPTION_INFO_64 names (see resolve_encryptable).COMMENT
LOWmacho/cmdline.rs521 /// /System/Library that won't go into the dyld shared cache.COMMENT
LOWmacho/cmdline.rs541 /// Warn about an FDE beyond the 16 MiB of __eh_frame anCOMMENT
LOWmacho/cmdline.rs561 /// -simulator_support: a dylib simulator processes may load tooCOMMENT
LOWmacho/cmdline.rs581 /// files to load a dylib re-exports under those install names from,COMMENT
LOWmacho/cmdline.rs601 /// (-use_lto_filenames_in_order_file_matching, the default).COMMENT
LOWmacho/cmdline.rs621 /// (LC_SUB_CLIENT).COMMENT
LOWmacho/cmdline.rs641 pub trace_symbols_dir: Option<PathBuf>,COMMENT
LOWmacho/cmdline.rs661 pub ignore_optimization_hints: bool,COMMENT
LOWmacho/cmdline.rs681 /// -segaddr: (segment, address) pins, one per segment (the lastCOMMENT
LOWmacho/cmdline.rs701 /// it is unless -no_warn_reduced_section_align.COMMENT
LOWmacho/cmdline.rs721 /// (the XNU kernel), with no LC_MAIN or imports, and fixups only ifCOMMENT
LOWmacho/cmdline.rs741 pub no_branch_islands: bool,COMMENT
LOWmacho/cmdline.rs761 /// gets the hook of merged libraries itself, for its classes thatCOMMENT
LOWmacho/cmdline.rs781 /// -ignore_auto_link: neither act on the objects' auto-link optionsCOMMENT
LOWmacho/cmdline.rs2781COMMENT
LOWmacho/cmdline.rs2801 args.source_version =COMMENT
LOWmacho/cmdline.rs3061 // ld64 binds lazily below the chained-fixups deployment targetsCOMMENT
LOWmacho/cmdline.rs3241/// kernel collection (ld64's fSharedRegionEligible): withCOMMENT
LOWmacho/cmdline.rs3321/// Whether an image is encryptable unless -encryptable or -no_encryptionCOMMENT
LOWmacho/cmdline.rs3741/// Rejects the options at odds with where the image goes: a flatCOMMENT
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
346 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