AI Slop Code Risk Monitor

fallow-rs/fallow

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

Codebase intelligence for TypeScript and JavaScript. Health, complexity hotspots, duplication, architecture boundaries, circular dependencies, design-system drift, and unused code, from one graph. CLI, GitHub Action, LSP, MCP, and VS Code. Rust, MIT licensed.

2.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for fallow-rs/fallow, a Rust project with 5,286 GitHub stars. SynthScan examined 1,348,103 lines of code across 2626 source files, recording 3392 pattern matches distributed across 17 syntactic categories. The legacy adjusted pattern signal is 2.8 (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.

2.8
Adjusted Signal
2.8
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
5.3K
Stars
Rust
Language
1.3M
Lines of Code
2.6K
Files
3.4K
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 10.8/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.3/100 · LOW

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

Agent Over-Engineering Ratio 2.4/100 · LOW

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

PR Review Velocity Impact 13.8/100 · LOW

Which changes need focused human review? 3392 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 5HIGH 6MEDIUM 262LOW 3119

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 3392 distinct pattern matches across 17 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 Block2948 hits · 2680 pts
SeverityFileLineSnippetContext
LOW_typos.toml41unsed = "unsed"COMMENT
LOWCargo.toml41# exact because it has no stable release line and pre-release semver matching isCOMMENT
LOWsocket.yml1# Socket GitHub App configuration. Socket checks each pull request thatCOMMENT
LOW.clippy.toml21COMMENT
LOWmise.toml1# Optional pinned set of local development tools. Run `mise install` to get it.COMMENT
LOWcrates/types/Cargo.toml21COMMENT
LOWcrates/types/src/cache_rejection.rs1//! Why a persisted cache was not reused.COMMENT
LOWcrates/types/src/cache_rejection.rs21#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize)]COMMENT
LOWcrates/types/src/cache_rejection.rs41 Undecodable,COMMENT
LOWcrates/types/src/cache_rejection.rs101 Self::ConfigHashMismatch => "extraction config changed".to_string(),COMMENT
LOWcrates/types/src/mcp_manifest.rs1//! Machine-readable manifest of the tools exposed by the fallow MCP server.COMMENT
LOWcrates/types/src/mcp_manifest.rs41 /// Wire tool name (matches the rmcp `#[tool]` method name).COMMENT
LOWcrates/types/src/mcp_manifest.rs61 /// source files. `analyze`, `check_changed`, `find_dupes` andCOMMENT
LOWcrates/types/src/mcp_manifest.rs681/// list and read with no subprocess and no analysis run, cacheable by URICOMMENT
LOWcrates/types/src/mcp_manifest.rs821/// One row of the cross-surface capability parity table: how a single fallowCOMMENT
LOWcrates/types/src/mcp_manifest.rs841/// the maintainer endorses.COMMENT
LOWcrates/types/src/task_matrix.rs1//! Single source of truth for the agent-discoverability task-to-command matrixCOMMENT
LOWcrates/types/src/task_matrix.rs21/// `command` MAY contain `<placeholder>` or glob tokens because it rendersCOMMENT
LOWcrates/types/src/output_dead_code.rs1//! Typed envelope wrappers for the simple 1:1 dead-code findings whoseCOMMENT
LOWcrates/types/src/output_dead_code.rs101///COMMENT
LOWcrates/types/src/output_dead_code.rs121#[cfg_attr(feature = "schema", derive(schemars::JsonSchema))]COMMENT
LOWcrates/types/src/output_dead_code.rs141 ///COMMENT
LOWcrates/types/src/output_dead_code.rs161 /// the run.COMMENT
LOWcrates/types/src/output_dead_code.rs241#[must_use]COMMENT
LOWcrates/types/src/output_dead_code.rs301#[must_use]COMMENT
LOWcrates/types/src/output_dead_code.rs321/// every time: `fallow fix`, the LSP quick fix, and the `auto_fixable` flag anCOMMENT
LOWcrates/types/src/output_dead_code.rs341}COMMENT
LOWcrates/types/src/output_dead_code.rs401/// flattens in via `#[serde(flatten)]`, with a typed `actions` arrayCOMMENT
LOWcrates/types/src/output_dead_code.rs421 /// the merge-base. `None` when serialized directly from Rust.COMMENT
LOWcrates/types/src/output_dead_code.rs481/// [`UnusedFileFinding`]: flattens the bare finding and carries a typedCOMMENT
LOWcrates/types/src/output_dead_code.rs541 actions,COMMENT
LOWcrates/types/src/output_dead_code.rs561 /// new id. Absent in output from older versions.COMMENT
LOWcrates/types/src/output_dead_code.rs621/// Wire-shape envelope for an [`UnresolvedImport`] finding. MirrorsCOMMENT
LOWcrates/types/src/output_dead_code.rs701 }COMMENT
LOWcrates/types/src/output_dead_code.rs781/// diagnostic is anchored at line 1 col 0 of each member).COMMENT
LOWcrates/types/src/output_dead_code.rs801 pub introduced: Option<AuditIntroduced>,COMMENT
LOWcrates/types/src/output_dead_code.rs881 /// The underlying dead-code entry.COMMENT
LOWcrates/types/src/output_dead_code.rs941 actions,COMMENT
LOWcrates/types/src/output_dead_code.rs961 /// reformats and reorders. A rename of the file or the symbol gives aCOMMENT
LOWcrates/types/src/output_dead_code.rs1021/// unmatched.COMMENT
LOWcrates/types/src/output_dead_code.rs1101COMMENT
LOWcrates/types/src/output_dead_code.rs1181/// replacing the banned call, import, or effect, or suppressing it with a scopedCOMMENT
LOWcrates/types/src/output_dead_code.rs1261}COMMENT
LOWcrates/types/src/output_dead_code.rs1281 /// forward-compat).COMMENT
LOWcrates/types/src/output_dead_code.rs1361/// declarations, with the same `is_re_export`-aware note swap.COMMENT
LOWcrates/types/src/output_dead_code.rs1381 /// Set by the audit pass when this finding is introduced relative toCOMMENT
LOWcrates/types/src/output_dead_code.rs1481COMMENT
LOWcrates/types/src/output_dead_code.rs1561/// line-level suppress.COMMENT
LOWcrates/types/src/output_dead_code.rs1641 #[serde(flatten)]COMMENT
LOWcrates/types/src/output_dead_code.rs1701 introduced: None,COMMENT
LOWcrates/types/src/output_dead_code.rs1721 /// new id. Absent in output from older versions.COMMENT
LOWcrates/types/src/output_dead_code.rs1761 effective_severity: None,COMMENT
LOWcrates/types/src/output_dead_code.rs1781 #[serde(default, skip_serializing_if = "Option::is_none")]COMMENT
LOWcrates/types/src/output_dead_code.rs1821 }COMMENT
LOWcrates/types/src/output_dead_code.rs1881 }COMMENT
LOWcrates/types/src/output_dead_code.rs1941}COMMENT
LOWcrates/types/src/output_dead_code.rs2001COMMENT
LOWcrates/types/src/output_dead_code.rs2061/// Wire-shape envelope for an [`UnusedComponentEmit`] finding. There is no safeCOMMENT
LOWcrates/types/src/output_dead_code.rs2081 /// Set by the audit pass when this finding is introduced relative toCOMMENT
LOWcrates/types/src/output_dead_code.rs2121/// auto-fix: removing a dispatched event is judgement-bearing (the event may beCOMMENT
2888 more matches not shown…
Decorative Section Separators212 hits · 599 pts
SeverityFileLineSnippetContext
MEDIUMcrates/types/src/output_dead_code.rs3620// ── Catalog / dep-override family ───────────────────────────────COMMENT
MEDIUMcrates/types/src/output_dead_code.rs4249// ── The mutation gate, registered once ──────────────────────────COMMENT
MEDIUMcrates/types/src/output_dead_code.rs4405// ── Position-0 invariant golden tests ───────────────────────────COMMENT
MEDIUMcrates/types/src/results.rs4773 // ── total_issues counts each category independently ─────────COMMENT
MEDIUMcrates/types/src/results.rs4804 // ── sort: unused_files by path ──────────────────────────────COMMENT
MEDIUMcrates/types/src/results.rs4830 // ── sort: unused_exports by path, line, name ────────────────COMMENT
MEDIUMcrates/types/src/results.rs4876 // ── sort: unused_types (same sort as unused_exports) ────────COMMENT
MEDIUMcrates/types/src/results.rs4901 // ── sort: unused_dependencies by path, line, name ───────────COMMENT
MEDIUMcrates/types/src/results.rs4928 // ── sort: unused_dev_dependencies ───────────────────────────COMMENT
MEDIUMcrates/types/src/results.rs4956 // ── sort: unused_optional_dependencies ──────────────────────COMMENT
MEDIUMcrates/types/src/results.rs5063 // ── sort: unlisted_dependencies + inner imported_from ───────COMMENT
MEDIUMcrates/types/src/results.rs5113 // ── sort: duplicate_exports + inner locations ───────────────COMMENT
MEDIUMcrates/types/src/results.rs5159 // ── sort: type_only_dependencies ────────────────────────────COMMENT
MEDIUMcrates/types/src/results.rs5185 // ── sort: test_only_dependencies ────────────────────────────COMMENT
MEDIUMcrates/types/src/results.rs5211 // ── sort: circular_dependencies by files, then length ───────COMMENT
MEDIUMcrates/types/src/results.rs5284 // ── sort: export_usages + inner reference_locations ─────────COMMENT
MEDIUMcrates/types/src/results.rs5335 // ── serialization ──────────────────────────────────────────COMMENT
MEDIUMcrates/types/src/results.rs5597 // ── clone produces independent copies ───────────────────────COMMENT
MEDIUMcrates/types/src/results.rs5938 // ── export_usages not counted in total_issues ───────────────COMMENT
MEDIUMcrates/types/src/results.rs5956 // ── entry_point_summary not counted in total_issues ─────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs109// ── command-injection (CWE-78), provenance-gated to node:child_process ───────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs137// ── code-injection (CWE-94): eval (ungated) + vm (node:vm) ───────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs166// ── dynamic-regex (CWE-1333), ungated non-literal pattern construction ──────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs375// ── sql-injection (CWE-89), ungated (broad tier) ─────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs442// ── ssrf (CWE-918), ungated (broad tier) ─────────────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs596// ── path-traversal (CWE-22), provenance-gated to node:path ───────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs700// ── open-redirect (CWE-601), ungated (broad tier) ────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs786// ── weak-crypto (CWE-327), provenance-gated to node:crypto ───────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs803// ── unsafe-deserialization (CWE-502): js-yaml + node-serialize ───────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs826// ── prototype-pollution (CWE-1321), ungated (broad tier) ─────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs871// ── zip-slip / tar path traversal (CWE-22), ungated (broad tier) ─────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs888// ── nosql-injection (CWE-943), ungated (broad tier) ──────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs911// ── ssti (CWE-1336), ungated (broad tier) ────────────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs928// ── xxe (CWE-611), ungated (broad tier) ──────────────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs945// ── issue #882 catalogue-only sinks ─────────────────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs945// ── issue #882 catalogue-only sinks ─────────────────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs999// ── secret-pii-log (CWE-532), source-backed logging only ────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs1029// ── issue #897 catalogue-only sinks (batch 2) ───────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs1029// ── issue #897 catalogue-only sinks (batch 2) ───────────────────────────────COMMENT
MEDIUM…ests/integration_test/security_catalogue_categories.rs1244// ── llm-call-injection (CWE-1427), taint-gated (E11) ─────────────────────────COMMENT
MEDIUMcrates/core/data/config_value_credits.toml34# ── test-environment-optional-peer ────────────────────────────────────────COMMENT
MEDIUMcrates/core/data/config_value_credits.toml50# ── vitest-builtin-environment ────────────────────────────────────────────STRING
MEDIUMcrates/core/data/config_value_credits.toml67# ── vite-css-implementation ───────────────────────────────────────────────STRING
MEDIUMcrates/core/data/tooling.toml40# ── Prefixes: package families where every member is tooling ──────────────COMMENT
MEDIUMcrates/core/data/tooling.toml125# ── Exact package names ───────────────────────────────────────────────────COMMENT
MEDIUMcrates/core/data/tooling.toml484# ── Ambient global type packages ──────────────────────────────────────────COMMENT
MEDIUMcrates/core/data/cli_flag_credits.toml44# ── eslint ────────────────────────────────────────────────────────────────COMMENT
MEDIUMcrates/core/data/cli_flag_credits.toml68# ── jest ──────────────────────────────────────────────────────────────────STRING
MEDIUMcrates/core/data/cli_flag_credits.toml110# ── node module preloading (node, tsx, ts-node) ───────────────────────────STRING
MEDIUMcrates/core/data/cli_flag_credits.toml123# ── mocha ─────────────────────────────────────────────────────────────────STRING
MEDIUMcrates/core/data/cli_flag_credits.toml160# ── prettier ──────────────────────────────────────────────────────────────STRING
MEDIUMcrates/core/data/cli_flag_credits.toml171# ── stylelint ─────────────────────────────────────────────────────────────STRING
MEDIUMcrates/core/data/cli_flag_credits.toml182# ── postcss ───────────────────────────────────────────────────────────────STRING
MEDIUMcrates/core/src/analyze/effect.rs432// ── unused-effect-layer ─────────────────────────────────────────────COMMENT
MEDIUMcrates/core/src/analyze/effect.rs551// ── unused-tagged-error ─────────────────────────────────────────────COMMENT
MEDIUMcrates/core/src/analyze/effect.rs649// ── unproduced-catch-tag ────────────────────────────────────────────COMMENT
MEDIUM⚡crates/security/data/security_matchers.toml1018# ════════════════════════════════════════════════════════════════════════════COMMENT
MEDIUM⚡crates/security/data/security_matchers.toml1028# ════════════════════════════════════════════════════════════════════════════COMMENT
MEDIUM⚡crates/security/data/security_matchers.toml1030# ── Angular: DomSanitizer.bypassSecurityTrust* (CWE-79) ─────────────────────COMMENT
MEDIUMcrates/security/data/security_matchers.toml68# ── CWE-79: Dangerous HTML (the proven seed; no provenance needed) ──────────COMMENT
152 more matches not shown…
Structural Annotation Overuse96 hits · 165 pts
SeverityFileLineSnippetContext
LOW⚡.agents/skills/fallow/references/patterns.md31### Step 1: Run full analysisCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md37### Step 2: Review issue countsCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md41### Step 3: Find duplicationCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md47### Step 4: Preview auto-fixCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md53### Step 5: Apply fixes (after user confirmation)COMMENT
LOW⚡.agents/skills/fallow/references/patterns.md59### Step 6: VerifyCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md318### Step 1: Save current state as baselineCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md324### Step 2: Commit the baselineCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md331### Step 3: CI only fails on NEW issuesCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md337### Step 4: Gradually fix and prune the baselineCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md397### Step 1: Measure current duplicationCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md405### Step 2: Set threshold slightly above currentCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md415### Step 3: Tighten over timeCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md455### Step 3: Compare resultsCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md465### Step 4: Remove knip configCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md473### Step 1: Preview migrationCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md481### Step 2: Apply migrationCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md512### Step 1: Dry-run firstCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md518### Step 2: Review each proposed changeCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md526### Step 3: Confirm with user before applyingCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md530### Step 4: ApplyCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md536### Step 5: VerifyCOMMENT
LOW⚡.agents/skills/fallow/references/patterns.md542### Step 6: Run project testsCOMMENT
LOW.agents/skills/fallow/references/patterns.md71### Step 1: Analyze changed filesCOMMENT
LOW.agents/skills/fallow/references/patterns.md79### Step 2: If issues found, show specificsCOMMENT
LOW.agents/skills/fallow/references/patterns.md431### Step 1: Preview migrationCOMMENT
LOW.agents/skills/fallow/references/patterns.md439### Step 2: Apply migrationCOMMENT
LOW.agents/skills/fallow/references/patterns.md493### Step 3: Compare resultsCOMMENT
LOW.agents/skills/fallow/references/patterns.md632### Step 1: Run combined analysisCOMMENT
LOW.agents/skills/fallow/references/patterns.md640### Step 2: Prioritize cleanupCOMMENT
LOW.agents/skills/fallow/references/patterns.md701### Step 1: Generate SARIF outputCOMMENT
LOW.agents/skills/fallow/references/patterns.md707### Step 2: Upload via GitHub ActionCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md31### Step 1: Run full analysisCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md37### Step 2: Review issue countsCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md41### Step 3: Find duplicationCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md47### Step 4: Preview auto-fixCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md53### Step 5: Apply fixes (after user confirmation)COMMENT
LOW⚡.claude/skills/fallow/references/patterns.md59### Step 6: VerifyCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md318### Step 1: Save current state as baselineCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md324### Step 2: Commit the baselineCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md331### Step 3: CI only fails on NEW issuesCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md337### Step 4: Gradually fix and prune the baselineCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md397### Step 1: Measure current duplicationCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md405### Step 2: Set threshold slightly above currentCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md415### Step 3: Tighten over timeCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md455### Step 3: Compare resultsCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md465### Step 4: Remove knip configCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md473### Step 1: Preview migrationCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md481### Step 2: Apply migrationCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md512### Step 1: Dry-run firstCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md518### Step 2: Review each proposed changeCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md526### Step 3: Confirm with user before applyingCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md530### Step 4: ApplyCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md536### Step 5: VerifyCOMMENT
LOW⚡.claude/skills/fallow/references/patterns.md542### Step 6: Run project testsCOMMENT
LOW.claude/skills/fallow/references/patterns.md71### Step 1: Analyze changed filesCOMMENT
LOW.claude/skills/fallow/references/patterns.md79### Step 2: If issues found, show specificsCOMMENT
LOW.claude/skills/fallow/references/patterns.md431### Step 1: Preview migrationCOMMENT
LOW.claude/skills/fallow/references/patterns.md439### Step 2: Apply migrationCOMMENT
LOW.claude/skills/fallow/references/patterns.md493### Step 3: Compare resultsCOMMENT
36 more matches not shown…
Modern AI Meta-Vocabulary24 hits · 76 pts
SeverityFileLineSnippetContext
MEDIUMcrates/types/src/output_health.rs342/// untested-file item: an `add-tests` primary action (scaffold tests forCOMMENT
MEDIUMcrates/core/src/plugins/adonis.rs293/// (replacing v5's rc-level `aliases`). The default scaffold ships aCOMMENT
MEDIUMcrates/core/src/analyze/unused_deps.rs2040 // to skip it, so a scaffold that keeps its framework in devDependenciesCOMMENT
MEDIUM…/core/src/analyze/unused_deps_tests/dev_dep_in_prod.rs307/// scaffold that keeps its framework in devDependencies (which is what theCOMMENT
MEDIUM…/core/src/analyze/unused_deps_tests/dev_dep_in_prod.rs308/// SvelteKit scaffold generates) was told to promote the framework itself.COMMENT
MEDIUMcrates/cli/tests/integration/audit_tests.rs2535/// modules (the issue #2164 refactor). The surviving scaffolding clone groupCOMMENT
MEDIUMcrates/cli/src/audit_weakening.rs3//! The brief reports the guardrails that a change weakens: tests removed,COMMENT
MEDIUMcrates/cli/src/init.rs88 /// first-match value but the AGENTS.md scaffold leaves `- Test:` blankCOMMENT
MEDIUMcrates/cli/src/init.rs302/// Used by `fallow init` (where this is the canonical scaffold) and byCOMMENT
MEDIUMcrates/cli/src/init.rs313 // recommend can never drift on it. init layers its human-oriented scaffoldCOMMENT
MEDIUMcrates/cli/src/init.rs533/// scaffold. The values are globs with no `"`/`\` characters, so a simple quoteCOMMENT
MEDIUMcrates/cli/src/init.rs534/// wrap is sufficient (matching the JSON scaffold's rendering of the same data).COMMENT
MEDIUMcrates/cli/src/init.rs548/// so the TOML scaffold can never drift from the JSON scaffold or fromCOMMENT
MEDIUMcrates/cli/src/init.rs1616 // back to "npm", which must NOT leak into the scaffold.COMMENT
MEDIUMcrates/cli/src/init.rs2384 /// The generated JSON scaffold (also the `fallow fix` missing-config seed viaCOMMENT
MEDIUMcrates/cli/src/init.rs2417 /// The generated TOML scaffold must LOAD through the real config loader withCOMMENT
MEDIUMcrates/cli/src/init.rs2420 /// That sibling test pins the exact key the scaffold writes (`patterns`);COMMENT
MEDIUMcrates/cli/src/agent_install/mod.rs85 /// `AGENTS.md` scaffold or task-map block, plus the `CLAUDE.md` import for Claude Code.COMMENT
MEDIUMcrates/api/src/decision_surface.rs13//! Per the verdict (`.plans/agentic-review-e0-verdict.md`) the decisionCOMMENT
MEDIUMcrates/api/src/decision_surface.rs32//! ## The trust mechanism (anti-hallucination)COMMENT
MEDIUM⚡crates/extract/src/html.rs81/// interpolation has leaked into a checked-in HTML scaffold.COMMENT
MEDIUM⚡crates/extract/src/html.rs82/// - `###...###` covers ember-cli blueprint scaffold placeholdersCOMMENT
MEDIUM⚡crates/extract/src/html.rs82/// - `###...###` covers ember-cli blueprint scaffold placeholdersCOMMENT
MEDIUM.cargo/config.toml11# orchestration). POSIX hosts default to 8 MiB so the overflow onlyCOMMENT
Hallucination Indicators5 hits · 65 pts
SeverityFileLineSnippetContext
CRITICAL…ests/integration_test/issue_1785_typed_property_hop.rs111 // `TypeB { a: TypeA }`). A consumer access `this.opts.b.a.leaf.deepM()`COMMENT
CRITICALcrates/extract/src/visitor/tests.rs4312 // repeated self-hops (`this.opts.self.self.leaf.deep()`) must terminateCOMMENT
CRITICALcrates/extract/src/visitor/tests.rs4323 this.opts.self.self.leaf.deep();CODE
CRITICALcrates/extract/src/visitor/tests.rs4346 // (`this.opts.b.a.b.a.leaf.deep()`) must terminate and credit theCOMMENT
CRITICALcrates/extract/src/visitor/tests.rs4356 this.opts.b.a.b.a.leaf.deep();CODE
AI Slop Vocabulary16 hits · 52 pts
SeverityFileLineSnippetContext
MEDIUMcrates/core/src/plugins/supabase.rs54 /// `supabase/functions/` directory are the robust activation signals.COMMENT
MEDIUMcrates/core/src/plugins/registry/mod.rs1482 // and emitting only when an owner is NOT built-in is robust even if aCOMMENT
MEDIUMcrates/cli/tests/common/mod.rs1#![allow(dead_code, reason = "shared harness included by multiple test crates")]COMMENT
MEDIUMcrates/cli/src/ci.rs2198/// CI scripts so the binary is no less robust than the bash glue around itCOMMENT
MEDIUMcrates/engine/tests/integration/dupes_profile.rs134#[ignore = "profiling harness, run manually with -- --ignored"]COMMENT
MEDIUMaction/tests/run.sh2916# Shared mock harness: fallow renders the typed envelope; gh fails on theCOMMENT
MEDIUMbenchmarks/cli-instructions.sh5# The CodSpeed exec harness runs the release binary under CPU simulation, soCOMMENT
MEDIUMbenchmarks/cli-instructions.sh17# exit 0, because the exec harness rejects a non-zero exit.COMMENT
MEDIUMbenchmarks/cli-instructions.sh127# harness rejects a non-zero exit. The bench config keeps every default andCOMMENT
MEDIUM.github/workflows/ci.yml588 # harness reads committed producer maps, so it installs nothing andCOMMENT
MEDIUM.github/workflows/ci.yml724 # The harness drives the MCP server as a separate binary and fails whenCOMMENT
MEDIUM⚡.github/workflows/ci.yml808 # The drift harness runs in its own Windows job, in parallel with the jobCOMMENT
MEDIUM⚡.github/workflows/ci.yml810 # runs the harness on Windows.COMMENT
MEDIUM⚡.github/workflows/ci.yml814 # Release Validation runs the drift harness on Linux only, so this job isCOMMENT
MEDIUM.github/workflows/ci.yml833 # The drift harness builds git fixtures, spawns the CLI and the MCPCOMMENT
MEDIUM.github/workflows/ci.yml834 # server, and compares root-relative paths. A harness change must passCOMMENT
Hyper-Verbose Identifiers35 hits · 36 pts
SeverityFileLineSnippetContext
LOWcrates/cli/tests/integration/audit_test_reach_tests.rs231 "export function anExportWithAVeryLongNameForTheWidthCheck(): number {\n return 1;\n}\n",CODE
LOWcrates/cli/tests/integration/audit_test_reach_tests.rs240 "export function anExportWithAVeryLongNameForTheWidthCheck(): number {\n return 2;\n}\n",CODE
LOWcrates/napi/types/index.d.ts757export function detectCircularDependencies(options?: DeadCodeOptions): Promise<DeadCodeReport>;CODE
LOWtests/benchmark-corpus/results/dupes-mild.json11 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-mild.json19 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-strict.json11 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-strict.json19 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-semantic.json33 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-semantic.json41 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-defaults.json11 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-defaults.json19 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-weak.json11 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOWtests/benchmark-corpus/results/dupes-weak.json19 "fragment": "import { EventEmitter } from 'events';\n\ninterface DataRecord {\n id: string;\n timestamp: numCODE
LOW…s/benchmark-corpus/src/type1-exact/data-processor-b.ts22export class DataProcessor extends EventEmitter {CODE
LOW…s/benchmark-corpus/src/type1-exact/data-processor-a.ts22export class DataProcessor extends EventEmitter {CODE
LOW.claude/hooks/pre-bash-guard.py155def uses_unbounded_workspace_cargo(command: str, commands: list[list[str]]) -> bool:CODE
LOWscripts/signing_migration_test.py18 def test_preserves_exact_secret_bytes(self):CODE
LOW⚡scripts/signing_migration_test.py41 def test_context_rejects_untrusted_runs(self):CODE
LOW⚡scripts/signing_migration_test.py48 def test_unreviewed_library_is_not_loaded(self):CODE
LOW⚡scripts/signing_migration_test.py55 def test_signature_proof_rejects_wrong_key(self):CODE
LOWscripts/check_telemetry_doc_sync.py79def parse_canonical_allowlist(text: str) -> list[str]:CODE
LOWscripts/check-benchmark-harness.py142def fast_targets_from_generator() -> list[BenchTarget]:CODE
LOWscripts/check-benchmark-harness.py192def assert_codspeed_action_modes(text: str, type_aware_text: str) -> list[str]:CODE
LOWscripts/check-benchmark-harness.py226def validate_type_aware_benchmark(text: str) -> list[str]:CODE
LOWscripts/check-benchmark-harness.py300def validate_required_targets(targets: list[BenchTarget]) -> list[str]:CODE
LOWscripts/check-benchmark-harness.py349def validate_thread_determinism(text: str) -> list[str]:CODE
LOWscripts/public-config-corpus.py510def strip_toml_inline_comment(line: str) -> str:CODE
LOWscripts/public-config-corpus.py530def parse_toml_value_fallback(value: str) -> Any:CODE
LOWscripts/public-config-corpus.py624def strip_jsonc_trailing_commas(content: str) -> str:CODE
LOWnpm/fallow/scripts/verify-binary.js316function currentPlatformPackageName() {CODE
LOWnpm/fallow/scripts/verify-binary.js357function resolvePlatformPackageForVerify(opts) {CODE
LOWnpm/fallow/scripts/run-binary.js20function resolvePlatformPackageName() {CODE
LOWnpm/fallow/scripts/run-binary.js109function writeVerifiedLineIfVersionQuery(verifyResult, version) {CODE
LOWnpm/fallow/scripts/run-binary.js137function resolveTypeAwareCompanion(CODE
LOWnpm/fallow/scripts/verify-binary.test.js32function makeMismatchedDigestProvider() {CODE
Synthetic Comment Markers3 hits · 22 pts
SeverityFileLineSnippetContext
HIGHcrates/mcp/src/server/mod.rs340 /// Audit changed files for dead code, complexity, duplication, styling, and diff risk. Purpose-built for reviewing COMMENT
HIGHcrates/cli/src/cli_args.rs1804 /// Purpose-built for reviewing AI-generated code and PR quality gates.COMMENT
HIGHcrates/cli/src/report/request_outcome_text.rs7//! whether the report is scoped as requested, so the surfaces that state aCOMMENT
Self-Referential Comments5 hits · 15 pts
SeverityFileLineSnippetContext
MEDIUMcrates/core/data/config_value_credits.toml10# This file is the single source of truth for those rules: it is embedded intoCOMMENT
MEDIUMcrates/core/data/tooling.toml9# This file is the single source of truth: it is embedded into the binary viaCOMMENT
MEDIUMcrates/core/data/cli_flag_credits.toml9# This file is the single source of truth for those rules: it is embedded intoCOMMENT
MEDIUMcrates/security/data/security_matchers.toml11# This file is the single source of truth: embedded via include_str! and parsedCOMMENT
MEDIUMaction/tests/run.sh3161# Create a pre-computed changed files list (what analyze.sh produces)COMMENT
Deep Nesting13 hits · 13 pts
SeverityFileLineSnippetContext
LOWtests/benchmark-corpus/evaluate-results.py128CODE
LOWtests/conformance/compare.py113CODE
LOWscripts/scan-hidden-unicode.py102CODE
LOWscripts/scan-hidden-unicode.py172CODE
LOWscripts/scan-hidden-unicode.py212CODE
LOWscripts/scan-hidden-unicode.py251CODE
LOWscripts/public-config-corpus.py443CODE
LOWscripts/public-config-corpus.py487CODE
LOWscripts/public-config-corpus.py510CODE
LOWscripts/public-config-corpus.py543CODE
LOWscripts/public-config-corpus.py567CODE
LOWscripts/public-config-corpus.py624CODE
LOWscripts/public-config-corpus.py659CODE
Example Usage Blocks8 hits · 13 pts
SeverityFileLineSnippetContext
LOW⚡tests/ecosystem/run.sh9# Usage:COMMENT
LOWtests/benchmark-corpus/evaluate.sh10# Usage:COMMENT
LOWtests/conformance/verify-fixtures.sh7# Usage:COMMENT
LOWtests/conformance/run.sh6# Usage:COMMENT
LOWtests/conformance/run-all.sh9# Usage:COMMENT
LOWbenchmarks/compare-audit-runtime.sh9# Usage:COMMENT
LOWbenchmarks/cli-instructions.sh21# Usage:COMMENT
LOWscripts/pgo-train.sh6# Usage:COMMENT
Fake / Example Data12 hits · 12 pts
SeverityFileLineSnippetContext
LOWcrates/core/src/analyze/security/hardcoded_secret.rs428 || lower.contains("placeholder")CODE
LOWcrates/cli/tests/integration/dupes_tests.rs1968 .env("GIT_AUTHOR_EMAIL", "test@test.com")CODE
LOWcrates/cli/tests/integration/dupes_tests.rs1970 .env("GIT_COMMITTER_EMAIL", "test@test.com")CODE
LOWcrates/cli/tests/common/mod.rs302const GIT_TEST_EMAIL: &str = "test@test.com";CODE
LOWcrates/cli/src/audit_tests.rs121 .env("GIT_AUTHOR_EMAIL", "test@test.com")CODE
LOWcrates/cli/src/audit_tests.rs123 .env("GIT_COMMITTER_EMAIL", "test@test.com")CODE
LOWcrates/cli/src/lib.rs1882 for word in ["stub", "placeholder"] {CODE
LOWcrates/api/src/audit_run/tests.rs21 .env("GIT_AUTHOR_EMAIL", "test@test.com")CODE
LOWcrates/api/src/audit_run/tests.rs23 .env("GIT_COMMITTER_EMAIL", "test@test.com")CODE
LOWcrates/extract/src/sfc_template/angular.rs411 "empty" | "default" | "placeholder" | "loading" | "error" => {CODE
LOWcrates/extract/src/template_complexity/mod.rs170 "default" | "placeholder" | "loading" | "error" | "empty" => Ok(Some(after_keyword)),CODE
LOWcrates/engine/src/codeowners.rs925 assert_eq!(co.owner_of(Path::new("index.js")), Some("user@example.com"));CODE
Excessive Try-Catch Wrapping6 hits · 11 pts
SeverityFileLineSnippetContext
MEDIUMtests/benchmark-corpus/evaluate-results.py258 print(f"Error: accuracy floor not found: {path}", file=sys.stderr)CODE
MEDIUMtests/conformance/aggregate.py41 print(f"Error: adjudication register not found: {path}", file=sys.stderr)CODE
MEDIUMtests/conformance/aggregate.py80 print(f"Error: duplicate adjudication for {key}", file=sys.stderr)CODE
MEDIUMtests/conformance/aggregate.py112 print("Error: --adjudications needs a path", file=sys.stderr)CODE
MEDIUMtests/conformance/aggregate.py132 print("Error: no report files found", file=sys.stderr)CODE
LOWscripts/signing_migration.py161 except Exception:CODE
Empty Error Handlers1 hit · 5 pts
SeverityFileLineSnippetContext
HIGHtests/conformance/compare.py41except ValueError:CODE
Cross-Language Confusion2 hits · 5 pts
SeverityFileLineSnippetContext
HIGH.claude/hooks/pre-bash-guard.py7(`cargo fmt && git commit`, `A=1 git commit`, `cat x | fallow`) still are.STRING
HIGH.claude/hooks/pre-bash-guard.py105 shlex is quote-aware, so `echo "a && fallow b"` yields a single data tokenSTRING
Unused Imports4 hits · 4 pts
SeverityFileLineSnippetContext
LOWscripts/check_telemetry_doc_sync.py39CODE
LOWscripts/check-benchmark-harness.py10CODE
LOWscripts/scan-hidden-unicode.py26CODE
LOWscripts/public-config-corpus.py4CODE
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWtests/benchmark-corpus/evaluate-results.py217 # Check if this is a cross-category detection (potential FP)COMMENT
LOWbenchmarks/cli-instructions.sh87# Set BENCH_ARGS to the argument list for one benchmark.COMMENT