AI Slop Code Risk Monitor

meilisearch/meilisearch

SlopCodeMonitor badge for meilisearch/meilisearch Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

A lightning-fast search engine API bringing AI-powered hybrid search to your sites and applications.

1.7 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for meilisearch/meilisearch, a Rust project with 59,729 GitHub stars. SynthScan examined 289,808 lines of code across 834 source files, recording 442 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 1.7 (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.

1.7
Adjusted Signal
1.7
Raw Pattern Score
100%
Time Factor
2026-10-29
Last Push
59.7K
Stars
Rust
Language
289.8K
Lines of Code
834
Files
442
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 7.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.9/100 · LOW

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

Agent Over-Engineering Ratio 0.0/100 · LOW

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

PR Review Velocity Impact 8.2/100 · LOW

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

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 442 distinct pattern matches across 10 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 Block410 hits · 398 pts
SeverityFileLineSnippetContext
LOWBENCHMARKS.md121They are JSON files with the following structure (comments are not actually supported, to make your own, remove them or COMMENT
LOWBENCHMARKS.md141 "assets": {COMMENT
LOWconfig.toml1# This file shows the default configuration of Meilisearch.COMMENT
LOWconfig.toml21# All gathered data is used solely for the purpose of improving Meilisearch, and can be deleted at any time.COMMENT
LOWconfig.toml41COMMENT
LOWconfig.toml61COMMENT
LOWconfig.toml81# Prevents a Meilisearch instance from throwing an error when `import_snapshot` does not point to a valid snapshot file.COMMENT
LOWconfig.toml101COMMENT
LOWconfig.toml121COMMENT
LOWexternal-crates/async-openai/src/error.rs1//! Errors originating from API calls, parsing responses, and reading-or-writing to the file system.COMMENT
LOWexternal-crates/async-openai/src/lib.rs1//! Rust library for OpenAICOMMENT
LOWexternal-crates/async-openai/src/lib.rs21//! let client = Client::with_config(http_client::policy::IpPolicy::danger_always_allow(), config);COMMENT
LOWexternal-crates/async-openai/src/lib.rs41//! let client = Client::new(http_client::policy::IpPolicy::danger_always_allow());COMMENT
LOWexternal-crates/async-openai/src/lib.rs61//!COMMENT
LOWexternal-crates/async-openai/src/lib.rs81//! // Note that `async-openai` only implements OpenAI specCOMMENT
LOWexternal-crates/async-openai/src/lib.rs101COMMENT
LOWexternal-crates/async-openai/src/lib.rs121// mod project_service_accounts;COMMENT
LOWexternal-crates/async-openai/src/lib.rs141pub use client::Client;COMMENT
LOWexternal-crates/async-openai/src/lib.rs161// pub use users::Users;COMMENT
LOWexternal-crates/async-openai/src/completion.rs41 }COMMENT
LOWexternal-crates/async-openai/src/uploads.rs21 /// COMMENT
LOWexternal-crates/async-openai/src/chat.rs21COMMENT
LOWexternal-crates/async-openai/src/file.rs21 /// Upload a file that can be used across various endpoints. Individual files can be up to 512 MB, and the size of aCOMMENT
LOW…rnal-crates/async-openai/src/types/assistant_stream.rs21/// We emit events whenever a new object is created, transitions to a new state, or is beingCOMMENT
LOW…rnal-crates/async-openai/src/types/assistant_stream.rs41 ThreadRunCreated(RunObject),COMMENT
LOW…rnal-crates/async-openai/src/types/assistant_stream.rs61 #[serde(rename = "thread.run.cancelling")]COMMENT
LOW…rnal-crates/async-openai/src/types/assistant_stream.rs81 /// Occurs when a [run step](https://platform.openai.com/docs/api-reference/run-steps/step-object) fails.COMMENT
LOWexternal-crates/async-openai/src/types/batch.rs1use std::collections::HashMap;COMMENT
LOWexternal-crates/async-openai/src/types/assistant.rs61 /// The default strategy. This strategy currently uses a `max_chunk_size_tokens` of `800` and `chunk_overlap_tokens`COMMENT
LOWexternal-crates/async-openai/src/types/assistant.rs81#[derive(Clone, Serialize, Debug, Deserialize, PartialEq)]COMMENT
LOWexternal-crates/async-openai/src/types/assistant.rs101 pub tool_resources: Option<AssistantToolResources>,COMMENT
LOWexternal-crates/async-openai/src/types/assistant.rs181COMMENT
LOWexternal-crates/async-openai/src/types/assistant.rs221 ///COMMENT
LOWexternal-crates/async-openai/src/types/assistant.rs241 /// The name of the assistant. The maximum length is 256 characters.COMMENT
LOWexternal-crates/async-openai/src/types/moderation.rs41 /// Either a URL of the image or the base64 encoded image dataCOMMENT
LOWexternal-crates/async-openai/src/types/moderation.rs61}COMMENT
LOWexternal-crates/async-openai/src/types/moderation.rs81 pub illicit: bool,COMMENT
LOWexternal-crates/async-openai/src/types/moderation.rs101 /// Content that depicts death, violence, or physical injury in graphic detail.COMMENT
LOWexternal-crates/async-openai/src/types/moderation.rs121 /// The score for the category 'illicit/violent'.COMMENT
LOWexternal-crates/async-openai/src/types/embedding.rs21 Float,COMMENT
LOWexternal-crates/async-openai/src/types/fine_tuning.rs61 /// Scaling factor for the learning rate. A smaller learning rate may be useful to avoidCOMMENT
LOWexternal-crates/async-openai/src/types/fine_tuning.rs81 /// See [upload file](https://platform.openai.com/docs/api-reference/files/create) for how to upload a file.COMMENT
LOWexternal-crates/async-openai/src/types/fine_tuning.rs101 /// The ID of an uploaded file that contains validation data.COMMENT
LOWexternal-crates/async-openai/src/types/fine_tuning.rs161}COMMENT
LOWexternal-crates/async-openai/src/types/fine_tuning.rs201}COMMENT
LOWexternal-crates/async-openai/src/types/completion.rs21 /// The prompt(s) to generate completions for, encoded as a string, array of strings, array of tokens, or array of tCOMMENT
LOWexternal-crates/async-openai/src/types/completion.rs41 #[serde(skip_serializing_if = "Option::is_none")]COMMENT
LOWexternal-crates/async-openai/src/types/completion.rs61COMMENT
LOWexternal-crates/async-openai/src/types/completion.rs81 /// [See more information about frequency and presence penalties.](https://platform.openai.com/docs/guides/text-geneCOMMENT
LOWexternal-crates/async-openai/src/types/completion.rs101 /// Accepts a json object that maps tokens (specified by their token ID in the GPT tokenizer) to an associated bias COMMENT
LOWexternal-crates/async-openai/src/types/upload.rs1use crate::error::OpenAIError;COMMENT
LOWexternal-crates/async-openai/src/types/run.rs181#[derive(Clone, Serialize, Default, Debug, Deserialize, Builder, PartialEq)]COMMENT
LOWexternal-crates/async-openai/src/types/audit_log.rs141 /// The details for events with the type `api_key.created`.COMMENT
LOWexternal-crates/async-openai/src/types/audit_log.rs161 pub login_failed: Option<AuditLogLoginFailed>,COMMENT
LOWexternal-crates/async-openai/src/types/audit_log.rs181 #[serde(rename = "service_account.updated")]COMMENT
LOWexternal-crates/async-openai/src/types/image.rs61COMMENT
LOWexternal-crates/async-openai/src/types/image.rs81 /// The model to use for image generation.COMMENT
LOWexternal-crates/async-openai/src/types/image.rs101 pub size: Option<ImageSize>,COMMENT
LOWexternal-crates/async-openai/src/types/project_users.rs41#[builder(name = "ProjectUserCreateRequestArgs")]COMMENT
LOWexternal-crates/async-openai/src/types/audio.rs181#[builder(setter(into, strip_option), default)]COMMENT
350 more matches not shown…
Hallucination Indicators4 hits · 40 pts
SeverityFileLineSnippetContext
CRITICALcrates/index-scheduler/src/dump.rs55 self.index_scheduler.queue.batches.all_batches.put(&mut self.wtxn, &batch.uid, &batch)?;CODE
CRITICALcrates/index-scheduler/src/dump.rs252 self.index_scheduler.queue.tasks.all_tasks.put(&mut self.wtxn, &task.uid, &task)?;CODE
CRITICALcrates/index-scheduler/src/dump.rs314 self.index_scheduler.queue.tasks.index_tasks.put(&mut self.wtxn, &index, &bitmap)?;CODE
CRITICALcrates/index-scheduler/src/dump.rs324 self.index_scheduler.queue.batches.index_tasks.put(&mut self.wtxn, &index, &bitmap)?;CODE
Synthetic Comment Markers2 hits · 12 pts
SeverityFileLineSnippetContext
HIGHREADME.md111- **[Conversational search](https://www.meilisearch.com/docs/capabilities/conversational_search/overview?utm_campaign=osCODE
HIGHexternal-crates/async-openai/src/types/fine_tuning.rs175 /// default tags are generated by OpenAI: "openai/finetune", "openai/{base-model}", "openai/{ftjob-abcdef}".COMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMexternal-crates/async-openai/src/types/chat.rs835 /// - If set to 'auto', the system will utilize scale tier credits until they are exhausted.COMMENT
MEDIUMcrates/meilisearch-types/src/webhooks.rs16 // headers are case insensitive, so to make the redaction robust we iterate over qualifying headersCOMMENT
MEDIUM.github/workflows/check-openapi-file.yml58 # Lints the OpenAPI file for best practices (descriptions, examples, naming conventions, etc.)COMMENT
Fake / Example Data8 hits · 8 pts
SeverityFileLineSnippetContext
LOWcrates/milli/src/lib.rs476 "name": "John Doe",CODE
LOWcrates/milli/src/lib.rs488 { "name": "John Doe" },CODE
LOWcrates/meilisearch/tests/documents/add_documents.rs2766 "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec metus erat, consequat in blandit CODE
LOWcrates/meilisearch/tests/documents/add_documents.rs2766 "content": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec metus erat, consequat in blandit CODE
LOWcrates/meilisearch/tests/assets/test_set.json200 "about": "Consectetur occaecat dolore esse eiusmod enim ea aliqua eiusmod amet velit laborum. Velit quis consequat cCODE
LOWcrates/meilisearch/tests/assets/test_set.json417 "about": "Et velit cupidatat velit incididunt mollit. Occaecat do labore aliqua dolore excepteur occaecat ut veniam CODE
LOWcrates/meilisearch/tests/assets/test_set.json1120 "about": "Occaecat officia veniam consectetur aliqua laboris dolor irure nulla. Lorem ipsum sit nisi veniam mollit eCODE
LOWcrates/meilisearch/tests/assets/test_set.json1363 "about": "Non ad ipsum elit commodo fugiat Lorem ipsum reprehenderit. Commodo incididunt officia cillum eiusmod offiCODE
Slop Phrases5 hits · 8 pts
SeverityFileLineSnippetContext
LOWcrates/milli/src/update/new/extract/cache.rs509 // Don't forget to put the first entry back into the heap.COMMENT
LOW…i/src/update/new/indexer/post_processing/facet_bulk.rs118 // We also don't forget to store the group size correspondingCOMMENT
LOW…i/src/update/new/indexer/post_processing/facet_bulk.rs139 // We don't forget to store the group size correspondingCOMMENT
LOWcrates/milli/src/update/facet/bulk.rs238 // don't forget to give the leftover bitmaps as wellCOMMENT
LOWcrates/milli/src/update/facet/bulk.rs314 // don't forget to insert the leftover elements into the writer as wellCOMMENT
Magic Placeholder Names1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHcrates/milli/src/vector/settings.rs320 #[schema(value_type = Option<String>, example = json!("your-api-key"))]COMMENT
Verbosity Indicators4 hits · 8 pts
SeverityFileLineSnippetContext
LOWcrates/meilisearch/tests/search/filters.rs608 // Step 1: Add a filterable attribute with BOTH comparison and equality featuresCOMMENT
LOW⚡crates/meilisearch/tests/search/filters.rs621 // Step 2: Add documentsCOMMENT
LOW⚡crates/meilisearch/tests/search/filters.rs626 // Step 3: Remove the comparison feature but keep equalityCOMMENT
LOWcrates/meilisearch/tests/search/filters.rs639 // Step 4: Test that equality filter still worksCOMMENT
Structural Annotation Overuse4 hits · 8 pts
SeverityFileLineSnippetContext
LOWcrates/meilisearch/tests/search/filters.rs608 // Step 1: Add a filterable attribute with BOTH comparison and equality featuresCOMMENT
LOW⚡crates/meilisearch/tests/search/filters.rs621 // Step 2: Add documentsCOMMENT
LOW⚡crates/meilisearch/tests/search/filters.rs626 // Step 3: Remove the comparison feature but keep equalityCOMMENT
LOWcrates/meilisearch/tests/search/filters.rs639 // Step 4: Test that equality filter still worksCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/publish-release-assets.yml20 # Check if the tag has the v<nmumber>.<number>.<number> format.COMMENT