dev tools, env vars, task runner
This report summarizes scanner evidence for jdx/mise, a Rust project with 35,579 GitHub stars. SynthScan examined 805,062 lines of code across 3648 source files, recording 1217 pattern matches distributed across 18 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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 1196 finding(s).
Are imports declared and package/API names verified? 8 finding(s).
Are wrappers, guards, and repeated structures necessary? 46 finding(s).
Which changes need focused human review? 1217 finding(s).
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.
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.
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.
The scanner identified 1217 distinct pattern matches across 18 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | deny.toml | 1 | # This template contains all of the possible sections and their default values | COMMENT |
| LOW | deny.toml | 21 | # `target_family = "unix"` configuration, that only having windows targets in | COMMENT |
| LOW | deny.toml | 41 | #exclude = [] | COMMENT |
| LOW | deny.toml | 81 | { id = "RUSTSEC-2026-0391", reason = "zstd-safe stale stream data on a reused context advisory; zstd-safe 7.3.0 only r | COMMENT |
| LOW | deny.toml | 121 | # [possible values: any between 0.0 and 1.0]. | COMMENT |
| LOW | deny.toml | 141 | # is only published to private registries, and ignore is true, the crate will | COMMENT |
| LOW | deny.toml | 161 | # The default lint level for `default` features for crates that are members of | COMMENT |
| LOW | deny.toml | 181 | ] | COMMENT |
| LOW | deny.toml | 201 | #] | COMMENT |
| LOW | deny.toml | 221 | # More documentation about the 'sources' section can be found here: | COMMENT |
| LOW | tak.toml | 1 | # Instruction-counted benchmarks, measured by tak (https://github.com/jdx/tak). | COMMENT |
| LOW | cliff.toml | 1 | # git-cliff ~ default configuration file | COMMENT |
| LOW | mise.toml | 41 | COMMENT | |
| LOW | .config/nextest.toml | 21 | COMMENT | |
| LOW | .config/nextest.toml | 41 | [[profile.ci.overrides]] | COMMENT |
| LOW | .config/nextest.toml | 61 | [[profile.ci.overrides]] | COMMENT |
| LOW | .cursor/install.sh | 101 | # Track latest stable (not the Cargo.toml MSRV) so clippy/rustfmt match what | COMMENT |
| LOW | .cursor/install.sh | 141 | # the branch. Tokens stay set so GitHub API calls during install are | COMMENT |
| LOW | crates/mise-dotenv/src/render.rs | 41 | /// allocation. Other values are double-quoted, with control characters and syntax-significant | COMMENT |
| LOW | crates/mise-dotenv/src/lib.rs | 81 | /// Names are case-insensitive on Windows and case-sensitive on other platforms, matching the | COMMENT |
| LOW | crates/mise-dotenv/src/lib.rs | 141 | /// This function may return an error if the environment variable's name contains | COMMENT |
| LOW | crates/mise-dotenv/src/parse.rs | 321 | return; | COMMENT |
| LOW | crates/mise-settings/src/paranoid.rs | 1 | //! The `paranoid` setting: a boolean, or the list of paranoid categories to turn on. | COMMENT |
| LOW | crates/mise-config/src/packages.rs | 1 | use schemars::JsonSchema; | COMMENT |
| LOW | crates/mise-config/src/packages.rs | 21 | pub struct PackageOptionsTomlConfig { | COMMENT |
| LOW | crates/mise-config/src/packages.rs | 41 | #[serde(default)] | COMMENT |
| LOW | crates/mise-config/src/oci.rs | 81 | pub from: Option<String>, | COMMENT |
| LOW | crates/mise-config/src/oci.rs | 101 | /// Numeric GID assigned to tar layer entries. Defaults to user_id when unset | COMMENT |
| LOW | crates/mise-config/src/oci.rs | 121 | } | COMMENT |
| LOW | crates/mise-config/src/systemd.rs | 81 | } | COMMENT |
| LOW | crates/mise-config/src/systemd.rs | 101 | pub binds_to: Vec<String>, | COMMENT |
| LOW | crates/mise-config/src/systemd.rs | 121 | #[serde(default, rename = "type")] | COMMENT |
| LOW | crates/mise-config/src/systemd.rs | 141 | #[serde(default)] | COMMENT |
| LOW | crates/mise-config/src/systemd.rs | 161 | /// write WorkingDirectory in the [Service] section | COMMENT |
| LOW | crates/mise-config/src/systemd.rs | 181 | pub on_unit_active_sec: Option<String>, | COMMENT |
| LOW | crates/mise-config/src/systemd.rs | 201 | #[serde(default = "default_start")] | COMMENT |
| LOW | crates/mise-config/src/remote.rs | 21 | #[schemars(schema_with = "refs::bootstrap_remote_install_mise")] | COMMENT |
| LOW | crates/mise-config/src/remote.rs | 41 | pub host: String, | COMMENT |
| LOW | crates/mise-config/src/remote.rs | 61 | /// OpenSSH options passed with `-o` | COMMENT |
| LOW | crates/mise-config/src/deprecation.rs | 1 | //! Deprecated spellings the parsers in this crate still accept. | COMMENT |
| LOW | crates/mise-config/src/tools.rs | 241 | } | COMMENT |
| LOW | crates/mise-config/src/services_common.rs | 81 | #[serde(default = "default_true")] | COMMENT |
| LOW | crates/mise-config/src/services_common.rs | 101 | #[serde(default)] | COMMENT |
| LOW | crates/mise-config/src/env.rs | 161 | #[serde(default)] | COMMENT |
| LOW | crates/mise-config/src/mise_toml.rs | 41 | #[schemars(bound = "S: Default")] | COMMENT |
| LOW | crates/mise-config/src/mise_toml.rs | 61 | pub env: EnvList, | COMMENT |
| LOW | crates/mise-config/src/mise_toml.rs | 81 | pub monorepo_root: Option<bool>, | COMMENT |
| LOW | crates/mise-config/src/mise_toml.rs | 101 | /// plugins to use | COMMENT |
| LOW | crates/mise-config/src/mise_toml.rs | 121 | pub dotfile_groups: Option<DotfileGroupsTomlConfig>, | COMMENT |
| LOW | crates/mise-config/src/mise_toml.rs | 141 | pub task_templates: TaskTemplateDecls, | COMMENT |
| LOW | crates/mise-config/src/mise_toml.rs | 161 | pub custom: Option<toml::Value>, | COMMENT |
| LOW | crates/mise-config/src/accounts.rs | 81 | } | COMMENT |
| LOW | crates/mise-config/src/accounts.rs | 101 | #[schemars(regex(pattern = r"^/[^:\r\n]*$"))] | COMMENT |
| LOW | crates/mise-config/src/compose.rs | 61 | /// environment file paths relative to project_dir unless absolute | COMMENT |
| LOW | crates/mise-config/src/compose.rs | 81 | pub pull: ComposePullPolicy, | COMMENT |
| LOW | crates/mise-config/src/compose.rs | 101 | #[serde(default)] | COMMENT |
| LOW | crates/mise-config/src/firewall.rs | 181 | /// what to do with matching traffic; limit needs incoming TCP and is not available on firewalld | COMMENT |
| LOW | crates/mise-config/src/firewall.rs | 201 | #[schemars(extend("default" = "auto"))] | COMMENT |
| LOW | crates/mise-config/src/bootstrap.rs | 21 | // `[bootstrap]` as parsed from a single mise.toml. | COMMENT |
| LOW | crates/mise-config/src/bootstrap.rs | 41 | /// System services and portable user services managed by mise bootstrap, keyed by service name | COMMENT |
| 1052 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/mise-system-packages/src/brew/shim.rb | 951 | def generate_completions_from_executable(*commands, base_name: name, shells: [:bash, :zsh, :fish], shell_parameter_for | CODE |
| LOW | crates/mise-system-packages/src/brew/cask_shim.rb | 294 | def generate_completions_from_executable(*, **) nil end | CODE |
| LOW | …tes/mise-system-packages/src/brew/tap_cask_metadata.rb | 240 | def generate_completions_from_executable(*commands, **options) | CODE |
| LOW | scripts/test-install-release-age.py | 40 | def test_default_and_boundary(self): | CODE |
| LOW | scripts/test-install-release-age.py | 56 | def test_pin_bypasses_policy_and_network(self): | CODE |
| LOW | scripts/test-install-release-age.py | 99 | def test_mise_order_not_publication_order(self): | CODE |
| LOW | scripts/test-install-release-age.py | 113 | def test_publication_index_uses_published_time_and_all_pages(self): | CODE |
| LOW | scripts/test-install-release-age.py | 128 | def test_publication_index_requires_publication_time(self): | CODE |
| LOW | scripts/test-install-release-age.py | 163 | def test_release_publication_promotes_installer_after_index(self): | CODE |
| LOW⚡ | scripts/test-install-release-age.py | 205 | def test_release_without_powershell_installer_still_publishes(self): | STRING |
| LOW⚡ | scripts/test-install-release-age.py | 210 | def test_release_with_powershell_installer_promotes_it(self): | STRING |
| LOW⚡ | scripts/test-install-release-age.py | 218 | def test_staged_powershell_installer_requires_both_signatures(self): | STRING |
| LOW⚡ | scripts/test-install-release-age.py | 225 | def test_paginated_retry_discards_partial_response_and_waits_for_reset(self): | STRING |
| LOW | scripts/test-install-release-age.py | 334 | def test_pinned_version_uses_mirror_verified_against_github(self): | STRING |
| LOW | scripts/test-install-release-age.py | 342 | def test_pinned_version_falls_back_to_github(self): | STRING |
| LOW | scripts/test-install-release-age.py | 357 | def test_tampered_mirror_archive_fails(self): | STRING |
| LOW | scripts/test-install-release-age.py | 369 | def test_no_github_checksum_fails_without_mirror_fallback(self): | STRING |
| LOW | scripts/test-install-release-age.py | 383 | def test_builtin_version_without_static_checksum_fails(self): | STRING |
| LOW | scripts/test-install-release-age.py | 388 | def test_checksum_mismatch_fails(self): | STRING |
| LOW | scripts/test-install-release-age.py | 410 | def test_builtin_version_uses_static_checksum_and_falls_back(self): | STRING |
| LOW | scripts/test-install-release-age.py | 422 | def test_tarball_url_override_has_no_fallback(self): | STRING |
| LOW | scripts/release-npm.sh | 108 | function installArchSpecificPackage(version) { | CODE |
| LOW | scripts/test-e2e-runner.py | 108 | def test_retries_only_failures(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 121 | def test_local_default_does_not_retry(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 126 | def test_recovered_tranche_succeeds(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 132 | def test_failure_without_own_summary_row_gets_fallback(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 143 | def test_explicit_tests_run_including_slow(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 149 | def test_release_skip_applies_only_to_discovery(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 157 | def test_task_forwards_matches_in_order_when_jobs_set(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 165 | def test_task_runs_serially_without_jobs(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 174 | def test_task_unmatched_pattern_fails_before_running(self): | CODE |
| LOW⚡ | scripts/test-e2e-runner.py | 184 | def test_invalid_attempt_limit(self): | CODE |
| LOW | xtasks/test-tool-retry.py | 63 | def get_failed_tools_from_summary() -> list[str]: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | crates/mise-util/src/gitlab.rs | 500 | // ── gitlab_tokens.toml ───────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/mise-util/src/gitlab.rs | 506 | // ── glab CLI config.yml ──────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/mise-util/src/forgejo.rs | 348 | // ── forgejo_tokens.toml ──────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/mise-util/src/forgejo.rs | 354 | // ── fj CLI keys.json ────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/mise-util/src/github.rs | 2305 | // ── github_tokens.toml ────────────────────────────────────────────── | COMMENT |
| MEDIUM | crates/mise-util/src/github.rs | 2321 | // ── gh CLI hosts.yml ──────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/otel/mod.rs | 94 | // ── Resource ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | src/otel/mod.rs | 115 | // ── Provider builders ─────────────────────────────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/install_layout/resolver.rs | 1002 | /// A lockfile writes a version as requested (`ref:main`) and an identity records | COMMENT |
| HIGH | src/backend/npm.rs | 3862 | // cutoffs remain at least as strict as requested. | COMMENT |
| HIGH | src/cli/use.rs | 135 | /// Write the version as requested, such as `20` for node@20 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | Cargo.toml | 78 | #harness = false | COMMENT |
| MEDIUM | mise.toml | 67 | # End-to-end task artifact cache phases. The harness generates an isolated | COMMENT |
| MEDIUM | docs/.vitepress/showreel-bed/bed.toml | 25 | # fade between), the join is a plain cut instead, which is seamless, since | COMMENT |
| MEDIUM | docs/.vitepress/theme/showreel/whip.ts | 8 | // evaluate the same move and the cut is seamless. | COMMENT |
| MEDIUM | e2e/helpers/scripts/git_http_backend_server.py | 230 | # harness to place these under the per-test TMPDIR for parallel runs. | COMMENT |
| MEDIUM | src/git.rs | 101 | // it explicit so the test is robust to future default changes. | COMMENT |
| MEDIUM | src/task/task_load_context.rs | 142 | // Use Path APIs for more robust path comparison | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/.vitepress/showreel-bed/bed.py | 682 | CODE | |
| LOW | docs/.vitepress/showreel-capture/export.py | 48 | CODE | |
| LOW | docs/.vitepress/showreel-capture/frames.py | 298 | CODE | |
| LOW | docs/.vitepress/showreel-capture/frames.py | 79 | CODE | |
| LOW | docs/.vitepress/showreel-capture/record.py | 497 | CODE | |
| LOW | docs/.vitepress/showreel-capture/record.py | 624 | CODE | |
| LOW | docs/.vitepress/showreel-capture/record.py | 308 | CODE | |
| LOW | docs/.vitepress/showreel-capture/scan.py | 106 | CODE | |
| LOW | docs/.vitepress/showreel-capture/scan.py | 177 | CODE | |
| LOW | docs/.vitepress/showreel-capture/scan.py | 229 | CODE | |
| LOW | docs/.vitepress/showreel-capture/scan.py | 313 | CODE | |
| LOW | docs/.vitepress/showreel-capture/shape.py | 49 | CODE | |
| LOW | docs/.vitepress/showreel-capture/shape.py | 162 | CODE | |
| LOW | scripts/comment-release-fixes.py | 47 | CODE | |
| LOW | e2e/helpers/scripts/fnox_stub.py | 40 | CODE | |
| LOW | e2e/helpers/scripts/git_http_backend_server.py | 28 | CODE | |
| LOW | xtasks/test-tool-retry.py | 21 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/config/env_directive/mod.rs | 911 | // Step 1: Tera template expansion | COMMENT |
| LOW | src/config/env_directive/mod.rs | 938 | // Step 2: Shell-style $VAR expansion | COMMENT |
| LOW⚡ | src/cli/run.rs | 1076 | // Step 1: Prepare tasks (resolve dependencies, fetch, validate) | COMMENT |
| LOW⚡ | src/cli/run.rs | 1080 | // Step 2: Setup output handler and validate tasks | COMMENT |
| LOW⚡ | src/cli/run.rs | 1084 | // Step 3: Install tools needed by tasks | COMMENT |
| LOW⚡ | src/cli/run.rs | 1090 | // Step 4: Create TaskExecutor after tool installation | COMMENT |
| LOW | src/cli/run.rs | 1114 | // Step 5: Initialize scheduler and run tasks | COMMENT |
| LOW | src/cli/run.rs | 1165 | // Step 6: Display results and handle failures | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/config/env_directive/mod.rs | 911 | // Step 1: Tera template expansion | COMMENT |
| LOW | src/config/env_directive/mod.rs | 938 | // Step 2: Shell-style $VAR expansion | COMMENT |
| LOW⚡ | src/cli/run.rs | 1076 | // Step 1: Prepare tasks (resolve dependencies, fetch, validate) | COMMENT |
| LOW⚡ | src/cli/run.rs | 1080 | // Step 2: Setup output handler and validate tasks | COMMENT |
| LOW⚡ | src/cli/run.rs | 1084 | // Step 3: Install tools needed by tasks | COMMENT |
| LOW⚡ | src/cli/run.rs | 1090 | // Step 4: Create TaskExecutor after tool installation | COMMENT |
| LOW | src/cli/run.rs | 1114 | // Step 5: Initialize scheduler and run tasks | COMMENT |
| LOW | src/cli/run.rs | 1165 | // Step 6: Display results and handle failures | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/.vitepress/showreel-capture/fixtures.py | 41 | autoload -Uz compinit && compinit | CODE |
| HIGH | docs/.vitepress/showreel-capture/fixtures.py | 57 | run = "mkdir -p dist && cp src/server.js dist/server.js" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/render-mise-run.sh | 7 | # Create the mise.run directory in releases | COMMENT |
| MEDIUM | e2e/helpers/scripts/git_http_backend_server.py | 116 | # Create a regular (non-bare) repository | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | scripts/comment-release-fixes.py | 287 | except Exception as err: # noqa: BLE001 - best effort per PR | CODE |
| LOW⚡ | scripts/comment-release-fixes.py | 293 | except Exception as err: # noqa: BLE001 | CODE |
| LOW⚡ | scripts/comment-release-fixes.py | 298 | except Exception as err: # noqa: BLE001 | CODE |
| LOW | e2e/helpers/scripts/git_http_backend_server.py | 111 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | crates/mise-lsp/src/server.rs | 658 | "placeholder": found.symbol.name, | CODE |
| LOW | crates/mise-lsp/src/server.rs | 1289 | assert_eq!(replies[1]["result"]["placeholder"], "build"); | CODE |
| LOW | crates/mise-sigstore/src/tests/slsa.rs | 270 | "user@example.com", | CODE |
| LOW | docs/dev-tools/mise-oci.md | 187 | AWS_ACCESS_KEY_ID = "placeholder" | CODE |
| LOW | src/backend/spm.rs | 1876 | std::fs::create_dir(bin_path.join("placeholder")).unwrap(); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/.vitepress/showreel-capture/record.py | 268 | except ProcessLookupError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/workflows/registry-impl.yml | 52 | # Check if relevant files changed | COMMENT |
| LOW | src/plugins/core/assets/rubygems_plugin.rb | 3 | # Set PKG_CONFIG_PATH to include Ruby's bundled pkg-config files | COMMENT |
| LOW | src/cli/generate/tool_stub.rs | 510 | # Check if mise is on PATH first | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | docs/mise-cookbook/presets.md | 5 | # Project scaffolding tasks | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …tes/mise-interactive-config/src/editor/actions/edit.rs | 184 | // TODO: implement moving to and editing the new field | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | cloudflare/workers/mise-run.js | 5 | async function handleRequest(request) { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/.vitepress/showreel-bed/bed.py | 72 | CODE |