AI Slop Code RIsk Monitor

n0-computer/iroh

IP addresses break, dial keys instead. A library that adds QUIC + NAT Traversal to your apps.

7.6 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for n0-computer/iroh, a Rust project with 12,676 GitHub stars. SynthScan examined 70,130 lines of code across 227 source files, recording 427 pattern matches distributed across 3 syntactic categories. The legacy adjusted pattern signal is 7.6 (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.

7.6
Adjusted Signal
7.6
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
12.7K
Stars
Rust
Language
70.1K
Lines of Code
227
Files
427
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 24.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 9.8/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 31.4/100 · MEDIUM

Which changes need focused human review? 427 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 11HIGH 0MEDIUM 1LOW 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 427 distinct pattern matches across 3 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 Block415 hits · 388 pts
SeverityFileLineSnippetContext
LOWiroh-base/src/key.rs301 PublicKey(CompressedEdwardsY(key))COMMENT
LOWiroh-base/src/endpoint_addr.rs1//! Addressing for iroh endpoints.COMMENT
LOWiroh-base/src/endpoint_addr.rs21///COMMENT
LOWiroh-base/src/endpoint_addr.rs161/// A custom transport address consisting of a transport id and opaque address data.COMMENT
LOWiroh-base/src/endpoint_addr.rs221#[stack_error(derive)]COMMENT
LOWiroh-base/src/endpoint_addr.rs341COMMENT
LOWiroh-base/src/relay_url.rs1use std::{fmt, ops::Deref, str::FromStr, sync::Arc};COMMENT
LOWiroh-relay/proptest-regressions/protos/send_recv.txt1# Seeds for failure cases proptest has generated in the past. It isCOMMENT
LOWiroh-relay/proptest-regressions/protos/relay.txt1# Seeds for failure cases proptest has generated in the past. It isCOMMENT
LOWiroh-relay/tests/multiple-hostnames-pebble.sh1#!/usr/bin/env bashCOMMENT
LOWiroh-relay/tests/runtime_auth.rs1//! Runtime revocation of relay access via the [`AccessControl`] trait.COMMENT
LOWiroh-relay/src/client.rs41mod tls;COMMENT
LOWiroh-relay/src/client.rs141/// Build a Client.COMMENT
LOWiroh-relay/src/client.rs181 key_cache: KeyCache::new(128),COMMENT
LOWiroh-relay/src/client.rs201 ///COMMENT
LOWiroh-relay/src/quic.rs81 pub(crate) fn bind_addr(&self) -> SocketAddr {COMMENT
LOWiroh-relay/src/quic.rs281 // enable the receive side of address discoveryCOMMENT
LOWiroh-relay/src/quic.rs321 let connecting = selfCOMMENT
LOWiroh-relay/src/lib.rs1//! Iroh's relay is a feature within [iroh](https://github.com/n0-computer/iroh), a peer-to-peerCOMMENT
LOWiroh-relay/src/lib.rs61pub trait ExportKeyingMaterial {COMMENT
LOWiroh-relay/src/server.rs1//! A fully-fledged iroh-relay server over HTTP or HTTPS.COMMENT
LOWiroh-relay/src/server.rs121/// Configuration for the Relay HTTP and HTTPS server.COMMENT
LOWiroh-relay/src/server.rs241 /// Each item is a `(name, value)` pair. Both names and values are percent-decoded.COMMENT
LOWiroh-relay/src/server.rs281/// Implement this trait to gate access to a relay server.COMMENT
LOWiroh-relay/src/server.rs361///COMMENT
LOWiroh-relay/src/server.rs421 if let Some(access) = self.access.as_ref() {COMMENT
LOWiroh-relay/src/server.rs481 }COMMENT
LOWiroh-relay/src/server.rs521 }COMMENT
LOWiroh-relay/src/server.rs601 ///COMMENT
LOWiroh-relay/src/main.rs41const ENV_HTTP_BEARER_TOKEN: &str = "IROH_RELAY_HTTP_BEARER_TOKEN";COMMENT
LOWiroh-relay/src/main.rs101 /// the QUIC server running (if `enable_quic_addr_discovery` is `true`), which helpsCOMMENT
LOWiroh-relay/src/main.rs121 http_bind_addr: Option<SocketAddr>,COMMENT
LOWiroh-relay/src/main.rs141 limits: Option<Limits>,COMMENT
LOWiroh-relay/src/main.rs161#[derive(Debug, Clone, Serialize, Deserialize, Default, PartialEq, Eq)]COMMENT
LOWiroh-relay/src/main.rs181 /// Allows only clients that present one of the configured bearer tokens.COMMENT
LOWiroh-relay/src/main.rs401 /// The socket address to bind the Relay HTTPS server on.COMMENT
LOWiroh-relay/src/main.rs421 /// Defaults to the servers' current working directory.COMMENT
LOWiroh-relay/src/main.rs441 /// While in development, LetsEncrypt prefers you to use the staging server. However,COMMENT
LOWiroh-relay/src/main.rs521///COMMENT
LOWiroh-relay/src/http.rs41 strum::EnumString,COMMENT
LOWiroh-relay/src/defaults.rs1//! Default values used in the relay.COMMENT
LOWiroh-relay/src/defaults.rs21/// memory usage will be (32 + 8 + 8 + 8) * 1_000_000 = 56MB on 64 bit,COMMENT
LOWiroh-relay/src/relay_map.rs221 fmt::Debug::fmt(&self, f)COMMENT
LOWiroh-relay/src/tls.rs1//! TLS verification configuration for iroh and iroh-relay.COMMENT
LOWiroh-relay/src/tls.rs21#[derive(Debug, Clone)]COMMENT
LOWiroh-relay/src/tls.rs121 /// The [`CryptoProvider`] passed to the callback should be used for all cryptographic operations.COMMENT
LOWiroh-relay/src/protos/streams.rs21pub(crate) struct WsBytesFramed<T> {COMMENT
LOWiroh-relay/src/protos/handshake.rs1//! Implements the handshake protocol that authenticates and authorizes clients connecting to the relays.COMMENT
LOWiroh-relay/src/protos/handshake.rs61pub(crate) struct KeyMaterialClientAuth {COMMENT
LOWiroh-relay/src/protos/handshake.rs81 pub(crate) challenge: [u8; 16],COMMENT
LOWiroh-relay/src/protos/handshake.rs141#[allow(missing_docs)]COMMENT
LOWiroh-relay/src/protos/handshake.rs201 /// Generates a new challenge.COMMENT
LOWiroh-relay/src/protos/handshake.rs381///COMMENT
LOWiroh-relay/src/protos/handshake.rs401 SignedChallenge,COMMENT
LOWiroh-relay/src/protos/handshake.rs501 Access::Deny { reason } => Err(self.deny(reason, io).await),COMMENT
LOWiroh-relay/src/protos/relay.rs21/// (This only includes the data bytes visible to the socket, notCOMMENT
LOWiroh-relay/src/protos/relay.rs41COMMENT
LOWiroh-relay/src/protos/relay.rs81 /// Indicates that the client identified by the underlying public key had previously sent you aCOMMENT
LOWiroh-relay/src/protos/relay.rs101 /// with the payload sent previously in the ping.COMMENT
LOWiroh-relay/src/protos/relay.rs181 /// Reply to a [`RelayToClientMsg::Ping`] from a serverCOMMENT
355 more matches not shown…
Hallucination Indicators11 hits · 145 pts
SeverityFileLineSnippetContext
CRITICAL⚡iroh/src/socket.rs1526 self.sock.metrics.socket.actor_tick_other.inc();CODE
CRITICAL⚡iroh/src/socket.rs1532 self.sock.metrics.socket.actor_tick_msg.inc();CODE
CRITICAL⚡iroh/src/socket.rs1537 self.sock.metrics.socket.actor_tick_re_stun.inc();CODE
CRITICAL⚡iroh/src/socket.rs1582 self.sock.metrics.socket.actor_tick_other.inc();CODE
CRITICAL⚡iroh/src/socket.rs1589 self.sock.metrics.socket.actor_tick_portmap_changed.inc();CODE
CRITICAL⚡iroh/src/socket.rs1592 self.sock.metrics.net_report.portmap_external_address_updated.inc();CODE
CRITICAL⚡iroh/src/socket.rs1600 self.sock.metrics.socket.actor_tick_other.inc();CODE
CRITICALiroh/src/socket.rs801 self.sock.metrics.net_report.portmap_attempts.inc();CODE
CRITICALiroh/src/socket.rs1507 self.sock.metrics.socket.actor_tick_main.inc();CODE
CRITICALiroh/src/socket.rs1611 self.sock.metrics.socket.actor_link_change.inc();CODE
CRITICALiroh/src/endpoint.rs1198 self.inner.static_config.tls_config.secret_key.public()CODE
AI Slop Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMiroh/src/lib.rs243//! Please see the examples directory for more nuanced examples.COMMENT