AI Slop Code RIsk Monitor

actix/actix-web

Actix Web is a powerful, pragmatic, and extremely fast web framework for Rust.

5.6 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for actix/actix-web, a Rust project with 24,863 GitHub stars. SynthScan examined 96,769 lines of code across 387 source files, recording 506 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 5.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.

5.6
Adjusted Signal
5.6
Raw Pattern Score
100%
Time Factor
2026-10-10
Last Push
24.9K
Stars
Rust
Language
96.8K
Lines of Code
387
Files
506
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 22.3/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 1.1/100 · LOW

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

Agent Over-Engineering Ratio 1.8/100 · LOW

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

PR Review Velocity Impact 24.1/100 · LOW

Which changes need focused human review? 506 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 1MEDIUM 11LOW 494

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 506 distinct pattern matches across 6 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 Block478 hits · 470 pts
SeverityFileLineSnippetContext
LOWactix-http/examples/tls_rustls.rs1//! Demonstrates TLS configuration (via Rustls) for HTTP/1.1 and HTTP/2 connections.COMMENT
LOWactix-http/src/error.rs181COMMENT
LOWactix-http/src/error.rs261COMMENT
LOWactix-http/src/config.rs61COMMENT
LOWactix-http/src/lib.rs1//! HTTP types and services for the Actix ecosystem.COMMENT
LOWactix-http/src/service.rs41/// # Automatic HTTP Version SelectionCOMMENT
LOWactix-http/src/keep_alive.rs1use std::time::Duration;COMMENT
LOWactix-http/src/extensions.rs41 pub fn new() -> Extensions {COMMENT
LOWactix-http/src/extensions.rs61 .insert(TypeId::of::<T>(), Box::new(val))COMMENT
LOWactix-http/src/extensions.rs81 /// ```COMMENT
LOWactix-http/src/extensions.rs101 pub fn get_mut<T: 'static>(&mut self) -> Option<&mut T> {COMMENT
LOWactix-http/src/extensions.rs121 pub fn get_or_insert<T: 'static>(&mut self, value: T) -> &mut T {COMMENT
LOWactix-http/src/extensions.rs141 .entry(TypeId::of::<T>())COMMENT
LOWactix-http/src/extensions.rs161 pub fn remove<T: 'static>(&mut self) -> Option<T> {COMMENT
LOWactix-http/src/builder.rs101 selfCOMMENT
LOWactix-http/src/responses/builder.rs21///COMMENT
LOWactix-http/src/responses/builder.rs61 ///COMMENT
LOWactix-http/src/responses/builder.rs101 }COMMENT
LOWactix-http/src/body/size.rs1/// Body size hint.COMMENT
LOWactix-http/src/body/size.rs21COMMENT
LOWactix-http/src/body/message_body.rs21/// - Empty body: `()`COMMENT
LOWactix-http/src/body/message_body.rs41/// fn size(&self) -> BodySize {COMMENT
LOWactix-http/src/body/message_body.rs61COMMENT
LOWactix-http/src/body/message_body.rs81 /// method again may panic, block forever, or cause other kinds of problems; this trait placesCOMMENT
LOWactix-http/src/body/either.rs21 /// middleware's own error responses use the default `Right` variant of `BoxBody`. Of course,COMMENT
LOWactix-http/src/body/utils.rs1use std::{pin::pin, task::Poll};COMMENT
LOWactix-http/src/body/utils.rs21///COMMENT
LOWactix-http/src/body/utils.rs41#[non_exhaustive]COMMENT
LOWactix-http/src/requests/request.rs181COMMENT
LOWactix-http/src/h1/dispatcher.rs61 /// Set if write-half is disconnected.COMMENT
LOWactix-http/src/h1/dispatcher.rs1181 //COMMENT
LOWactix-http/src/header/map.rs1//! A multi-value [`HeaderMap`] and its iterators.COMMENT
LOWactix-http/src/header/map.rs21///COMMENT
LOWactix-http/src/header/map.rs81COMMENT
LOWactix-http/src/header/map.rs101 HeaderMap::default()COMMENT
LOWactix-http/src/header/map.rs161 /// map.insert(header::ACCEPT, HeaderValue::from_static("text/plain"));COMMENT
LOWactix-http/src/header/map.rs181 ///COMMENT
LOWactix-http/src/header/map.rs201 /// map.insert(header::ACCEPT, HeaderValue::from_static("text/plain"));COMMENT
LOWactix-http/src/header/map.rs241 /// consistent for each call to `get` if the map has not changed.COMMENT
LOWactix-http/src/header/map.rs261 /// assert!(map.get(header::HOST).is_none());COMMENT
LOWactix-http/src/header/map.rs281 /// let mut map = HeaderMap::new();COMMENT
LOWactix-http/src/header/map.rs301 /// Returns an iterator over all values associated with a header name.COMMENT
LOWactix-http/src/header/map.rs321 /// assert!(set_cookies_iter.next().is_none());COMMENT
LOWactix-http/src/header/map.rs341 ///COMMENT
LOWactix-http/src/header/map.rs361 /// # use actix_http::header::{self, HeaderMap, HeaderValue};COMMENT
LOWactix-http/src/header/map.rs381 /// let removed = map.insert(header::ACCEPT, HeaderValue::from_static("text/plain"));COMMENT
LOWactix-http/src/header/map.rs401 /// let mut map = HeaderMap::new();COMMENT
LOWactix-http/src/header/map.rs421 }COMMENT
LOWactix-http/src/header/map.rs441 /// assert!(removed.next().is_none());COMMENT
LOWactix-http/src/header/map.rs461 Ok(Cow::Borrowed(name)) => self.inner.remove(name),COMMENT
LOWactix-http/src/header/map.rs481 /// assert!(map.is_empty());COMMENT
LOWactix-http/src/header/map.rs501 ///COMMENT
LOWactix-http/src/header/map.rs521 /// let mut iter = map.iter();COMMENT
LOWactix-http/src/header/map.rs541 }COMMENT
LOWactix-http/src/header/map.rs561 /// assert_eq!(keys.len(), 2);COMMENT
LOWactix-http/src/header/map.rs601COMMENT
LOWactix-http/src/header/common.rs1//! Common header names not defined in [`http`].COMMENT
LOWactix-http/src/header/common.rs21/// Response header field that sends a signal to the user agent that it ought to remove all data ofCOMMENT
LOWactix-http/src/header/shared/extended.rs21 pub language_tag: Option<LanguageTag>,COMMENT
LOWactix-http/src/header/shared/extended.rs41/// mime-charset = 1*mime-charsetcCOMMENT
418 more matches not shown…
Decorative Section Separators8 hits · 36 pts
SeverityFileLineSnippetContext
MEDIUM⚡actix-web/src/middleware/mod.rs87//! ╭────────────────────┼────╮COMMENT
MEDIUM⚡actix-web/src/middleware/mod.rs89//! │ ╭──────────────────┼───╮│COMMENT
MEDIUM⚡actix-web/src/middleware/mod.rs91//! │ │ ╭────────────────┼──╮││COMMENT
MEDIUM⚡actix-web/src/middleware/mod.rs93//! │ │ │ ╭──────────────┼─╮│││COMMENT
MEDIUM⚡actix-web/src/middleware/mod.rs99//! │ │ │ ╰──────────────┼─╯│││COMMENT
MEDIUM⚡actix-web/src/middleware/mod.rs100//! │ │ ╰────────────────┼──╯││COMMENT
MEDIUM⚡actix-web/src/middleware/mod.rs101//! │ ╰──────────────────┼───╯│COMMENT
MEDIUM⚡actix-web/src/middleware/mod.rs102//! ╰────────────────────┼────╯COMMENT
Fake / Example Data15 hits · 21 pts
SeverityFileLineSnippetContext
LOWactix-multipart/src/test.rs66/// Bytes::from_static(b"Lorem ipsum."),COMMENT
LOWactix-multipart/src/test.rs72/// assert!(find(&body, b"Lorem ipsum.").is_some());COMMENT
LOWactix-multipart/src/test.rs267 Bytes::from_static(b"Lorem ipsum dolor\nsit ame."),CODE
LOW⚡actix-multipart/src/test.rs281 Lorem ipsum dolor\n\CODE
LOW⚡actix-multipart/src/test.rs291 Bytes::from_static(b"Lorem ipsum dolor\nsit ame."),CODE
LOW⚡actix-multipart/src/test.rs301 Lorem ipsum dolor\n\CODE
LOW⚡actix-multipart/src/test.rs309 TestFormField::new("foo", Bytes::from_static(b"Lorem ipsum dolor\nsit ame.")),CODE
LOWactix-multipart/src/test.rs320 Lorem ipsum dolor\n\CODE
LOWactix-multipart/src/test.rs338 Bytes::from_static(b"Lorem ipsum dolor\nsit ame."),CODE
LOW⚡actix-web/src/types/readlines.rs185 b"Lorem Ipsum is simply dummy text of the printing and typesetting\n\CODE
LOW⚡actix-web/src/types/readlines.rs186 industry. Lorem Ipsum has been the industry's standard dummy\n\CODE
LOW⚡actix-web/src/types/readlines.rs187 Contrary to popular belief, Lorem Ipsum is not simply random text.",CODE
LOW⚡actix-web/src/types/readlines.rs194 "Lorem Ipsum is simply dummy text of the printing and typesetting\n"CODE
LOW⚡actix-web/src/types/readlines.rs199 "industry. Lorem Ipsum has been the industry's standard dummy\n"CODE
LOW⚡actix-web/src/types/readlines.rs204 "Contrary to popular belief, Lorem Ipsum is not simply random text."CODE
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMactix-web/src/extract.rs23/// leverage extractors when implementing middlewares.COMMENT
MEDIUMactix-web/src/app.rs69 /// Any [`Data<T>`] type added here can utilize its extractor implementation in handlers.COMMENT
MEDIUMactix-web/src/guard/mod.rs9//! Fundamentally, a guard is a predicate function that receives a reference to a request contextCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHactix-web/src/web.rs108 #[doc = concat!(" In this example, one `", stringify!($method_const), " /{project_id}` route is set up:")]COMMENT
TODO Padding1 hit · 2 pts
SeverityFileLineSnippetContext
LOWactix-web/src/info.rs122 // TODO: implement https://datatracker.ietf.org/doc/html/rfc7239#section-5.1COMMENT