Repository Analysis

Screenly/Anthias

The world's most popular open source digital signage project.

26.8 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of Screenly/Anthias, a Python project with 3,655 GitHub stars. SynthScan v2.0 examined 109,584 lines of code across 429 source files, recording 2342 pattern matches distributed across 17 syntactic categories. The overall adjusted score of 26.8 places this repository in the Moderate AI signal band.

The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).

26.8
Adjusted Score
26.8
Raw Score
100%
Time Factor
2026-08-27
Last Push
3.7K
Stars
Python
Language
109.6K
Lines of Code
429
Files
2.3K
Pattern Hits
2026-08-29
Scan Date
0.03
HC Hit Rate

What These Metrics Mean

Adjusted Score
Primary synthetic code indicator. Raw score normalised per 1,000 lines of code and multiplied by the temporal discount factor. This is the definitive comparative metric — use it to rank repositories by AI authorship density.
Raw Score
The unmodified sum of all severity-weighted, context-multiplied pattern match scores before temporal discounting. Reflects the absolute signal strength independent of when the repository was last active.
Time Factor
The temporal discount multiplier (0–100%) applied to the raw score. Repositories last updated before ChatGPT's launch (Nov 2022) receive a 5% factor. Full signal is only assigned to repositories active in the post-adoption era (Jan 2024+).
Pattern Hits
Total count of individual pattern matches across all files and categories. A high hit count with a low score may indicate a very large codebase with isolated AI snippets; a low count with a high score indicates dense, concentrated AI signatures.
HC Hit Rate
High+Critical pattern hits per file, averaged across the repository. This orthogonal signal catches repositories where a few files are densely packed with high-severity AI tells — a strong indicator even when the normalised score appears moderate due to codebase size.
Lines of Code / Files
Total lines and files analysed. The scanner examines 94 file extensions. These denominators are used to normalise the score, enabling fair comparison between repositories of vastly different sizes.

Score History

Longitudinal tracking requires multiple scan runs. Once this repository is re-scanned after new commits land, this chart will visualise how the synthetic code signal evolves over time — enabling you to detect whether AI authorship is growing, stabilising, or being actively corrected by human engineers.

No multi-scan history yet — run the scanner again to build trend data.

Severity Breakdown

Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.

CRITICAL 1HIGH 11MEDIUM 334LOW 1996

Directory Score Breakdown

This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.

Pattern Findings

The scanner identified 2342 distinct pattern matches across 17 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.

