AI Slop Code Risk Monitor

maplibre/martin

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

Blazing fast and lightweight PostGIS, MBtiles and PMtiles tile server, tile generation, and mbtiles tooling.

2.5 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for maplibre/martin, a Rust project with 4,038 GitHub stars. SynthScan examined 224,868 lines of code across 918 source files, recording 506 pattern matches distributed across 7 syntactic categories. The legacy adjusted pattern signal is 2.5 (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.5
Adjusted Signal
2.5
Raw Pattern Score
100%
Time Factor
2026-11-01
Last Push
4.0K
Stars
Rust
Language
224.9K
Lines of Code
918
Files
506
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 11.1/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 3.9/100 · LOW

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

PR Review Velocity Impact 11.2/100 · LOW

Which changes need focused human review? 506 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 0HIGH 0MEDIUM 15LOW 491

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 506 distinct pattern matches across 7 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 Block385 hits · 376 pts
SeverityFileLineSnippetContext
LOWdeny.toml41COMMENT
LOWzensical.toml141 ]}COMMENT
LOWzensical.toml161#COMMENT
LOWzensical.toml181favicon = "images/favicon.ico"COMMENT
LOWzensical.toml201features = [COMMENT
LOWzensical.toml221 # https://zensical.org/docs/authoring/code-blocks/#code-annotationsCOMMENT
LOWzensical.toml241 # at the same time when the user chooses their language in one.COMMENT
LOWzensical.toml261 # user to navigate to a next or previous page.COMMENT
LOWzensical.toml281 # In order to provide a better user experience on slow connections whenCOMMENT
LOWzensical.toml301 # When tabs are enabled, top-level sections are rendered in a menu layerCOMMENT
LOWzensical.toml321COMMENT
LOWzensical.toml361media = "(prefers-color-scheme: dark)"COMMENT
LOWzensical.toml381# "docs_dir" or it can be a path to an icon.COMMENT
LOWmartin-core/tests/tile_wkb_test.rs321#[rstest]COMMENT
LOWmartin-core/src/error.rs1//! Transport-independent classification of failures.COMMENT
LOWmartin-core/src/cache_zoom_range.rs1//! Zoom-level bounds for tile caching.COMMENT
LOWmartin-core/src/resources/styles/render_pool.rs41COMMENT
LOWmartin-core/src/resources/styles/render_pool.rs141 /// See [`RenderPool::new`].COMMENT
LOWmartin-core/src/resources/styles/error.rs1#[cfg(all(feature = "rendering", target_os = "linux"))]COMMENT
LOWmartin-core/src/resources/styles/error.rs21 #[cfg(all(feature = "rendering", target_os = "linux"))]COMMENT
LOWmartin-core/src/resources/styles/tile_size.rs1use std::num::NonZeroU32;COMMENT
LOWmartin-core/src/resources/styles/mod.rs1//! Style processing and serving for map tile rendering.COMMENT
LOWmartin-core/src/resources/styles/mod.rs81#[derive(Debug, Clone, Default, Serialize, Deserialize, PartialEq, Eq)]COMMENT
LOWmartin-core/src/resources/sprites/mod.rs1//! Sprite processing and serving for map tile rendering.COMMENT
LOWmartin-core/src/resources/sprites/mod.rs101/// Sprite source metadata.COMMENT
LOWmartin-core/src/resources/fonts/mod.rs1//! Font processing and serving for map tile rendering.COMMENT
LOWmartin-core/src/resources/fonts/mod.rs121/// extension, so [`FontFormat::VARIANTS`] doubles as the list of recognisedCOMMENT
LOWmartin-core/src/resources/fonts/mod.rs141 /// Font family name (e.g., "Arial").COMMENT
LOWmartin-core/src/resources/fonts/mod.rs241COMMENT
LOWmartin-core/src/tiles/error.rs1#[cfg(feature = "cog")]COMMENT
LOWmartin-core/src/tiles/error.rs21 #[cfg(feature = "mbtiles")]COMMENT
LOWmartin-core/src/tiles/error.rs41 #[cfg(feature = "passthrough")]COMMENT
LOWmartin-core/src/tiles/tile.rs1use base64::Engine as _;COMMENT
LOWmartin-core/src/tiles/catalog.rs1//! Catalog for managing tile source metadata and discovery.COMMENT
LOWmartin-core/src/tiles/catalog.rs21///COMMENT
LOWmartin-core/src/tiles/mod.rs1//! Tile management and representation for Martin tile server.COMMENT
LOWmartin-core/src/tiles/any.rs41COMMENT
LOWmartin-core/src/tiles/geojson/source.rs21use crate::tiles::geojson::rect::Rect;COMMENT
LOWmartin-core/src/tiles/hillshade/light.rs1//! The direction the terrain is lit from.COMMENT
LOWmartin-core/src/tiles/hillshade/shade.rs1//! The hillshade bake from Mapzen *normal* tiles to L8 grayscale.COMMENT
LOWmartin-core/src/tiles/hillshade/shade.rs21use crate::tiles::neighbourhood::{CHANNELS, DEFAULT_TILE_SIZE, GRID_SIDE};COMMENT
LOWmartin-core/src/tiles/passthrough/error.rs1//! Error types for the `passthrough` HTTP upstream source.COMMENT
LOWmartin-core/src/tiles/contour/isolines.rs141///COMMENT
LOWmartin-core/src/tiles/cog/stac.rs21 /// and `blue`, or the first three if the asset does not name its bands.COMMENT
LOWmartin-core/src/tiles/cog/errors.rs1//! Error types for `Cloud Optimized GeoTIFF` operations.COMMENT
LOWmartin-core/src/tiles/postgres/connection_string.rs1//! A wrapper around a `PostgreSQL` connection string that redacts its password when displayed.COMMENT
LOWmartin-core/src/tiles/postgres/source.rs381 /// Whether an empty tile implies that all tiles below it are empty.COMMENT
LOWmartin-core/src/tiles/postgres/errors.rs21#[non_exhaustive]COMMENT
LOWmartin-core/src/tiles/postgres/scan.rs41 fn from(err: PostgresError) -> Self {COMMENT
LOWmartin-core/src/tiles/duckdb/errors.rs21 /// The `DuckDB` connection could not be opened.COMMENT
LOWmartin-core/src/tiles/duckdb/errors.rs61 /// The `DuckDB` connection failed a pool recycle health check.COMMENT
LOWmartin-core/src/overlay/error.rs1use maplibre_native::{GeoJsonError, StyleError};COMMENT
LOWmartin-core/src/overlay/model.rs1//! Typed boundary intermediate representation for static-render overlays.COMMENT
LOWmartin-core/src/overlay/model.rs41/// The application layer builds this from the wire format, dropping unknown keys (`title`, `id`, ...).COMMENT
LOWmartin-core/src/overlay/model.rs61 pub line_opacity: Option<f32>,COMMENT
LOWcog-tiles-py/src/py.rs801 /// The coroutine `__anext__` returns, since `pyo3` cannot make `__anext__` itself `async`.COMMENT
LOWcog-tiles-py/src/py.rs861 let source = spawn(cog.open_source()?).await?.map_err(to_py)?;COMMENT
LOWcog-tiles-py/src/py.rs961/// `cog_tiles.<function>` with `keywords` bound, for `__reduce__` to restore keyword-only arguments.COMMENT
LOWcog-tiles-py/src/py.rs1101}COMMENT
LOWdebian/config.yaml21# max_feature_count: 1000COMMENT
325 more matches not shown…
Hyper-Verbose Identifiers104 hits · 137 pts
SeverityFileLineSnippetContext
LOW⚡cog-tiles-py/tests/test_async.py15def test_open_async_opens_the_cog_open_opens():CODE
LOW⚡cog-tiles-py/tests/test_async.py21def test_open_mosaic_async_opens_the_mosaic_open_mosaic_opens():CODE
LOW⚡cog-tiles-py/tests/test_async.py27def test_tile_async_returns_the_tile_tile_returns():CODE
LOW⚡cog-tiles-py/tests/test_async.py32def test_tile_async_returns_none_for_an_empty_tile():CODE
LOW⚡cog-tiles-py/tests/test_async.py37def test_tile_pixels_async_returns_the_pixels_tile_pixels_returns():CODE
LOW⚡cog-tiles-py/tests/test_async.py43def test_read_async_returns_the_raster_read_returns():CODE
LOW⚡cog-tiles-py/tests/test_async.py51def test_read_async_raises_value_error_for_an_unknown_crs():CODE
LOW⚡cog-tiles-py/tests/test_async.py57def test_async_for_yields_the_tiles_for_yields():CODE
LOW⚡cog-tiles-py/tests/test_async.py66def test_tile_async_calls_run_concurrently_on_one_event_loop():CODE
LOW⚡cog-tiles-py/tests/test_async.py75def test_a_cancelled_read_async_raises_cancelled_error():CODE
LOWcog-tiles-py/tests/test_async.py88def test_tile_async_leaves_the_event_loop_free_while_it_fetches(server):CODE
LOWcog-tiles-py/tests/test_async.py104def test_cancelling_read_async_stops_its_fetches(server):CODE
LOWcog-tiles-py/tests/test_tile_index.py24def test_a_tile_is_painted_from_the_files_the_index_lists():CODE
LOWcog-tiles-py/tests/test_tile_index.py29def test_a_tile_index_reports_its_layout_and_the_area_its_files_cover():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py40def test_a_tile_outside_the_zoom_range_is_none():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py46def test_one_band_paints_gray_tiles_with_alpha():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py53def test_read_stitches_the_tiles_of_an_area():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py60def test_tiles_iterates_over_the_tiles_in_the_index_bounds():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py78def test_invalid_tile_indexes_are_rejected(arguments, error, message):CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py83def test_a_missing_tile_index_is_file_not_found(tmp_path):CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py88def test_tile_indexes_re_encode_tiles():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py96def test_tile_indexes_survive_pickling():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py105def test_open_tile_index_async_opens_the_same_index():CODE
LOW⚡cog-tiles-py/tests/test_tile_index.py113def test_files_listed_by_url_are_read_over_http(tmp_path, fixture_server, prefix):CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py35def test_a_jpeg_cog_returns_jpeg_tiles():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py40def test_a_zstd_cog_returns_png_tiles():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py45def test_an_empty_tile_is_none():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py50def test_a_tile_outside_the_bounds_is_none():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py55def test_a_tile_below_the_min_zoom_is_none():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py60def test_tile_pixels_are_the_decoded_tile():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py67def test_webp_tiles_decode_too():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py73def test_read_stitches_the_whole_image():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py84def test_read_crops_to_the_pixels_the_bbox_touches():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py93def test_read_defaults_to_the_highest_zoom():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py98def test_read_without_data_is_none():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py103def test_read_refuses_rasters_over_max_pixels():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py109def test_a_raster_converts_to_an_array():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py116def test_tiles_yields_every_tile_with_data():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py123def test_tiles_defaults_to_every_zoom_of_the_source():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py134def test_tiles_outside_the_source_are_skipped():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py139def test_a_tile_iterator_can_be_dropped_early():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py146def test_a_mosaic_reads_each_tile_from_its_file():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py156def test_a_mosaic_read_stitches_across_files():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py184def test_a_mosaic_needs_a_bbox_to_iterate():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py190def test_cogs_survive_pickling():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py197def test_mosaics_survive_pickling():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py204def test_threads_read_concurrently():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py213def test_importing_on_free_threaded_python_keeps_the_gil_disabled():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py222def test_a_forked_child_reads_with_its_own_runtime():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py234def test_a_missing_file_raises_file_not_found():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py239def test_an_unsupported_file_says_why():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py244def test_a_tile_past_the_zoom_raises_value_error():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py250def test_an_inverted_bbox_raises_value_error():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py256def test_an_unknown_crs_raises_value_error():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py262def test_zero_concurrency_raises_value_error():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py268def test_an_invalid_template_raises_value_error():CODE
LOW⚡cog-tiles-py/tests/test_cog_tiles.py273def test_a_cog_over_http_returns_the_tiles_of_the_local_file(server):CODE
LOWcog-tiles-py/tests/test_cog_tiles.py24def test_open_reports_the_tile_layout():CODE
LOWcog-tiles-py/tests/test_cog_tiles.py167def test_a_mosaic_places_untagged_striped_files_by_their_name(tmp_path):CODE
LOWcog-tiles-py/tests/test_format.py18def test_format_webp_re_encodes_png_tiles_as_webp():CODE
44 more matches not shown…
Decorative Section Separators12 hits · 40 pts
SeverityFileLineSnippetContext
MEDIUM⚡zensical.toml167# ----------------------------------------------------------------------------COMMENT
MEDIUM⚡zensical.toml169# ----------------------------------------------------------------------------COMMENT
MEDIUM⚡zensical.toml368# ----------------------------------------------------------------------------COMMENT
MEDIUM⚡zensical.toml373# ----------------------------------------------------------------------------COMMENT
MEDIUM⚡zensical.toml378# ----------------------------------------------------------------------------COMMENT
MEDIUMzensical.toml1# ============================================================================COMMENT
MEDIUMzensical.toml7# ============================================================================COMMENT
MEDIUMzensical.toml338# ----------------------------------------------------------------------------COMMENT
MEDIUMzensical.toml346# ----------------------------------------------------------------------------COMMENT
MEDIUMzensical.toml392# ----------------------------------------------------------------------------COMMENT
MEDIUMzensical.toml512# ----------------------------------------------------------------------------STRING
MEDIUMzensical.toml514# ----------------------------------------------------------------------------STRING
Slop Phrases2 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUM⚡zensical.toml149# With the "extra_css" option you can add your own CSS styling to customizeCOMMENT
MEDIUM⚡zensical.toml159# With the `extra_javascript` option you can add your own JavaScript to yourCOMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.github/workflows/release.yml152 # Create a personal access tokenCOMMENT
Redundant / Tautological Comments1 hit · 2 pts
SeverityFileLineSnippetContext
LOW.github/workflows/build-binary.yml51 # Set RELEASE_MODE to '1' for release builds (push to main, releases, and manual workflow dispatches),COMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOW⚡cog-tiles-py/tests/test_cog_tiles.py269 with pytest.raises(ValueError, match="placeholder"):CODE