AI Slop Code Risk Monitor

cachix/devenv

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

Fast, Declarative, Reproducible, and Composable Developer Environments using Nix

1.6 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for cachix/devenv, a Rust project with 7,790 GitHub stars. SynthScan examined 203,806 lines of code across 1051 source files, recording 259 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 1.6 (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.6
Adjusted Signal
1.6
Raw Pattern Score
100%
Time Factor
2026-10-30
Last Push
7.8K
Stars
Rust
Language
203.8K
Lines of Code
1.1K
Files
259
Pattern Hits
2026-10-31
Scan Date
0.00
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 5.9/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.6/100 · LOW

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

Agent Over-Engineering Ratio 2.4/100 · LOW

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

PR Review Velocity Impact 7.7/100 · LOW

Which changes need focused human review? 259 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 1HIGH 2MEDIUM 24LOW 232

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 259 distinct pattern matches across 13 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 Block178 hits · 177 pts
SeverityFileLineSnippetContext
LOWREADME.md101 # "myproj:setup".exec = "mytool build";COMMENT
LOWdevenv-core/src/resource.rs1//! Replayable resource abstractions for eval caching.COMMENT
LOWdevenv-core/src/resource.rs21///COMMENT
LOWdevenv-core/src/resource.rs41 const TYPE_ID: &'static str;COMMENT
LOWdevenv-core/src/store_settings.rs1//! Resolved Nix store settings handed to a backend at init time.COMMENT
LOWdevenv-core/src/config.rs21COMMENT
LOWdevenv-core/src/config.rs81 ///COMMENT
LOWdevenv-core/src/config.rs101 /// Default: `false`.COMMENT
LOWdevenv-core/src/config.rs121 /// Enable CUDA support for nixpkgs.COMMENT
LOWdevenv-core/src/config.rs141 /// Added in 2.0.7.COMMENT
LOWdevenv-core/src/config.rs161 /// A list of license names to allow.COMMENT
LOWdevenv-core/src/config.rs181COMMENT
LOWdevenv-core/src/config.rs201 ///COMMENT
LOWdevenv-core/src/config.rs261 /// Default: `false`.COMMENT
LOWdevenv-core/src/config.rs301COMMENT
LOWdevenv-core/src/config.rs321#[derive(schematic::Config, Clone, Serialize, Debug, JsonSchema)]COMMENT
LOWdevenv-core/src/config.rs341 // Deprecated top-level nixpkgs settings — deprecated since 2.0.COMMENT
LOWdevenv-core/src/config.rs361 pub nixpkgs: Option<Nixpkgs>,COMMENT
LOWdevenv-core/src/config.rs381 /// Default: `false`.COMMENT
LOWdevenv-core/src/config.rs401 #[serde(skip_serializing_if = "Option::is_none", default)]COMMENT
LOWdevenv-core/src/config.rs421 /// Error if a port is already in use instead of auto-allocating the next available port.COMMENT
LOWdevenv-core/src/config.rs441 #[serde(skip)]COMMENT
LOWdevenv-core/src/config.rs461 /// Secretspec provider to use.COMMENT
LOWdevenv-core/src/config.rs501 repository_root: &'a Path,COMMENT
LOWdevenv-core/src/config.rs561 /// field-specific merge strategies. Use [`ConfigLoader`] to also include anCOMMENT
LOWdevenv-core/src/config.rs1381COMMENT
LOWdevenv-core/src/config.rs1401 /// * `depth` - Current recursion depth (prevents stack overflow)COMMENT
LOWdevenv-core/src/bootstrap_args.rs1//! Pre-serialized arguments for the Nix bootstrap entry point.COMMENT
LOWdevenv-core/src/paths.rs61/// Derives a short, deterministic `devenv-<hash>` pathCOMMENT
LOWdevenv-core/src/nix_args.rs341COMMENT
LOWdevenv-core/src/nix_args.rs381COMMENT
LOWdevenv-core/src/nix_args.rs421}COMMENT
LOWdevenv-core/src/evaluator.rs41}COMMENT
LOWdevenv-core/src/eval_op.rs1//! Evaluation operation types and structured Nix effect parsing.COMMENT
LOWdevenv-core/src/eval_op.rs21 /// Read a file's contents with `builtins.readFile`.COMMENT
LOWdevenv-core/src/nix_log_bridge.rs1//! Bridge that converts Nix logs to the devenv Activity system.COMMENT
LOWdevenv-core/src/nix_log_bridge.rs861/// Nix errors have the format:COMMENT
LOWdevenv-core/src/realized.rs1//! Hook fired by a backend after each store-path realization.COMMENT
LOWdevenv-core/src/settings.rs61 };COMMENT
LOWdevenv-core/src/cachix.rs21///COMMENT
LOWdevenv-core/src/cachix.rs101 /// 1. `CACHIX_AUTH_TOKEN` environment variable (non-empty).COMMENT
LOWdevenv-core/src/cachix.rs321pub enum NetrcPreservation {COMMENT
LOWdevenv-core/src/cachix.rs401/// Replace the netrc at `netrc_path` with `content`, readable only by itsCOMMENT
LOWdevenv-processes/tests/file_watching.rs1//! File watching integration tests for ProcessRunner.COMMENT
LOWdevenv-processes/tests/file_watching.rs581 manager.stop_all().await.expect("Failed to stop");COMMENT
LOWdevenv-processes/tests/common/mod.rs321COMMENT
LOWdevenv-processes/src/config.rs61COMMENT
LOWdevenv-processes/src/config.rs101 pub notify: bool,COMMENT
LOWdevenv-processes/src/config.rs261pub struct ProcessProxyConfig {COMMENT
LOWdevenv-processes/src/config.rs301 #[serde(default)]COMMENT
LOWdevenv-processes/src/lib.rs1//! Process management for devenv.COMMENT
LOWdevenv-processes/src/lib.rs101COMMENT
LOWdevenv-processes/src/force_exit_registry.rs1//! Tracks live child process scopes so a force-exit can tear them down.COMMENT
LOWdevenv-processes/src/force_exit_registry.rs21COMMENT
LOWdevenv-processes/src/manager.rs21/// Request sent by a client to the native manager API socket.COMMENT
LOWdevenv-processes/src/manager.rs41 /// already-running and out-of-subset dependencies resolve against theCOMMENT
LOWdevenv-processes/src/manager.rs61/// Where the running native manager resides. The manager answers this over itsCOMMENT
LOWdevenv-processes/src/manager.rs121 },COMMENT
LOWdevenv-processes/src/manager.rs241 pub output_readers: Option<(JoinHandle<()>, JoinHandle<()>)>,COMMENT
LOWdevenv-processes/src/manager.rs461 },COMMENT
118 more matches not shown…
Decorative Section Separators16 hits · 52 pts
SeverityFileLineSnippetContext
MEDIUMdevenv/src/devenv/machines.rs1588 // ── Install pipeline ─────────────────────────────────────────────COMMENT
MEDIUMdevenv/src/devenv/mod.rs2532 // ── Phase 1: Configuring shell ──────────────────────────────COMMENT
MEDIUMdevenv/src/devenv/mod.rs2536 // ── Phase 2: Running enterTest tasks ─────────────────────────COMMENT
MEDIUMdevenv/src/devenv/mod.rs2558 // ── Phase 3: Building tests ─────────────────────────────────COMMENT
MEDIUM⚡devenv/src/devenv/mod.rs2581 // ── Phase 4: Starting processes (if needed) ─────────────────COMMENT
MEDIUM⚡devenv/src/devenv/mod.rs2591 // ── Phase 5: Running tests ──────────────────────────────────COMMENT
MEDIUM⚡devenv/src/devenv/mod.rs2599 // ── Phase 6: Stopping processes ─────────────────────────────COMMENT
MEDIUMdevenv/src/devenv/mod.rs2746 // ── Phase 1: Configuring shell ──────────────────────────────COMMENT
MEDIUMdevenv/src/devenv/mod.rs2757 // ── Phase 2: Loading and running enterShell tasks ─────────────COMMENT
MEDIUMdevenv/src/devenv/mod.rs2779 // ── Phase 3: Running processes ──────────────────────────────COMMENT
MEDIUMdevenv-tasks/src/types.rs396 // ── helpers ──────────────────────────────────────────────────────COMMENT
MEDIUMdevenv-tasks/src/types.rs451 // ── process_name ────────────────────────────────────────────────COMMENT
MEDIUMdevenv-tasks/src/types.rs478 // ── is_process_dep_satisfied ────────────────────────────────────COMMENT
MEDIUMdevenv-tasks/src/types.rs554 // ── is_completed_dep_satisfied ──────────────────────────────────COMMENT
MEDIUMdevenv-tasks/src/types.rs610 // ── is_dep_satisfied ────────────────────────────────────────────COMMENT
MEDIUMdevenv-tasks/src/tests/mod.rs3385/// └──────before──> devenv:enterTestCOMMENT
Hyper-Verbose Identifiers38 hits · 41 pts
SeverityFileLineSnippetContext
LOW⚡tests/machines-executor/test_executor.py240 def test_running_unit_rejects_conflicting_operation(self):CODE
LOW⚡tests/machines-executor/test_executor.py247 def test_lost_launch_response_is_not_failed_activation(self):CODE
LOW⚡tests/machines-executor/test_executor.py256 def test_observation_failure_blocks_rollback(self):CODE
LOW⚡tests/machines-executor/test_executor.py263 def test_killed_worker_preserves_unknown_checkpoint(self):CODE
LOW⚡tests/machines-executor/test_executor.py293 def test_reboot_does_not_report_success(self):CODE
LOW⚡tests/machines-executor/test_executor.py300 def test_checkpoint_failure_prevents_launch(self):CODE
LOW⚡tests/machines-executor/test_executor.py306 def test_stale_worker_cannot_activate_new_request(self):CODE
LOW⚡tests/machines-executor/test_executor.py315 def test_success_exit_without_running_system_change_is_failure(self):CODE
LOW⚡tests/machines-executor/test_executor.py360 def test_corrupt_checkpoint_blocks_new_work(self):CODE
LOW⚡tests/machines-executor/test_executor.py367 def test_invalid_target_does_not_launch(self):CODE
LOW⚡tests/machines-executor/test_executor.py372 def test_unconfirmed_deployment_rolls_back(self):CODE
LOW⚡tests/machines-executor/test_executor.py383 def test_confirmed_deployment_ignores_watchdog(self):CODE
LOW⚡tests/machines-executor/test_executor.py392 def test_stale_watchdog_cannot_revert_new_deployment(self):CODE
LOW⚡tests/machines-executor/test_executor.py400 def test_early_watchdog_and_late_confirmation_rejected(self):CODE
LOW⚡tests/machines-executor/test_executor.py422 def test_missing_watchdog_is_unknown_without_confirmation(self):CODE
LOW⚡tests/machines-executor/test_executor.py428 def test_watchdog_is_armed_before_activation_launch(self):CODE
LOW⚡tests/machines-executor/test_executor.py435 def test_worker_refuses_activation_without_watchdog(self):CODE
LOW⚡tests/machines-executor/test_executor.py442 def test_reboot_recovers_unconfirmed_system(self):CODE
LOW⚡tests/machines-executor/test_executor.py453 def test_recovery_does_not_compete_with_live_switch(self):CODE
LOW⚡tests/machines-executor/test_executor.py460 def test_reboot_preserves_confirmed_system(self):CODE
LOW⚡tests/machines-executor/test_executor.py469 def test_boot_recovery_launch_is_not_retried(self):CODE
LOWtests/machines-executor/test_executor.py23 def test_planned_start_checks_both_generations_before_effects(self):CODE
LOWtests/machines-executor/test_executor.py38 def test_planned_start_and_confirmation(self):CODE
LOWtests/machines-executor/test_executor.py69 def test_planned_worker_rejects_drift_without_watchdog_reverting_it(self):CODE
LOWtests/machines-executor/test_executor.py184 def test_success_persists_and_reopens(self):CODE
LOWtests/machines-executor/test_executor.py197 def test_explicit_rollback_restores_previous(self):CODE
LOWtests/machines-executor/test_executor.py206 def test_activation_failure_retains_recovery(self):CODE
LOWtests/machines-executor/test_executor.py220 def test_same_request_does_not_launch_twice(self):CODE
LOWtests/machines-executor/test_executor.py227 def test_target_lock_rejects_other_process(self):CODE
LOWtests/machines-executor/test_executor.py330 def test_queued_systemd_job_is_pending(self):CODE
LOWtests/machines-executor/test_executor.py345 def test_exited_unit_with_empty_job_allows_rollback(self):CODE
LOWtests/machines-executor/test_executor.py411 def test_worker_cannot_start_after_deadline(self):CODE
LOWtests/machines-executor/test_executor.py484 def test_interrupted_rollback_is_not_retried_after_reboot(self):CODE
LOWtests/machines-executor/test_executor.py495 def test_stale_boot_worker_cannot_override_explicit_recovery(self):CODE
LOWtests/machines-executor/test_executor.py504 def test_rollback_failure_retains_both_errors(self):CODE
LOWdocs/src/lib/landing-environment-core.ts247export function createLandingEnvironmentCore(catalog: LandingOption[]) {CODE
LOWdocs/src/lib/ai-composition-loader.ts63export function createAiCompositionLoader(loader: HTMLElement, catalog: Ingredient[]) {CODE
LOWdocs/src/data/technology-registry.ts224export function validateTechnologyRegistry(documentedIds: string[], optionIds: string[]) {CODE
AI Slop Vocabulary4 hits · 12 pts
SeverityFileLineSnippetContext
MEDIUMdevenv-tasks/src/tests/mod.rs343 // assertion robust even if unrelated activities share the channel.COMMENT
MEDIUMtests/process-task-failure/.test.sh4# The integration harness runs this script directly. If the nestedCOMMENT
MEDIUMdevenv-tui/tests/replay-pty.sh40# Avoid standalone Esc in this byte-level harness: the emulated terminal reportsCOMMENT
MEDIUMdevenv-tui/src/app.rs669/// robust than relying on crossterm's `disable_raw_mode()`, which only worksCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALdevenv/src/main.rs2047 assert!(prepared.backend.devenv.shell_settings.profiles.is_empty());CODE
Unused Imports10 hits · 10 pts
SeverityFileLineSnippetContext
LOWtests/python-with-packages/check-python-env.py29CODE
LOWtests/python-with-packages/check-python-env.py32CODE
LOWtests/python-with-packages/check-python-env.py35CODE
LOWtests/python-with-packages/check-python-env.py38CODE
LOWtests/python-with-packages/check-python-env.py43CODE
LOWtests/python-with-packages/check-python-env.py46CODE
LOWtests/git-hooks-python-path/main.py1CODE
LOWdocs/gen/sitemap_with_anchors.py20CODE
LOWdocs/gen/sitemap_diff.py31CODE
LOWexamples/python-django/myproject/settings.py12CODE
Modern AI Meta-Vocabulary3 hits · 8 pts
SeverityFileLineSnippetContext
MEDIUMREADME.md63- **[AI generation](https://devenv.new)** to scaffold environments from a natural language descriptionCODE
MEDIUMdevenv/src/commands/init.rs1//! `devenv init`: scaffold devenv.nix / devenv.yaml / .gitignore in a directory.COMMENT
MEDIUMtests/process-up-attach-deps/.test.sh102# manager, while the manager-side parked judgment itself is event-driven.COMMENT
Redundant / Tautological Comments4 hits · 6 pts
SeverityFileLineSnippetContext
LOWtests/eval-cache-git/.test.sh26# Check if our test file is tracked in input-paths.txtCOMMENT
LOWtests/eval-cache-no-git/.test.sh20# Check if our test file is tracked in input-paths.txtCOMMENT
LOWtests/profiles/.test.sh36 # Check if package name appears anywhere in the packages or PATHCOMMENT
LOWdevenv-shell/src/dialect/bash.rs35# Set SHELL to the target shell.COMMENT
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtests/machines-plan/.test-pty.py24except OSError:CODE
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMtests/direnv/.test.sh25# Define the devenv argumentsCOMMENT
Cross-Language Confusion1 hit · 2 pts
SeverityFileLineSnippetContext
HIGHtests/machines-deploy-ssh-vm/test.py44 hardware.facter = null;STRING
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsrc/modules/machines/deploy.py50CODE
Deep Nesting1 hit · 0 pts
SeverityFileLineSnippetContext
LOWtests/machines-executor/test_executor.py134CODE