AI Slop Code RIsk Monitor

raphamorim/rio

A hardware-accelerated GPU terminal emulator focusing to run in desktops and browsers.

4.8 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for raphamorim/rio, a Rust project with 7,598 GitHub stars. SynthScan examined 215,783 lines of code across 515 source files, recording 825 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 4.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.

4.8
Adjusted Signal
4.8
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
7.6K
Stars
Rust
Language
215.8K
Lines of Code
515
Files
825
Pattern Hits
2026-10-12
Scan Date
0.06
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 16.0/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 6.2/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 22.2/100 · LOW

Which changes need focused human review? 825 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 26HIGH 3MEDIUM 4LOW 792

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 825 distinct pattern matches across 12 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 Block779 hits · 704 pts
SeverityFileLineSnippetContext
LOWlibrio-wasm/src/lib.rs1//! librio's JS ABI: `librio` (without its `pty` feature) compiled toCOMMENT
LOWlibrio-wasm/src/lib.rs61pub const KEY_ACTION_RELEASE: u32 = 2;COMMENT
LOWlibrio-wasm/src/lib.rs681 /// string in place of the base char so a ZWJ emoji or aCOMMENT
LOWmisc/scripts/drawable-chars.sh1#!/bin/bashCOMMENT
LOWrio-graphics/src/lib.rs1// Copyright (c) 2023-present, Raphael Amorim.COMMENT
LOWrio-graphics/src/lib.rs21#[cfg(feature = "glyph")]COMMENT
LOWrio-graphics/src/lib.rs101/// Key for `Sugarloaf::image_data` and the renderer's per-imageCOMMENT
LOWrio-graphics/src/lib.rs141}COMMENT
LOWrio-graphics/src/glyph/glyf_decode.rs1// OpenType `glyf` simple-glyph decoder.COMMENT
LOWrio-graphics/src/glyph/glyf_decode.rs21// direct dep.COMMENT
LOWrio-graphics/src/glyph/glyph_registry.rs1// Per-terminal registry of glyphs registered over Glyph Protocol.COMMENT
LOWrio-graphics/src/glyph/glyph_registry.rs21COMMENT
LOWrio-graphics/src/glyph/glyph_registry.rs41/// in 21 bits; the remaining 11 bits give 2048 versions beforeCOMMENT
LOWrio-graphics/src/glyph/glyph_registry.rs101/// bump rather than the underlying bytes. A single `ColrV1` payloadCOMMENT
LOWrio-graphics/src/glyph/glyph_registry.rs121 pub insertion_id: u64,COMMENT
LOWrio-graphics/src/glyph/mod.rs1// Copyright (c) 2023-present, Raphael Amorim.COMMENT
LOWcorcovado/src/stream.rs21COMMENT
LOWcorcovado/src/token.rs1// TODO: replace "//" with "///" and fix TcpListener with EventedCOMMENT
LOWcorcovado/src/token.rs21// use std::io::{self, Read};COMMENT
LOWcorcovado/src/token.rs41// let listener = TcpListener::bind(&"127.0.0.1:0".parse()?)?;COMMENT
LOWcorcovado/src/token.rs61// // Event storageCOMMENT
LOWcorcovado/src/token.rs81// if next_socket_index == MAX_SOCKETS {COMMENT
LOWcorcovado/src/token.rs101// }COMMENT
LOWcorcovado/src/token.rs121// e => panic!("err={:?}", e), // Unexpected errorCOMMENT
LOWcorcovado/src/lib.rs1//! A low-level readiness-based IO library focused on what Rio needs from itsCOMMENT
LOWcorcovado/src/lib.rs61/// Unix this scheme is then also extensible to all other file descriptors withCOMMENT
LOWcorcovado/src/lib.rs81/// Also note that for types which represent streams of bytes the mioCOMMENT
LOWcorcovado/src/lib.rs101/// When put together these two types enable custom Windows handles to beCOMMENT
LOWcorcovado/src/event_imp.rs1use crate::{Poll, Token};COMMENT
LOWcorcovado/src/event_imp.rs21/// [`Registration`] and [`SetReadiness`]. In this case, the implementer takesCOMMENT
LOWcorcovado/src/event_imp.rs41// }COMMENT
LOWcorcovado/src/event_imp.rs61// }COMMENT
LOWcorcovado/src/event_imp.rs81// pub fn new(when: Instant) -> Deadline {COMMENT
LOWcorcovado/src/event_imp.rs101// Instant::now() >= self.whenCOMMENT
LOWcorcovado/src/event_imp.rs121// }COMMENT
LOWcorcovado/src/event_imp.rs141 ///COMMENT
LOWcorcovado/src/event_imp.rs241COMMENT
LOWcorcovado/src/event_imp.rs261/// assert!(opts.is_edge());COMMENT
LOWcorcovado/src/event_imp.rs281 ///COMMENT
LOWcorcovado/src/event_imp.rs301 ///COMMENT
LOWcorcovado/src/event_imp.rs321 ///COMMENT
LOWcorcovado/src/event_imp.rs361 /// Returns true if the options include edge-triggered notifications.COMMENT
LOWcorcovado/src/event_imp.rs381 /// Returns true if the options include level-triggered notifications.COMMENT
LOWcorcovado/src/event_imp.rs401 /// Returns true if the options includes oneshot.COMMENT
LOWcorcovado/src/event_imp.rs421 #[inline]COMMENT
LOWcorcovado/src/event_imp.rs441 /// ```COMMENT
LOWcorcovado/src/event_imp.rs461 ///COMMENT
LOWcorcovado/src/event_imp.rs481 /// ```COMMENT
LOWcorcovado/src/event_imp.rs601///COMMENT
LOWcorcovado/src/event_imp.rs621/// ```COMMENT
LOWcorcovado/src/event_imp.rs641 ///COMMENT
LOWcorcovado/src/event_imp.rs661 /// Returns a `Ready` representing readable readiness.COMMENT
LOWcorcovado/src/event_imp.rs681 /// Returns a `Ready` representing writable readiness.COMMENT
LOWcorcovado/src/event_imp.rs701 #[inline]COMMENT
LOWcorcovado/src/event_imp.rs721 /// use corcovado::Ready;COMMENT
LOWcorcovado/src/event_imp.rs741 /// ```COMMENT
LOWcorcovado/src/event_imp.rs761 /// See [`Poll`] for more documentation on polling.COMMENT
LOWcorcovado/src/event_imp.rs781 /// See [`Poll`] for more documentation on polling.COMMENT
LOWcorcovado/src/event_imp.rs801 self.contains(Ready(ERROR))COMMENT
LOWcorcovado/src/event_imp.rs821 /// assert!(readiness.is_readable());COMMENT
719 more matches not shown…
Hallucination Indicators26 hits · 275 pts
SeverityFileLineSnippetContext
CRITICALfrontends/rioterm/src/application.rs415 if route.window.screen.renderer.scrollbar.needs_redraw() {CODE
CRITICALfrontends/rioterm/src/application.rs1284 || route.window.screen.renderer.confirm_quit.is_active()CODE
CRITICALfrontends/rioterm/src/application.rs1312 route.window.screen.renderer.scrollbar.end_drag();CODE
CRITICALfrontends/rioterm/src/application.rs1559 if route.window.screen.renderer.scrollbar.is_dragging() {CODE
CRITICALfrontends/rioterm/src/application.rs1576 route.window.screen.mouse.hint_click_latched.take()CODE
CRITICALfrontends/rioterm/src/application.rs1681 || route.window.screen.renderer.confirm_quit.is_active()CODE
CRITICALfrontends/rioterm/src/application.rs1688 if route.window.screen.renderer.assistant.is_active() {CODE
CRITICALfrontends/rioterm/src/application.rs1719 if route.window.screen.renderer.command_palette.is_enabled() {CODE
CRITICALfrontends/rioterm/src/application.rs1738 if route.window.screen.renderer.search.is_active() {CODE
CRITICALfrontends/rioterm/src/application.rs1803 if route.window.screen.renderer.scrollbar.is_dragging() {CODE
CRITICALfrontends/rioterm/src/application.rs1835 route.window.screen.renderer.trail_cursor.snap();CODE
CRITICALfrontends/rioterm/src/application.rs1961 if route.window.screen.mouse.hint_click_latched.is_none() {CODE
CRITICALfrontends/rioterm/src/application.rs1980 || route.window.screen.renderer.confirm_quit.is_active()CODE
CRITICALfrontends/rioterm/src/application.rs2205 if route.window.screen.renderer.assistant.is_active() {CODE
CRITICALfrontends/rioterm/src/screen/mod.rs3954 let cursor_row = cursor.state.pos.row.0.max(0) as usize;CODE
CRITICALfrontends/rioterm/src/screen/mod.rs4187 (cursor.state.pos.row.0.max(0) as usize)CODE
CRITICALfrontends/rioterm/src/router/mod.rs171 self.window.screen.renderer.assistant.clear();CODE
CRITICALfrontends/rioterm/src/router/mod.rs177 self.window.screen.renderer.confirm_quit.set_active(true);CODE
CRITICAL⚡frontends/rioterm/src/router/mod.rs199 if self.window.screen.renderer.command_palette.is_enabled() {CODE
CRITICAL⚡frontends/rioterm/src/router/mod.rs202 if self.window.screen.renderer.confirm_quit.is_active() {CODE
CRITICAL⚡frontends/rioterm/src/router/mod.rs208 if self.window.screen.renderer.assistant.is_error() {CODE
CRITICALfrontends/rioterm/src/router/mod.rs404 self.window.screen.renderer.command_palette.query.clone();CODE
CRITICALfrontends/rioterm/src/router/mod.rs438 self.window.screen.renderer.confirm_quit.set_active(false);CODE
CRITICALfrontends/rioterm/src/router/mod.rs442 self.window.screen.renderer.confirm_quit.set_active(false);CODE
CRITICALfrontends/rioterm/src/router/mod.rs468 self.window.screen.renderer.assistant.clear();CODE
CRITICALrio-vt/src/crosswords/mod.rs3084 let column = self.grid.cursor.pos.col.saturating_sub(cols.0);CODE
AI Response Leakage2 hits · 15 pts
SeverityFileLineSnippetContext
HIGHrio-window/src/platform_impl/macos/window_delegate.rs354 /// will be failed. In this implementation, we will try again by usingCOMMENT
HIGHfrontends/rioterm/src/layout/compute_tests.rs4// I've added some real scenarios so I can make sure it doesn't go off again.COMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMmisc/scripts/drawable-chars.sh9# procedurally and should be crisp + seamless in any font; ranges not yetCOMMENT
MEDIUMrio-window/src/window.rs523 /// the most robust way to track the DPI you need to use to draw.COMMENT
MEDIUMrio-grid/src/lib.rs2060 // sprite (crisp + seamless in any font) instead of the fontCOMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHrio-vt/src/ansi/graphics.rs53 /// Source rectangle within the image, exactly as requestedCOMMENT
Deep Nesting4 hits · 4 pts
SeverityFileLineSnippetContext
LOWrio-unicode/scripts/unicode.py98CODE
LOWrio-unicode/scripts/unicode.py147CODE
LOWrio-unicode/scripts/unicode.py325CODE
LOWrio-unicode/scripts/grapheme.py40CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWcorcovado/src/lazycell.rs66 /// # Return valueCOMMENT
LOWcorcovado/src/lazycell.rs253 /// # Return valueCOMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMsugarloaf/src/sugarloaf.rs59 /// `memory/project_sugarloaf_content_drop.md`. Phase 1a: scaffoldCOMMENT
Verbosity Indicators2 hits · 3 pts
SeverityFileLineSnippetContext
LOWsugarloaf/src/font/loader.rs448 // Step 1: collect all font faces from additional sources (user directories)COMMENT
LOWsugarloaf/src/font/loader.rs476 // Step 3: apply CSS-spec matching algorithm to select the best faceCOMMENT
Structural Annotation Overuse2 hits · 3 pts
SeverityFileLineSnippetContext
LOWsugarloaf/src/font/loader.rs448 // Step 1: collect all font faces from additional sources (user directories)COMMENT
LOWsugarloaf/src/font/loader.rs476 // Step 3: apply CSS-spec matching algorithm to select the best faceCOMMENT
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWrio-vt/benches/vt_input.rs28 "the quick brown fox jumps over the lazy dog 0123456789 lorem ipsum dolor sit amet\r\n";CODE
LOWrio-vt/benches/vt_input.rs28 "the quick brown fox jumps over the lazy dog 0123456789 lorem ipsum dolor sit amet\r\n";CODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWrio-unicode/scripts/grapheme.py22CODE