AI Slop Code RIsk Monitor

pimalaya/himalaya

CLI to manage emails

7.3 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for pimalaya/himalaya, a Rust project with 7,423 GitHub stars. SynthScan examined 52,654 lines of code across 644 source files, recording 321 pattern matches distributed across 3 syntactic categories. The legacy adjusted pattern signal is 7.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.

7.3
Adjusted Signal
7.3
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
7.4K
Stars
Rust
Language
52.7K
Lines of Code
644
Files
321
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 17.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 6.1/100 · LOW

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

Agent Over-Engineering Ratio 10.1/100 · LOW

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

PR Review Velocity Impact 31.1/100 · MEDIUM

Which changes need focused human review? 321 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 0MEDIUM 36LOW 285

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 321 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 Block232 hits · 206 pts
SeverityFileLineSnippetContext
LOWconfig.sample.toml1# ================================================================================COMMENT
LOWconfig.sample.toml21# Global configCOMMENT
LOWconfig.sample.toml41# themselves.COMMENT
LOWconfig.sample.toml61COMMENT
LOWconfig.sample.toml81# listing and to the protocol-specific ones alike, so one key covers everyCOMMENT
LOWconfig.sample.toml101# --------------------------------------------------------------------------------COMMENT
LOWconfig.sample.toml121COMMENT
LOWconfig.sample.toml141# Gmail and Graph report their roles, IMAP and mbox the inbox alone for now,COMMENT
LOWconfig.sample.toml161# Address this account sends as, and the name it carries. They fill the `From`COMMENT
LOWconfig.sample.toml181#envelope.list.datetime-local-tz = falseCOMMENT
LOWconfig.sample.toml201#imap.server = "imaps://example.com:993"COMMENT
LOWconfig.sample.toml221COMMENT
LOWconfig.sample.toml241# SASL OAUTHBEARER, whose GS2 host and port come from the server URL.COMMENT
LOWconfig.sample.toml261# https://www.rfc-editor.org/rfc/rfc4959.htmlCOMMENT
LOWconfig.sample.toml281# JMAP configCOMMENT
LOWconfig.sample.toml301# Exactly one of `header`, `bearer` and `basic`.COMMENT
LOWconfig.sample.toml321# `drafts`-role one is used; `himalaya jmap mailbox query --role drafts` findsCOMMENT
LOWconfig.sample.toml341# The mailbox owner, defaulting to "me", the authenticated user.COMMENT
LOWconfig.sample.toml361# --------------------------------------------------------------------------------COMMENT
LOWconfig.sample.toml381#msgraph.alpn = ["http/1.1"]COMMENT
LOWconfig.sample.toml401# Read custom keywords from a body header instead: `x-keywords` is theCOMMENT
LOWconfig.sample.toml421# `INBOX` mailbox is the file named so below the root.COMMENT
LOWconfig.sample.toml441# Himalaya keeps an index of each mbox file and the envelopes it already readCOMMENT
LOWconfig.sample.toml461# under. Leave it unset: a store synced by one account is read as that one. SetCOMMENT
LOWconfig.sample.toml481# a full URL, `smtp://` being cleartext with an optional STARTTLS upgrade.COMMENT
LOWconfig.sample.toml501# ALPN identifiers offered during the TLS handshake, defaulting to ["smtp"]. AnCOMMENT
LOWconfig.sample.toml521# SASL OAUTHBEARER, whose GS2 host and port come from the server URL.COMMENT
LOWconfig.sample.toml541# `sieves://` is for the deployments listening for a handshake straight away,COMMENT
LOWconfig.sample.toml561COMMENT
LOWsrc/error.rs1//! # Error codesCOMMENT
LOWsrc/config.rs101/// himalaya-tui, whose own top-level fields are ignored here.COMMENT
LOWsrc/config.rs301 }COMMENT
LOWsrc/config.rs321 pub email: Option<String>,COMMENT
LOWsrc/config.rs341 pub signature_delim: Option<String>,COMMENT
LOWsrc/config.rs361 /// its own block names one.COMMENT
LOWsrc/config.rs381 pub m2dir: Option<M2dirConfig>,COMMENT
LOWsrc/config.rs401#[serde(rename_all = "kebab-case", deny_unknown_fields)]COMMENT
LOWsrc/config.rs421 #[serde(default)]COMMENT
LOWsrc/config.rs441 pub name_color: Option<Color>,COMMENT
LOWsrc/config.rs461 #[serde(default)]COMMENT
LOWsrc/config.rs481 /// The written body above the quoted source body.COMMENT
LOWsrc/config.rs521/// `attachment list` rendering options under `attachment.list.*`.COMMENT
LOWsrc/config.rs561 /// Per-column colors of the rendered table.COMMENT
LOWsrc/config.rs581pub struct EnvelopeListConfig {COMMENT
LOWsrc/config.rs621 /// Color of the ATT column.COMMENT
LOWsrc/config.rs641pub struct TableConfig {COMMENT
LOWsrc/config.rs701pub struct ImapConfig {COMMENT
LOWsrc/config.rs721 ///COMMENT
LOWsrc/config.rs741 /// RFC 2971 `ID` extension quirks.COMMENT
LOWsrc/config.rs761 pub fallback: Option<bool>,COMMENT
LOWsrc/config.rs781}COMMENT
LOWsrc/config.rs801 /// dovecot-keywords file, which maps a lowercase info-section letterCOMMENT
LOWsrc/config.rs821}COMMENT
LOWsrc/config.rs841 pub root: PathBuf,COMMENT
LOWsrc/config.rs861}COMMENT
LOWsrc/config.rs881/// Per-account `mbox.lock.*` options, both locks taken by default.COMMENT
LOWsrc/config.rs921 #[serde(deserialize_with = "shell_expanded_path")]COMMENT
LOWsrc/config.rs941 /// verbatim, `smtp://` being cleartext with an optional STARTTLSCOMMENT
LOWsrc/config.rs961 default = "default_smtp_alpn",COMMENT
LOWsrc/config.rs981 /// TLS provider and custom certificate used by the connection.COMMENT
172 more matches not shown…
Decorative Section Separators36 hits · 112 pts
SeverityFileLineSnippetContext
MEDIUM⚡config.sample.toml18# ================================================================================COMMENT
MEDIUM⚡config.sample.toml20# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml22# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml99# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml101# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml110# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml112# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml122# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml124# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml131# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml133# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml330# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml332# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml339# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml359# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml361# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml369# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml533# --------------------------------------------------------------------------------COMMENT
MEDIUM⚡config.sample.toml535# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml1# ================================================================================COMMENT
MEDIUMconfig.sample.toml75# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml77# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml150# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml152# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml191# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml194# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml280# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml284# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml389# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml391# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml410# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml413# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml445# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml448# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml475# --------------------------------------------------------------------------------COMMENT
MEDIUMconfig.sample.toml478# --------------------------------------------------------------------------------COMMENT
Fake / Example Data53 hits · 66 pts
SeverityFileLineSnippetContext
LOW⚡config.sample.toml238#imap.sasl.login.username = "user@example.com"COMMENT
LOW⚡config.sample.toml243#imap.sasl.oauthbearer.username = "user@example.com"COMMENT
LOW⚡config.sample.toml249#imap.sasl.xoauth2.username = "user@example.com"COMMENT
LOW⚡config.sample.toml254#imap.sasl.scram-sha-256.username = "user@example.com"COMMENT
LOW⚡config.sample.toml518#smtp.sasl.login.username = "user@example.com"COMMENT
LOW⚡config.sample.toml522#smtp.sasl.oauthbearer.username = "user@example.com"COMMENT
LOW⚡config.sample.toml526#smtp.sasl.xoauth2.username = "user@example.com"COMMENT
LOW⚡config.sample.toml530#smtp.sasl.scram-sha-256.username = "user@example.com"COMMENT
LOW⚡config.sample.toml571#sieve.sasl.plain.username = "user@example.com"COMMENT
LOW⚡config.sample.toml573#sieve.sasl.login.username = "user@example.com"COMMENT
LOW⚡config.sample.toml575#sieve.sasl.scram-sha-256.username = "user@example.com"COMMENT
LOWconfig.sample.toml165#email = "alice@example.org"COMMENT
LOW⚡config.sample.toml232imap.sasl.plain.username = "user@example.com"CODE
LOWconfig.sample.toml312#jmap.auth.basic.username = "user@example.com"COMMENT
LOW⚡config.sample.toml513smtp.sasl.plain.username = "user@example.com"CODE
LOW⚡MIGRATION.md148imap.sasl.plain.authcid = "user@example.com"CODE
LOW⚡MIGRATION.md154imap.sasl.login.username = "user@example.com"CODE
LOW⚡MIGRATION.md158imap.sasl.oauthbearer.username = "user@example.com"CODE
LOW⚡MIGRATION.md164imap.sasl.xoauth2.username = "user@example.com"CODE
LOW⚡MIGRATION.md168imap.sasl.scram-sha-256.username = "user@example.com"CODE
LOWMIGRATION.md215jmap.auth.basic.username = "user@example.com"CODE
LOWsrc/config.rs1582 from = "alice@example.org"CODE
LOWsrc/config.rs1593 assert_eq!(account.email.as_deref(), Some("alice@example.org"));CODE
LOWsrc/pimdir/backend.rs1867 &format!("user{}@example.org", i % 5),CODE
LOWsrc/pimdir/backend.rs1871 from.push(person("second@example.org", Some("Second")));CODE
LOWsrc/pimdir/backend.rs1885 to: vec![person("team@example.org", None)],CODE
LOW⚡src/wizard/discover.rs413 prompted_email("alice@example.org"),CODE
LOW⚡src/wizard/discover.rs414 Some("alice@example.org")CODE
LOW⚡src/wizard/discover.rs419 assert_eq!(prompted_email("@example.org"), None);CODE
LOWsrc/shared/message/handler.rs238 "a@example.org",CODE
LOWsrc/shared/message/read.rs907 { "name": null, "email": "dave@example.org" },CODE
LOWsrc/shared/message/read.rs1360 serde_json::json!([{ "name": null, "email": "dave@example.org" }])CODE
LOW⚡src/shared/message/builder.rs647 |name: Option<&str>| vec![(name.map(str::to_owned), "alice@example.org".into())];CODE
LOW⚡src/shared/message/builder.rs652 let mailboxes = parse_mailboxes("alice@example.org").unwrap();CODE
LOW⚡src/shared/message/builder.rs662 assert_eq!(mailboxes[0], (None, "alice@example.org".into()));CODE
LOW⚡src/shared/message/builder.rs663 assert_eq!(mailboxes[1], (Some("Bob".into()), "bob@example.org".into()));CODE
LOW⚡src/shared/message/builder.rs680 assert_eq!(from.address(), Some("alice@example.org"));CODE
LOW⚡src/shared/message/builder.rs686 let raw = build(args("sender@example.org", &to, None, "hi"), None).unwrap();CODE
LOW⚡src/shared/message/builder.rs695 assert_eq!(to_addr.address(), Some("alice@example.org"));CODE
LOW⚡src/shared/message/builder.rs701 "\"Doe, Alice\" <alice@example.org>, bob@example.org".to_string(),CODE
LOW⚡src/shared/message/builder.rs702 "carol@example.org".to_string(),CODE
LOW⚡src/shared/message/builder.rs704 let raw = build(args("sender@example.org", &to, None, "hi"), None).unwrap();CODE
LOW⚡src/shared/message/builder.rs710 assert_eq!(to[0].address(), Some("alice@example.org"));CODE
LOW⚡src/shared/message/builder.rs711 assert_eq!(to[1].address(), Some("bob@example.org"));CODE
LOW⚡src/shared/message/builder.rs712 assert_eq!(to[2].address(), Some("carol@example.org"));CODE
LOWsrc/shared/envelope/list.rs387 email: String::from("eve@example.org"),CODE
LOW⚡src/account/context.rs649 email: Some("alice@example.org".to_string()),CODE
LOW⚡src/account/context.rs656 (Some("alice@example.org"), Some("Alice")),CODE
LOW⚡src/account/context.rs662 account.resolve_from(Some("alias@example.org")),CODE
LOW⚡src/account/context.rs663 (Some("alias@example.org"), None),CODE
LOWsrc/gmail/search.rs173 assert_eq!(q("to bob@example.org"), "to:bob@example.org");CODE
LOWsrc/email/search/eval.rs159 email: String::from("alice@example.org"),CODE
LOWsrc/email/search/eval.rs163 email: String::from("team@example.org"),CODE