Hyper-Verbose Identifiers1428 hits · 1172 pts
SeverityFileLineSnippetContext
LOWconftest.py272def pytest_collection_modifyitems(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py134def test_get_latest_tag_honours_release_tag_env(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py176def test_get_board_from_url_returns_none_for_non_image(url: str) -> None:CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py185def test_get_asset_list_filters_to_supported_boards(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py211def test_get_asset_list_excludes_non_xz(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py224def test_retrieve_and_patch_json_patches_url(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py303def test_every_supported_board_has_device_tags() -> None:CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py317def test_build_imager_json_emits_one_entry_per_supported_board(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py327def test_build_imager_json_round_trips_through_json(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py160def test_get_board_from_url_extracts_board(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py235def test_retrieve_and_patch_json_converts_sizes_to_int(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py250def test_retrieve_and_patch_json_marks_maintenance_boards(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py264def test_retrieve_and_patch_json_skips_maintenance_for_modern_boards(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py277def test_retrieve_and_patch_json_has_all_required_fields(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py292def test_retrieve_and_patch_json_adds_device_tags(CODE
LOW…raspberry_pi_imager/tests/test_build_pi_imager_json.py341def test_build_imager_json_tags_every_entry_for_its_board(CODE
LOWbin/balena_unpin_devices.py499def latest_supervisor_release(CODE
LOWtests/test_recheck_endpoint.py71def test_enqueues_task_when_no_lock_held() -> None:CODE
LOWtests/test_recheck_endpoint.py86def test_skips_enqueue_when_queue_debounce_held() -> None:CODE
LOWtests/test_recheck_endpoint.py108def test_back_to_back_calls_only_enqueue_once() -> None:CODE
LOWtests/test_recheck_endpoint.py130def test_missing_internal_auth_is_forbidden() -> None:CODE
LOWtests/test_recheck_endpoint.py141def test_internal_auth_works_without_basic_auth() -> None:CODE
LOWtests/test_csrf.py44def test_same_host_http_origin_passes() -> None:CODE
LOWtests/test_csrf.py57def test_same_host_https_origin_on_http_passes() -> None:CODE
LOWtests/test_csrf.py74def test_host_with_port_origin_without_port_passes() -> None:CODE
LOWtests/test_csrf.py93def test_same_host_distinct_non_default_ports_rejected() -> None:CODE
LOWtests/test_csrf.py110def test_default_port_origin_vs_non_default_host_port_rejected() -> None:CODE
LOWtests/test_csrf.py128def test_cross_host_origin_still_rejected() -> None:CODE
LOWtests/test_csrf.py141def test_missing_token_still_rejected() -> None:CODE
LOWtests/test_csrf.py156def test_bad_token_still_rejected() -> None:CODE
LOWtests/test_csrf.py169def test_no_origin_header_still_works() -> None:CODE
LOWtests/test_csrf.py196def test_iis_rewrite_host_proxy_without_trusted_origin_rejected() -> None:CODE
LOWtests/test_csrf.py213def test_iis_rewrite_host_proxy_with_trusted_origin_passes(CODE
LOWtests/test_csrf.py233def test_trusted_origin_does_not_open_other_hosts(CODE
LOWtests/test_undervoltage.py72 def test_returns_none_without_the_driver(CODE
LOWtests/test_undervoltage.py82 def test_returns_none_when_hwmon_is_absent(CODE
LOWtests/test_undervoltage.py89 def test_ignores_rpi_volt_without_the_attribute(CODE
LOWtests/test_undervoltage.py114 def test_unsupported_reads_none_not_false(CODE
LOWtests/test_undervoltage.py124 def test_unreadable_attribute_is_unknown(self, tmp_path: Path) -> None:CODE
LOWtests/test_undervoltage.py131 def test_first_alarm_sets_the_latch(self, fake_redis: MagicMock) -> None:CODE
LOWtests/test_undervoltage.py227 def test_same_boot_survives_a_reread(self, fake_redis: MagicMock) -> None:CODE
LOWtests/test_undervoltage.py235 def test_corrupt_latch_is_discarded(self, fake_redis: MagicMock) -> None:CODE
LOWtests/test_undervoltage.py244 def test_boot_id_is_persisted(self, fake_redis: MagicMock) -> None:CODE
LOWtests/test_undervoltage.py254 def test_redis_failure_still_returns_the_reading(CODE
LOWtests/test_undervoltage.py508 def test_healthy_device_never_creates_the_key(CODE
LOWtests/test_undervoltage.py518 def test_a_real_change_still_writes(self, fake_redis: MagicMock) -> None:CODE
LOWtests/test_undervoltage.py526 def test_unreadable_redis_does_not_erase_history(CODE
LOWtests/test_undervoltage.py53 def test_finds_rpi_volt_among_other_sensors(CODE
LOWtests/test_undervoltage.py102 def test_reads_the_boolean_attribute(CODE
LOWtests/test_undervoltage.py142 def test_recovery_clears_active_but_not_history(CODE
LOWtests/test_undervoltage.py156 def test_distinct_brown_outs_accumulate(CODE
LOWtests/test_undervoltage.py170 def test_sustained_brown_out_counts_once(CODE
LOWtests/test_undervoltage.py186 def test_worker_restart_does_not_inflate_the_count(CODE
LOWtests/test_undervoltage.py199 def test_corrupt_count_does_not_raise(self, fake_redis: MagicMock) -> None:CODE
LOWtests/test_undervoltage.py214 def test_reboot_resets_the_latch(self, fake_redis: MagicMock) -> None:CODE
LOWtests/test_undervoltage.py280 def test_healthy_board_does_not_warn(CODE
LOWtests/test_undervoltage.py295 def test_live_alarm_warns_without_a_latch(CODE
LOWtests/test_undervoltage.py312 def test_history_warns_after_recovery(CODE
LOWtests/test_undervoltage.py329 def test_live_alarm_is_written_back_to_the_latch(CODE
LOWtests/test_undervoltage.py349 def test_warning_survives_recovery_after_a_render_only_sighting(CODE
1368 more matches not shown…
Decorative Section Separators318 hits · 1138 pts
SeverityFileLineSnippetContext
MEDIUMconftest.py53# ---------------------------------------------------------------------------COMMENT
MEDIUMconftest.py55# ---------------------------------------------------------------------------COMMENT
MEDIUMconftest.py85# ---------------------------------------------------------------------------COMMENT
MEDIUMconftest.py87# ---------------------------------------------------------------------------COMMENT
MEDIUMconftest.py92# ---------------------------------------------------------------------------COMMENT
MEDIUMconftest.py94# ---------------------------------------------------------------------------COMMENT
MEDIUMconftest.py140# ---------------------------------------------------------------------------COMMENT
MEDIUMconftest.py142# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py129# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py131# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py144# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py146# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py180# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py182# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py219# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py221# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py312# ---------------------------------------------------------------------------COMMENT
MEDIUM…raspberry_pi_imager/tests/test_build_pi_imager_json.py314# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py199# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py201# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py230# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py232# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py345# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py347# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py475# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py477# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py565# --------------------------------------------------------------------------COMMENT
MEDIUMbin/balena_unpin_devices.py567# --------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh41# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh43# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh92# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh94# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh137# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh139# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh226# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh228# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh482# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh484# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh517# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh519# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh561# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh563# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh635# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh637# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh692# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh694# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh795# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh797# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh809# ---------------------------------------------------------------------------COMMENT
MEDIUMbin/collect_debug.sh811# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_csrf.py183# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_csrf.py190# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_diagnostics.py149# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_diagnostics.py157# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_utils.py379# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_utils.py435# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_utils.py522# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_processing.py739# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_processing.py741# ---------------------------------------------------------------------------COMMENT
MEDIUMtests/test_processing.py1540# ---------------------------------------------------------------------------COMMENT
258 more matches not shown…
Over-Commented Block332 hits · 300 pts
SeverityFileLineSnippetContext
LOWconftest.py61# job runs with ``-p no:django`` in a *minimal* venv that has neitherCOMMENT
LOWpyproject.toml61 # libheif1 system package is supplied by the base image (seeCOMMENT
LOWpyproject.toml161COMMENT
LOWdocker-compose.test.yml1# vim: ft=yaml.docker-composeCOMMENT
LOWtools/image_builder/utils.py101 builder_extra_apt = [COMMENT
LOWtools/image_builder/utils.py161COMMENT
LOWtools/image_builder/utils.py181 qt5_toolchain_url = f'{releases_url}/WebView-v2026.07.1'COMMENT
LOWtools/image_builder/utils.py201 # * Pi2 / Pi3 (32-bit, Qt5): Qt linuxfb + a custom -no-xcbCOMMENT
LOWtools/image_builder/utils.py281 # ``VideoOutput`` hosted in a QQuickWidget (issue #2967:COMMENT
LOWtools/image_builder/utils.py301 # gstreamer plugin set needed. VLC is deliberately notCOMMENT
LOWtools/image_builder/utils.py341 #COMMENT
LOWtools/image_builder/utils.py361 # enough to issue the ioctl; see anthias_common/smart.py.COMMENT
LOWtools/image_builder/utils.py381 # via V4L2 M2M / request API, not VAAPI; mesa-va-driversCOMMENT
LOWtools/image_builder/utils.py401 # plays pi1/pi2/pi3 video by shelling out to ``gst-launch-1.0COMMENT
LOWtools/image_builder/__main__.py61 f'Warning: Failed to create cache directory: {e}',COMMENT
LOWtools/image_builder/__main__.py81 'ffmpeg',COMMENT
LOWtools/image_builder/__main__.py181 #COMMENT
LOWtools/image_builder/__main__.py201 # Hardcode the GHCR-primary namespace so the cache lives next toCOMMENT
LOWtools/image_builder/__main__.py361COMMENT
LOWtools/raspberry_pi_imager/build_pi_imager_json.py21# one. `pi2` stays because the Pi 2 has no 64-bit option.COMMENT
LOWbin/balena_unpin_devices.py121KEEP_PINNED_TAG = 'anthias_keep_pinned'COMMENT
LOWbin/balena_unpin_devices.py141# balenaOS 5.1.x, whose devices run supervisor 15.x; pushing 17.x thereCOMMENT
LOWbin/enable_ssl.sh1#!/bin/bash -eCOMMENT
LOWbin/enable_ssl.sh21# A compose override (docker-compose.ssl.override.yml) is generated to:COMMENT
LOWbin/enable_ssl.sh161}COMMENT
LOWbin/collect_debug.sh1#!/bin/bashCOMMENT
LOWbin/collect_debug.sh21#COMMENT
LOWbin/collect_debug.sh241section "Mounts" "$SYS" mountCOMMENT
LOWbin/collect_debug.sh281 echo "a kernel built without CONFIG_SENSORS_RASPBERRYPI_HWMON."COMMENT
LOWbin/collect_debug.sh701section "Listening sockets" "$NET" sh -c 'ss -tlnp 2>/dev/null || netstat -tlnp 2>/dev/null'COMMENT
LOWbin/collect_debug.sh721# should land as more of them move into the UI: adding a field to theCOMMENT
LOWbin/migrate_legacy_paths.sh1#!/bin/bashCOMMENT
LOWbin/migrate_legacy_paths.sh21# parallel reimplementation.COMMENT
LOWbin/generate_board_enablement_testbed.sh1#!/usr/bin/env bashCOMMENT
LOWbin/install.sh381 [ "$(uv --version 2>/dev/null | awk '{print $2}')" != "${UV_PIN_VERSION}" ]; thenCOMMENT
LOWbin/install.sh461 # so `uname -m` reports aarch64 while Docker/apt are armhf.COMMENT
LOWbin/install.sh501 cd "${ANTHIAS_REPO_DIR}/ansible"COMMENT
LOWbin/install.sh561 # Free the RAM held by the previous-version stack (server, viewer,COMMENT
LOWbin/rebuild_qt5_toolchain.sh1#!/usr/bin/env bashCOMMENT
LOWbin/rebuild_qt5_toolchain.sh21# (a) two parallel builds will OOM most hosts and (b) the LinaroCOMMENT
LOWbin/rebuild_qt5_toolchain.sh61COMMENT
LOWbin/start_viewer.sh1#!/bin/bashCOMMENT
LOWbin/start_viewer.sh41# the system interpreter, which has no Anthias deps installed.COMMENT
LOWbin/build_favicons.sh1#!/usr/bin/env bashCOMMENT
LOWbin/upgrade_containers.sh1#!/bin/bash -eCOMMENT
LOWbin/upgrade_containers.sh21# against a decompression-bomb fixture or runaway ffprobe, notCOMMENT
LOWbin/upgrade_containers.sh61# Detect Raspberry Pi version. Pi 4 is always treated as pi4-64 (theCOMMENT
LOWbin/upgrade_containers.sh101 # @TODO: Rename laterCOMMENT
LOWbin/upgrade_containers.sh161# No CEC device passthrough is needed, on any board.COMMENT
LOWbin/migrate_in_container_paths.sh1#!/bin/bashCOMMENT
LOWbin/purge_stale_images.sh1#!/bin/bashCOMMENT
LOWbin/purge_stale_images.sh21# *tagged* images is restricted to the Anthias repositories, and onlyCOMMENT
LOWbin/render_balena_yml.sh1#!/bin/bashCOMMENT
LOWbin/balena_ota_deploy.sh1#!/bin/bashCOMMENT
LOWbin/test_webview_cpp.sh1#!/usr/bin/env bashCOMMENT
LOWbin/lib/viewer/common.sh1# shellcheck shell=bashCOMMENT
LOWbin/lib/viewer/common.sh21# from upstream mpv (RK3399 / Rock Pi 4 today; future Rockchip /COMMENT
LOWbin/lib/viewer/common.sh41 # Rockchip / Allwinner / Amlogic stateless decoders. TheCOMMENT
LOWbin/lib/viewer/common.sh101COMMENT
LOWbin/lib/viewer/common.sh121# Run a minimal per-container daemon as the viewer user. The configCOMMENT
272 more matches not shown…
Excessive Try-Catch Wrapping74 hits · 78 pts
SeverityFileLineSnippetContext
LOWtools/image_builder/__main__.py59 except Exception as e:CODE
LOWbin/migrate_legacy_paths.sh177 except Exception:CODE
MEDIUMbin/migrate_legacy_paths.sh173def asset_count(path):CODE
LOWtests/test_processing.py68except Exception:CODE
LOWsrc/anthias_viewer/media_player.py655 except Exception:CODE
LOWsrc/anthias_viewer/media_player.py670 except Exception:CODE
LOWsrc/anthias_viewer/media_player.py943 except Exception as exc:CODE
LOWsrc/anthias_viewer/__init__.py909 except Exception:CODE
LOWsrc/anthias_viewer/__init__.py919 except Exception:CODE
LOWsrc/anthias_viewer/__init__.py1348 except Exception as exc:CODE
LOWsrc/anthias_viewer/__init__.py1401 except Exception as exc:CODE
LOWsrc/anthias_viewer/__init__.py1406 except Exception:CODE
LOWsrc/anthias_viewer/__init__.py1484 except Exception as exc:CODE
LOWsrc/anthias_viewer/__init__.py1604 except Exception as exc:CODE
LOWsrc/anthias_viewer/__init__.py1714 except Exception:CODE
LOWsrc/anthias_viewer/__init__.py2219 except Exception as exc:CODE
LOWsrc/anthias_viewer/__init__.py2247 except Exception:CODE
LOWsrc/anthias_viewer/__init__.py2527 except Exception as exc:CODE
LOWsrc/anthias_viewer/__init__.py2615 except Exception:CODE
LOWsrc/anthias_viewer/__init__.py2677 except Exception:CODE
LOWsrc/anthias_viewer/__init__.py2705 except Exception:CODE
LOWsrc/anthias_viewer/__main__.py10 except Exception:CODE
LOWsrc/anthias_common/board.py60 except Exception:CODE
LOWsrc/anthias_common/board.py88 except Exception:CODE
LOWsrc/anthias_common/storage_health.py821 except Exception:CODE
LOWsrc/anthias_common/storage_health.py886 except Exception:CODE
LOWsrc/anthias_common/storage_health.py899 except Exception:CODE
LOWsrc/anthias_common/version.py45 except Exception:CODE
LOWsrc/anthias_common/version.py66 except Exception:CODE
LOWsrc/anthias_common/smart.py350 except Exception:CODE
LOWsrc/anthias_common/smart.py364 except Exception:CODE
LOWsrc/anthias_common/utils.py459 except Exception:CODE
LOWsrc/anthias_common/utils.py515 except Exception:CODE
LOWsrc/anthias_common/undervoltage.py263 except Exception:CODE
LOWsrc/anthias_common/undervoltage.py375 except Exception:CODE
MEDIUMsrc/anthias_common/undervoltage.py124def _scan_for_alarm_path() -> str | None:CODE
LOWsrc/anthias_webview/pyshim/imp.py147 except Exception:CODE
LOWsrc/anthias_server/processing.py512 except Exception:CODE
LOWsrc/anthias_server/processing.py519 except Exception:CODE
LOWsrc/anthias_server/processing.py544except Exception: # pragma: no cover - graceful no-op on hosts w/o libheifCODE
LOWsrc/anthias_server/processing.py618 except Exception:CODE
LOWsrc/anthias_server/processing.py980 except Exception:CODE
MEDIUMsrc/anthias_server/celery_tasks.py566def send_telemetry_task() -> None:CODE
LOWsrc/anthias_server/celery_tasks.py387 except Exception:CODE
LOWsrc/anthias_server/celery_tasks.py408 except Exception:CODE
LOWsrc/anthias_server/celery_tasks.py535 except Exception:CODE
LOWsrc/anthias_server/celery_tasks.py680 except Exception:CODE
LOWsrc/anthias_server/celery_tasks.py737 except Exception:CODE
LOWsrc/anthias_server/celery_tasks.py805 except Exception:CODE
LOWsrc/anthias_server/celery_tasks.py1520 except Exception:CODE
LOWsrc/anthias_server/celery_tasks.py1816 except Exception:CODE
LOWsrc/anthias_server/app/consumers.py80 except Exception:CODE
LOWsrc/anthias_server/app/page_context.py88 except Exception:CODE
LOWsrc/anthias_server/app/page_context.py124 except Exception:CODE
LOWsrc/anthias_server/app/page_context.py156 except Exception:CODE
MEDIUMsrc/anthias_server/app/page_context.py153def _storage_state() -> dict[str, Any]:CODE
LOWsrc/anthias_server/app/views.py1780 except Exception as exc:CODE
LOWsrc/anthias_server/lib/storage_watcher.py141 except Exception:CODE
LOWsrc/anthias_server/lib/telemetry.py61 except Exception as exc:CODE
MEDIUMsrc/anthias_server/lib/telemetry.py55def _get_asset_counts() -> dict[str, int]:CODE
14 more matches not shown…
Unused Imports60 hits · 54 pts
SeverityFileLineSnippetContext
LOWconftest.py73CODE
LOWbin/balena_unpin_devices.py81CODE
LOWbin/shoot_pages.py17CODE
LOWbin/balena_fleet_maintenance.py41CODE
LOWemails/render_logo.py22CODE
LOWtests/test_csrf.py10CODE
LOWtests/test_processing.py31CODE
LOWtests/test_auth.py20CODE
LOWtests/test_login_view.py10CODE
LOWtests/test_design_system_page.py18CODE
LOWtests/test_sentry.py292CODE
LOWtests/test_sentry.py315CODE
LOWtests/test_email_tokens.py22CODE
LOWtests/test_migrate_to_screenly.py15CODE
LOWtests/test_error_pages.py11CODE
LOWtests/test_design_tokens.py16CODE
LOWtests/_seed_data.py24CODE
LOWtests/test_remote_video.py13CODE
LOWtests/test_storage_watcher.py3CODE
LOWtests/test_host_agent_board_subtype.py19CODE
LOWtests/test_host_agent_ifaddrs.py11CODE
LOWtests/test_smart.py8CODE
LOWtests/test_app.py30CODE
LOWtests/test_template_views.py11CODE
LOWtests/test_storage_health.py10CODE
LOWsrc/anthias_common/board.py29CODE
LOWsrc/anthias_common/storage_health.py75CODE
LOWsrc/anthias_common/version.py11CODE
LOWsrc/anthias_common/youtube.py12CODE
LOWsrc/anthias_common/remote_video.py17CODE
LOWsrc/anthias_common/smart.py44CODE
LOWsrc/anthias_common/http.py13CODE
LOWsrc/anthias_common/undervoltage.py49CODE
LOWsrc/anthias_host_agent/ifaddrs.py18CODE
LOWsrc/anthias_webview/pyshim/pipes.py6CODE
LOWsrc/anthias_server/processing.py51CODE
LOWsrc/anthias_server/app/design_system.py21CODE
LOW…thias_server/app/management/commands/import_content.py11CODE
LOWsrc/anthias_server/lib/auth.py66CODE
LOWsrc/anthias_server/lib/csrf.py37CODE
LOWsrc/anthias_server/lib/storage_watcher.py35CODE
LOWsrc/anthias_server/lib/screenly_migration.py14CODE
LOWsrc/anthias_server/lib/undervoltage_watcher.py26CODE
LOWsrc/anthias_server/lib/timezone.py17CODE
LOWsrc/anthias_server/lib/integrations/screencloud.py25CODE
LOWsrc/anthias_server/lib/integrations/ingest.py20CODE
LOWsrc/anthias_server/lib/integrations/graphql.py10CODE
LOWsrc/anthias_server/lib/integrations/registry.py9CODE
LOWsrc/anthias_server/lib/integrations/xibo.py25CODE
LOWsrc/anthias_server/lib/integrations/pisignage.py22CODE
LOWsrc/anthias_server/lib/integrations/http.py14CODE
LOWsrc/anthias_server/lib/integrations/base.py19CODE
LOWsrc/anthias_server/lib/integrations/yodeck.py20CODE
LOWsrc/anthias_server/api/admin.py1CODE
LOWsrc/anthias_server/api/tests/test_pisignage_import.py9CODE
LOWsrc/anthias_server/api/tests/test_xibo_import.py9CODE
LOWsrc/anthias_server/api/tests/test_yodeck_import.py14CODE
LOWsrc/anthias_server/api/tests/_graphql_helpers.py9CODE
LOWsrc/anthias_server/api/tests/test_screenly_migration.py15CODE
LOWsrc/anthias_server/api/tests/test_screencloud_import.py9CODE
Modern Structural Boilerplate52 hits · 50 pts
SeverityFileLineSnippetContext
LOWbin/shoot_pages.py87def _setup_django(seed: bool) -> None:CODE
LOWtests/test_celery_tasks.py34def _set_mtime(file_path: str, age_seconds: int) -> None:CODE
LOWtests/test_app.py1509def _set_clock_toggle(page: Page, use_24h: bool) -> None:CODE
LOWtests/test_app.py1573def _set_date_format(page: Page, value: str) -> None:CODE
LOWtests/test_app.py1629 def _set_name(value: str) -> None:CODE
LOWsrc/anthias_viewer/media_player.py16logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_viewer/media_player.py38def set_browser_bus(bus: Any) -> None:CODE
LOWsrc/anthias_viewer/media_player.py55def set_send_to_webview(fn: Any) -> None:CODE
LOWsrc/anthias_viewer/media_player.py521 def set_asset(self, uri: str, duration: int | str) -> None:CODE
LOWsrc/anthias_viewer/media_player.py625 def set_asset(self, uri: str, duration: int | str) -> None:CODE
LOWsrc/anthias_viewer/media_player.py797 def set_asset(self, uri: str, duration: int | str) -> None:CODE
LOWsrc/anthias_viewer/__init__.py77logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_viewer/utils.py13logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_viewer/scheduling.py12logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_viewer/scheduling.py201 def update_playlist(self, *, allow_reshuffle: bool = False) -> None:CODE
LOWsrc/anthias_viewer/gst_fbdev_player.py63logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_viewer/__main__.py5logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_viewer/messaging.py11logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_common/storage_health.py88logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_common/smart.py53logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_common/utils.py31logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_common/undervoltage.py79logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_host_agent/__main__.py35logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_host_agent/__main__.py94def set_ip_addresses() -> None:CODE
LOWsrc/anthias_host_agent/__main__.py209def set_total_mem_kb(rdb: 'redis.Redis') -> None:CODE
LOWsrc/anthias_host_agent/__main__.py230def set_board_subtype(rdb: 'redis.Redis') -> None:CODE
LOWsrc/anthias_server/settings.py13logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/processing.py68logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/celery_tasks.py61logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/app/consumers.py8logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/app/helpers.py17logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/app/page_context.py34logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/app/views.py60logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/app/views.py1537def _set_toast_header(response: HttpResponse, kind: str, message: str) -> None:CODE
LOWsrc/anthias_server/lib/auth.py110logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/cec.py56logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/display_power.py30logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/storage_watcher.py44logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/diagnostics.py18logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/telemetry.py18logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/backup_helper.py13logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/whitenoise.py25logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/whitenoise.py40 def update_files_dictionary(self, root: str, prefix: str) -> None:CODE
LOWsrc/anthias_server/lib/cec_client.py50logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/undervoltage_watcher.py37logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/github.py10logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/github.py50def _set_github_error_backoff(action: str) -> None:CODE
LOWsrc/anthias_server/lib/integrations/screencloud.py43logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/lib/integrations/yodeck.py37logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/api/helpers.py21def update_asset(asset: dict[str, Any], data: dict[str, Any]) -> None:CODE
LOWsrc/anthias_server/api/views/mixins.py44logger = logging.getLogger(__name__)CODE
LOWsrc/anthias_server/api/views/v2.py90logger = logging.getLogger(__name__)CODE
Cross-Language Confusion11 hits · 48 pts
SeverityFileLineSnippetContext
HIGHtests/test_app.py249 ' return el && typeof window.Alpine?.$data(el)?.openAdd === "function";'CODE
HIGHtests/test_app.py775 _alpine_state(page, 'state.editAsset && state.editAsset.asset_id')CODE
HIGHtests/test_app.py974 'state.previewAsset && state.previewAsset.asset_id',CODE
HIGHtests/test_app.py999 'state.previewAsset && state.previewAsset.asset_id',CODE
HIGHtests/test_app.py1652 if (l && l.textContent.trim() === label) {CODE
HIGHtests/test_app.py1656 return null;CODE
HIGHtests/test_app.py1706 if (memLegend[i] !== undefined) row.textContent = memLegend[i];CODE
HIGHtests/test_app.py1723 if (diskLegend[i] !== undefined) row.textContent = diskLegend[i];CODE
HIGHtests/test_app.py1736 : null;CODE
HIGHtests/test_app.py110 if (!el) return null;STRING
HIGHtests/test_app.py465 return Boolean(el && el.closest('.modal-card'));STRING
Deep Nesting39 hits · 35 pts
SeverityFileLineSnippetContext
LOWbin/shoot_pages.py153CODE
LOWbin/balena_fleet_maintenance.py173CODE
LOWtests/fake_docker.py77CODE
LOWtests/test_design_tokens.py275CODE
LOWtests/test_design_tokens.py300CODE
LOWtests/test_design_tokens.py355CODE
LOWtests/test_design_tokens.py474CODE
LOWtests/test_template_views.py3265CODE
LOWtests/test_template_views.py3416CODE
LOWsrc/anthias_viewer/media_player.py97CODE
LOWsrc/anthias_viewer/media_player.py339CODE
LOWsrc/anthias_viewer/__init__.py1885CODE
LOWsrc/anthias_viewer/__init__.py1914CODE
LOWsrc/anthias_viewer/__init__.py1994CODE
LOWsrc/anthias_viewer/__init__.py2343CODE
LOWsrc/anthias_viewer/messaging.py46CODE
LOWsrc/anthias_common/storage_health.py687CODE
LOWsrc/anthias_common/utils.py198CODE
LOWsrc/anthias_common/utils.py388CODE
LOWsrc/anthias_common/utils.py439CODE
LOWsrc/anthias_common/undervoltage.py124CODE
LOWsrc/anthias_common/device_helper.py34CODE
LOWsrc/anthias_common/device_helper.py193CODE
LOWsrc/anthias_host_agent/__main__.py132CODE
LOWsrc/anthias_host_agent/__main__.py173CODE
LOWsrc/anthias_server/celery_tasks.py1167CODE
LOWsrc/anthias_server/celery_tasks.py1586CODE
LOWsrc/anthias_server/app/views.py226CODE
LOWsrc/anthias_server/app/views.py492CODE
LOWsrc/anthias_server/app/templatetags/asset_filters.py330CODE
LOWsrc/anthias_server/lib/cec.py548CODE
LOWsrc/anthias_server/lib/cec.py331CODE
LOWsrc/anthias_server/lib/storage_watcher.py60CODE
LOWsrc/anthias_server/lib/whitenoise.py70CODE
LOWsrc/anthias_server/lib/undervoltage_watcher.py77CODE
LOWsrc/anthias_server/lib/integrations/ingest.py200CODE
LOWsrc/anthias_server/api/serializers/mixins.py61CODE
LOWsrc/anthias_server/api/views/mixins.py290CODE
LOWsrc/anthias_server/api/views/v2.py624CODE
AI Slop Vocabulary7 hits · 20 pts
SeverityFileLineSnippetContext
MEDIUMbin/install.sh503 # If the user can't elevate without a password, Ansible needsCOMMENT
MEDIUMbin/install.sh537 # host + runtime layers. An explicit -e is robust against sudo strippingCOMMENT
LOWbin/start_viewer.sh43# we just set; -E alone is subject to env_check / env_delete and is notCOMMENT
MEDIUMansible/site.yml6 # install.sh passes -e anthias_user explicitly (robust under sudo).COMMENT
MEDIUMsrc/anthias_webview/src/view.cpp295 // an in-place navigation), so transitions are seamless with at mostCOMMENT
MEDIUMsrc/anthias_server/app/static/sass/_styles.scss3230 // 16rem parent is robust to whichever `position` wins.COMMENT
MEDIUMsrc/anthias_server/app/static/src/apps/location-map.ts133 // whenever the canvas actually gets its size — robust to the modalCOMMENT
Structural Annotation Overuse8 hits · 15 pts
SeverityFileLineSnippetContext
LOWbin/generate_board_enablement_testbed.sh67# Step 2: cut H.264 sources to CUT_SECONDS via -c copy. Avoids aCOMMENT
LOWbin/generate_board_enablement_testbed.sh92# Step 3: HEVC re-encode each H.264 cut. ``-tag:v hvc1`` writesCOMMENT
LOWbin/generate_board_enablement_testbed.sh120# Step 4: report.COMMENT
LOWwebsite/content/docs/x86-installation.md27## Step 1: Download DebianCOMMENT
LOWwebsite/content/docs/x86-installation.md35## Step 2: Write the installer to a USB driveCOMMENT
LOWwebsite/content/docs/x86-installation.md42## Step 3: Install DebianCOMMENT
LOWwebsite/content/docs/x86-installation.md52## Step 4: Prepare the system for AnthiasCOMMENT
LOWwebsite/content/docs/x86-installation.md90## Step 5: Run the Anthias installerCOMMENT
Hallucination Indicators1 hit · 10 pts
SeverityFileLineSnippetContext
CRITICALsrc/anthias_server/lib/auth.py540 from django.core.exceptions import ValidationErrorCODE
Self-Referential Comments3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMbin/start_server.sh21# The following block ensures that the migration is transactional and that theCOMMENT
MEDIUMtests/test_processing.py793 # Create a minimal placeholder — ffprobe is mocked below so theCOMMENT
MEDIUMtests/test_processing.py1111 # Create an empty placeholder file so the FileNotFoundError checkCOMMENT
Verbosity Indicators3 hits · 4 pts
SeverityFileLineSnippetContext
LOWbin/generate_board_enablement_testbed.sh67# Step 2: cut H.264 sources to CUT_SECONDS via -c copy. Avoids aCOMMENT
LOWbin/generate_board_enablement_testbed.sh92# Step 3: HEVC re-encode each H.264 cut. ``-tag:v hvc1`` writesCOMMENT
LOWbin/generate_board_enablement_testbed.sh120# Step 4: report.COMMENT
Example Usage Blocks3 hits · 4 pts
SeverityFileLineSnippetContext
LOWbin/collect_debug.sh31# Usage:COMMENT
LOWbin/generate_board_enablement_testbed.sh14# Usage:COMMENT
LOWbin/rebuild_qt5_toolchain.sh25# Usage:COMMENT
Modern AI Meta-Vocabulary1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMbin/start_viewer.sh3# start_viewer.sh — orchestrates the viewer boot. Shared setup runs onCOMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOWemails/README.md156 announcement, kept real rather than filled with lorem ipsum so theCODE
AI Structural Patterns1 hit · 0 pts
SeverityFileLineSnippetContext
LOWtests/test_storage_health.py73CODE