Hundreds of models & providers. One command to find what runs on your hardware.
This report summarizes scanner evidence for AlexsJones/llmfit, a Rust project with 37,782 GitHub stars. SynthScan examined 112,662 lines of code across 615 source files, recording 429 pattern matches distributed across 13 syntactic categories. The legacy adjusted pattern signal is 7.0 (Moderate pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 181 finding(s).
Are imports declared and package/API names verified? 11 finding(s).
Are wrappers, guards, and repeated structures necessary? 297 finding(s).
Which changes need focused human review? 429 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 429 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | llmfit-tui/src/tui_ui.rs | 5351 | // ── Live inference-bench view ───────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/display.rs | 497 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/display.rs | 499 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/display.rs | 1058 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/display.rs | 1060 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/main.rs | 1467 | // ── hardware profiles ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/main.rs | 2567 | // ── --status ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/main.rs | 2601 | // ── --clear ─────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/main.rs | 2611 | // ── fetch ───────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/main.rs | 3078 | // ── bench helpers ────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/main.rs | 3775 | // ── main ─────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 1386 | // ── Restore persisted filters ──────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 2508 | // ── Benchmarks view ────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3393 | // ── Visual mode ────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3462 | // ── Select mode ───────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3603 | // ── Quant popup ───────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3637 | // ── RunMode popup ─────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3672 | // ── Params bucket popup ───────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3707 | // ── License popup ─────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3792 | // ── Hardware simulation ────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3956 | // ── Advanced Config Popup ────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 3987 | // ── Filter Popup ───────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 4983 | // ── Live inference-bench view ───────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 5528 | // ── sort direction regression ──────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 5588 | // ── matched GGUF source attribution (issue #569) ───────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 5588 | // ── matched GGUF source attribution (issue #569) ───────────────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 5675 | // ── available_download_providers MLX gating (issue #294) ───────── | COMMENT |
| MEDIUM | llmfit-tui/src/tui_app.rs | 5675 | // ── available_download_providers MLX gating (issue #294) ───────── | COMMENT |
| MEDIUM⚡ | scripts/scrape_hf_models.py | 2160 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/scrape_hf_models.py | 2162 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/scrape_hf_models.py | 42 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/scrape_hf_models.py | 44 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/scrape_hf_models.py | 1674 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/scrape_hf_models.py | 1676 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/scrape_hf_models.py | 2006 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/scrape_hf_models.py | 2008 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/verify_models.py | 42 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | scripts/verify_models.py | 44 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/verify_models.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/verify_models.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/verify_models.py | 116 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | scripts/verify_models.py | 118 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | llmfit-core/tests/estimator_accuracy.rs | 341 | // ── localmaxxing leaderboard cache ──────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/tests/estimator_accuracy.rs | 439 | // ── community submissions ───────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/tests/estimator_accuracy.rs | 584 | // ── aggregate, report, and gate ─────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 1422 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 1424 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 1818 | // ── Bandwidth-based estimation (preferred) ───────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2042 | // ── Fallback: fixed-constant approach ────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2123 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2125 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2394 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2396 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2461 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2463 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2687 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2689 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2970 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 2972 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | llmfit-core/src/fit.rs | 3102 | // ──────────────────────────────────────────────────────────────────── | COMMENT |
| 162 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | llmfit-tui/src/main.rs | 61 | #[value(alias = "tokens", alias = "toks", alias = "throughput")] | COMMENT |
| LOW | llmfit-tui/src/main.rs | 121 | selection: StorageSelectionArg, | COMMENT |
| LOW | llmfit-tui/src/main.rs | 221 | /// Use this percentage of detected GPU VRAM (e.g. "90", "87.5"). | COMMENT |
| LOW | llmfit-tui/src/main.rs | 241 | /// Score models against a hardware profile instead of this machine: | COMMENT |
| LOW | llmfit-tui/src/main.rs | 821 | /// Specific GGUF quantization to download (e.g. "Q4_K_M", "Q8_0"). | COMMENT |
| LOW | llmfit-tui/src/main.rs | 861 | /// Search query (model name, architecture, etc.) | COMMENT |
| LOW | llmfit-tui/src/main.rs | 1041 | /// Contribute results back to the project as a GitHub pull request | COMMENT |
| LOW | llmfit-tui/src/main.rs | 1101 | profile: None, | COMMENT |
| LOW | llmfit-tui/src/tui_app.rs | 361 | /// Failed — error message is displayed. | COMMENT |
| LOW | scripts/record_demo.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | scripts/scrape_hf_models.py | 41 | COMMENT | |
| LOW | scripts/scrape_hf_models.py | 2001 | print(f" Cache: {cache_hits} hits, {len(to_check)} API checks, " | COMMENT |
| LOW | llmfit-core/tests/estimator_accuracy.rs | 1 | //! Replay the embedded benchmark data through the fit estimator and gate the | COMMENT |
| LOW | llmfit-core/tests/estimator_accuracy.rs | 21 | //! replay is deliberately loose; a class-level median catches a systematic | COMMENT |
| LOW | llmfit-core/tests/estimator_accuracy.rs | 61 | /// [`MAX_MEDIAN_ERROR`]. | COMMENT |
| LOW | llmfit-core/src/concurrency.rs | 1 | //! Concurrent-session capacity estimation (issue #140). | COMMENT |
| LOW | llmfit-core/src/concurrency.rs | 41 | /// window, or the smaller `--max-context` cap). | COMMENT |
| LOW | llmfit-core/src/analysis.rs | 181 | /// speculative-decoding draft head, a size/name divergence, or an | COMMENT |
| LOW | llmfit-core/src/analysis.rs | 321 | .collect(); | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1 | use crate::hardware::{GpuBackend, QuantKernelSupport, SystemSpecs}; | COMMENT |
| LOW | llmfit-core/src/fit.rs | 21 | #[derive(Debug, Clone, serde::Serialize, serde::Deserialize)] | COMMENT |
| LOW | llmfit-core/src/fit.rs | 41 | /// once per process, otherwise a conservative 50 GB/s. | COMMENT |
| LOW | llmfit-core/src/fit.rs | 221 | /// Multi-dimensional score components (0-100 each). | COMMENT |
| LOW | llmfit-core/src/fit.rs | 241 | /// `"backend_constant"` — GPU not in the bandwidth table, per-backend | COMMENT |
| LOW | llmfit-core/src/fit.rs | 261 | } | COMMENT |
| LOW | llmfit-core/src/fit.rs | 361 | /// after weights and overhead, capped at the model's native window. | COMMENT |
| LOW | llmfit-core/src/fit.rs | 501 | prefill_tps: None, | COMMENT |
| LOW | llmfit-core/src/fit.rs | 921 | /// `estimate_basis`, ignoring the stored field. | COMMENT |
| LOW | llmfit-core/src/fit.rs | 981 | } | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1421 | COMMENT | |
| LOW | llmfit-core/src/fit.rs | 1441 | /// original per-backend constant `K`. | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1461 | /// Calibration for the Tier-2 (metadata-poor) MoE decode estimate. | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1481 | /// the model it names. | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1501 | // Calibration reference: ~50 tok/s decode for the 120B on 256 GB/s-class | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1541 | /// the attention, router, shared-expert and head parameters into the bandwidth | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1601 | if std::env::var("LLMFIT_DEBUG").is_ok() { | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1641 | /// Returns `(None, None)` unless the GPU's fp16 throughput is configured, and | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1701 | { | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1821 | // principles instead of using a fixed constant. | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1861 | // | COMMENT |
| LOW | llmfit-core/src/fit.rs | 1901 | COMMENT | |
| LOW | llmfit-core/src/fit.rs | 1921 | // - OLMoE Q2_K: est 281, meas 293 (0.96x) | COMMENT |
| LOW | llmfit-core/src/fit.rs | 4861 | // | COMMENT |
| LOW | llmfit-core/src/fit.rs | 5041 | COMMENT | |
| LOW | llmfit-core/src/fit.rs | 5121 | active_experts: u32, | COMMENT |
| LOW | llmfit-core/src/fit.rs | 5421 | "default tier should be the low outlier this entry fixes \ | COMMENT |
| LOW | llmfit-core/src/fit.rs | 5481 | /// takes (Tier 1, architecture-aware), against 256 GB/s-class unified | COMMENT |
| LOW | llmfit-core/src/models.rs | 661 | #[serde(default)] | COMMENT |
| LOW | llmfit-core/src/models.rs | 681 | #[serde(default)] | COMMENT |
| LOW | llmfit-core/src/models.rs | 701 | #[serde(default)] | COMMENT |
| LOW | llmfit-core/src/models.rs | 781 | /// fp16 / bf16, the inference default for most runtimes. | COMMENT |
| LOW | llmfit-core/src/models.rs | 901 | /// The model stays in [`ModelDatabase`] either way — sanitization only | COMMENT |
| LOW | llmfit-core/src/models.rs | 1161 | /// still never falls back to a default: callers that use the size to | COMMENT |
| LOW | llmfit-core/src/models.rs | 1241 | if v > 0.0 && best.is_none_or(|b| v > b) { | COMMENT |
| LOW | llmfit-core/src/models.rs | 1301 | COMMENT | |
| LOW | llmfit-core/src/models.rs | 1361 | /// Approximate on-disk size (GB) for a given quantization level. | COMMENT |
| LOW | llmfit-core/src/models.rs | 1441 | let kv_cache = self.kv_cache_gb(ctx, kv); | COMMENT |
| LOW | llmfit-core/src/models.rs | 1741 | } | COMMENT |
| LOW | llmfit-core/src/models.rs | 2081 | /// Matched on architecture plus expert geometry rather than repo name, so the | COMMENT |
| LOW | llmfit-core/src/update.rs | 1 | //! Online model database updates via the HuggingFace Hub API. | COMMENT |
| 38 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | llmfit-python/tests/test_llmfit.py | 15 | def test_find_llmfit_bin_raises_when_missing(monkeypatch: pytest.MonkeyPatch) -> None: | CODE |
| LOW | scripts/validate_generation_scoring.py | 15 | def qwen_minor_generation_from_name(name_lower: str) -> float | None: | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 35 | def test_preserves_architecture_when_config_fetch_misses(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 61 | def test_does_not_invent_heads_the_catalog_never_had(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 137 | def test_parses_hf_ratelimit_header(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 174 | def test_retry_after_wins_over_ratelimit_reset(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 200 | def test_buckets_pause_independently(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 238 | def test_bucket_named_by_the_response_drives_the_retry_wait(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 251 | def test_wait_is_capped_against_bogus_reset_values(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 262 | def test_in_flight_threads_report_one_pause_not_eight(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 302 | def test_exhausted_gguf_probe_is_not_cached_as_a_miss(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 315 | def test_rate_limited_base_lookup_is_not_cached_as_no_size(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 354 | def test_failed_lookup_is_unknown_not_a_miss(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 380 | def test_missing_gguf_repo_is_still_cached_as_a_miss(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 389 | def test_yarn_context_is_not_scaled_twice(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 406 | def test_rope_factor_still_scales_a_pre_scaling_window(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 418 | def test_detects_moe_under_family_specific_key_names(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 430 | def test_arch_metadata_drops_unset_sentinels(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 453 | def test_param_estimate_sees_the_same_experts_as_detection(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 464 | def test_revalidation_ranks_uncorrectable_packed_counts_first(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 482 | def test_revalidation_flags_suspect_context_but_not_a_missing_date(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 491 | def test_revalidation_selection_respects_budget_and_skips_fresh_entries(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 526 | def test_packed_count_is_rescued_by_the_architecture_estimate(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 544 | def test_hybrid_ssm_models_are_never_sized_by_the_estimator(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 583 | def test_estimate_is_capped_by_the_size_the_name_declares(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 594 | def test_name_declared_params(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 613 | def test_revalidation_keeps_the_retained_entry_on_a_sharp_parameter_drop(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 622 | def test_revalidation_cooldown_stops_failures_holding_the_budget(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 645 | def test_unquantized_in_the_name_is_not_prequantized(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 691 | def test_gguf_probe_budget_goes_to_sourceless_popular_models_first(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 713 | def test_deferred_model_falls_back_to_its_expired_cache_entry(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 725 | def test_gguf_cache_is_saved_during_the_run_not_only_at_the_end(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 737 | def test_negative_gguf_probe_budget_probes_nothing(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 744 | def test_list_valued_expert_counts_do_not_crash_or_leak(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 761 | def test_a_failing_estimate_keeps_the_reported_count(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 773 | def test_malformed_text_config_does_not_abort(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 781 | def test_one_broken_repo_is_skipped_not_fatal(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 835 | def test_discovery_listing_expands_created_at(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 842 | def test_backfill_fills_dates_most_downloaded_first_and_never_guesses(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 869 | def test_backfill_respects_the_per_run_limit(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 883 | def test_backfill_uses_the_cache_before_asking_hf(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 909 | def test_stale_negative_is_asked_again(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 925 | def test_a_repo_without_created_at_stays_null_and_is_remembered(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 937 | def test_transient_errors_are_not_cached_as_no_date(): | CODE |
| LOW | scripts/test_preserve_catalog_metadata.py | 958 | def test_malformed_success_responses_do_not_abort_the_run_or_get_cached(): | CODE |
| LOW | scripts/scrape_docker_models.py | 194 | def ollama_tag_to_docker_repo(ollama_tag: str) -> str: | CODE |
| LOW | scripts/scrape_hf_models.py | 131 | def _schedule_rate_limit_pause(bucket: str, seconds: float, reason: str) -> None: | CODE |
| LOW | scripts/scrape_hf_models.py | 153 | def _wait_for_rate_limit_window(bucket: str) -> None: | CODE |
| LOW | scripts/scrape_hf_models.py | 774 | def preserve_existing_metadata(old_model: dict, fresh_model: dict) -> list[str]: | CODE |
| LOW | scripts/scrape_hf_models.py | 976 | def estimate_params_from_arch(config: dict | None) -> int | None: | CODE |
| LOW | scripts/scrape_hf_models.py | 1517 | def correct_packed_param_count(repo_id: str, total_params: int, | CODE |
| LOW | scripts/scrape_hf_models.py | 1583 | def revalidation_lost_parameters(before: dict, after: dict) -> bool: | CODE |
| LOW | scripts/scrape_hf_models.py | 1604 | def select_retained_for_revalidation( | CODE |
| LOW | scripts/scrape_hf_models.py | 1717 | def _model_gguf_repo_candidates(repo_id: str) -> list[tuple[str, str]]: | CODE |
| LOW | scripts/scrape_hf_models.py | 2237 | def _estimate_params_from_config(config: dict) -> int | None: | CODE |
| LOW | scripts/scrape_hf_models.py | 2510 | def _build_discovered_model_safely(listing: dict) -> dict | None: | CODE |
| LOW | scripts/scrape_hf_models.py | 2615 | def drop_secret_bearing_models(models: list[dict]) -> tuple[list[dict], list[str]]: | CODE |
| LOW⚡ | scripts/test_api.py | 74 | def test_models_envelope_and_limit(base_url: str) -> None: | CODE |
| LOW⚡ | scripts/test_api.py | 83 | def test_top_endpoint_excludes_too_tight(base_url: str) -> None: | CODE |
| LOW⚡ | scripts/test_api.py | 91 | def test_filters_runtime_and_use_case(base_url: str) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | scripts/scrape_hf_models.py | 3971 | except (json.JSONDecodeError, KeyError): | CODE |
| HIGH | scripts/test_api.py | 183 | except Exception: | CODE |
| HIGH | scripts/test_api.py | 271 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/scrape_docker_models.py | 168 | print(f"Error fetching {url}: {e}", file=sys.stderr) | CODE |
| MEDIUM | scripts/scrape_hf_models.py | 2030 | def _load_release_date_cache() -> dict: | CODE |
| LOW | scripts/scrape_hf_models.py | 675 | except Exception as e: | CODE |
| LOW | scripts/scrape_hf_models.py | 1124 | except Exception: | CODE |
| LOW | scripts/scrape_hf_models.py | 1840 | except Exception: | CODE |
| LOW | scripts/scrape_hf_models.py | 2421 | except Exception as e: | CODE |
| LOW | scripts/scrape_hf_models.py | 2516 | except Exception as e: # noqa: BLE001 - any one repo may be malformed | CODE |
| LOW | scripts/test_api.py | 183 | except Exception: | CODE |
| LOW | scripts/test_api.py | 263 | except Exception as exc: | CODE |
| LOW | scripts/test_api.py | 271 | except Exception: | CODE |
| LOW⚡ | scripts/verify_models.py | 38 | except Exception: | CODE |
| LOW | scripts/scrape_benchmarks.py | 103 | except Exception as e: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | scripts/validate_generation_scoring.py | 32 | CODE | |
| LOW | scripts/validate_generation_scoring.py | 188 | CODE | |
| LOW | scripts/validate_generation_scoring.py | 223 | CODE | |
| LOW | scripts/validate_generation_scoring.py | 260 | CODE | |
| LOW | scripts/scrape_hf_models.py | 171 | CODE | |
| LOW | scripts/scrape_hf_models.py | 1229 | CODE | |
| LOW | scripts/scrape_hf_models.py | 1259 | CODE | |
| LOW | scripts/scrape_hf_models.py | 1788 | CODE | |
| LOW | scripts/scrape_hf_models.py | 1892 | CODE | |
| LOW | scripts/scrape_hf_models.py | 2348 | CODE | |
| LOW | scripts/scrape_hf_models.py | 2523 | CODE | |
| LOW | scripts/scrape_hf_models.py | 2633 | CODE | |
| LOW | scripts/test_api.py | 235 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | llmfit-python/hatch_build.py | 27 | CODE | |
| LOW | llmfit-python/tests/test_llmfit.py | 3 | CODE | |
| LOW | llmfit-python/src/llmfit/__init__.py | 1 | CODE | |
| LOW | llmfit-python/src/llmfit/__main__.py | 1 | CODE | |
| LOW | scripts/validate_generation_scoring.py | 11 | CODE | |
| LOW | scripts/test_api.py | 13 | CODE | |
| LOW | scripts/validate_community_benchmarks.py | 25 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | install.sh | 171 | # Check if install dir is in PATH | COMMENT |
| LOW | scripts/update_models.sh | 27 | # Check if Python 3 is available | COMMENT |
| LOW | scripts/update_models.sh | 75 | # Check if cargo is available | COMMENT |
| LOW | scripts/scrape_hf_models.py | 941 | # Check if architecture is in known MoE configs | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | scripts/scrape_hf_models.py | 451 | # Embeddings (useful for RAG sizing) | COMMENT |
| MEDIUM⚡ | scripts/scrape_hf_models.py | 2169 | "feature-extraction", # Embedding models (useful for RAG sizing) | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | docs/providers.md | 134 | export LMSTUDIO_API_KEY="your-api-key-here" | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | llmfit-desktop/ui/i18n.js | 252 | node.setAttribute('placeholder', t(node.getAttribute('data-i18n-placeholder'))); | CODE |
| LOW | llmfit-core/src/quality.rs | 889 | r#"{"name": "John Smith", "age": 34, "company": "Acme Corp", "email": "john@acme.com", "phone": "555-012 | CODE |
| LOW | llmfit-core/src/quality.rs | 889 | r#"{"name": "John Smith", "age": 34, "company": "Acme Corp", "email": "john@acme.com", "phone": "555-012 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | llmfit-core/src/fit.rs | 559 | // Step 1: pick the best available execution path | COMMENT |
| LOW⚡ | llmfit-core/src/fit.rs | 560 | // Step 2: score memory fit purely on headroom in that path's memory pool | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | llmfit-core/src/fit.rs | 559 | // Step 1: pick the best available execution path | COMMENT |
| LOW⚡ | llmfit-core/src/fit.rs | 560 | // Step 2: score memory fit purely on headroom in that path's memory pool | COMMENT |