Repository Analysis

getsentry/self-hosted

Sentry, feature-complete and packaged up for low-volume deployments and proofs-of-concept

15.8 Moderate AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of getsentry/self-hosted, a Shell project with 9,447 GitHub stars. SynthScan v2.0 examined 8,692 lines of code across 106 source files, recording 76 pattern matches distributed across 10 syntactic categories. The overall adjusted score of 15.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).

15.8
Adjusted Score
15.8
Raw Score
100%
Time Factor
2026-07-13
Last Push
9.4K
Stars
Shell
Language
8.7K
Lines of Code
106
Files
76
Pattern Hits
2026-07-14
Scan Date
0.00
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

This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.

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 0HIGH 0MEDIUM 24LOW 52

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 76 distinct pattern matches across 10 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.

Decorative Section Separators13 hits · 51 pts
SeverityFileLineSnippetContext
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh9# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh11# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh17# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh19# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh25# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh27# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh34# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh36# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh48# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh55# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh98# -----------------------------------------------------------------------COMMENT
MEDIUM_unit-test/setup-custom-ca-certificate-test.sh100# -----------------------------------------------------------------------COMMENT
MEDIUMscripts/_lib.sh22 # ----------------------------------------COMMENT
Over-Commented Block31 hits · 31 pts
SeverityFileLineSnippetContext
LOWworkstation/299_setup-completed.sh1#!/bin/bashCOMMENT
LOWinstall/migrate-pgbouncer.sh1echo "${_group}Migrating Postgres config to PGBouncer..."COMMENT
LOWinstall/detect-platform.sh1source install/_detect-container-engine.shCOMMENT
LOWinstall/bootstrap-s3-profiles.sh1# The purpose of this file is to have both `sentry`-based containers and `vroom` use the same bucket for profiling.COMMENT
LOW_unit-test/migrate-pgbouncer-test.sh21 "PORT": "",COMMENT
LOW_unit-test/migrate-pgbouncer-test.sh81rm $SENTRY_CONFIG_PYCOMMENT
LOW_unit-test/migrate-pgbouncer-test.sh141echo "Test 3 (custom postgres config)"COMMENT
LOWrelay/config.example.yml21# max_memory_percent: 1.0COMMENT
LOWrelay/config.example.yml41 prefix: "sentry.relay" # Adjust this to your needs, default is "sentry.relay"COMMENT
LOWsentry/config.example.yml1# While a lot of configuration in Sentry can be changed via the UI, for allCOMMENT
LOWsentry/config.example.yml21# appear at the same time. Only uncomment one of them.COMMENT
LOWsentry/config.example.yml41# When email-replies are enabled, this value is used in the Reply-To headerCOMMENT
LOWsentry/config.example.yml61#COMMENT
LOWsentry/config.example.yml81# 0:COMMENT
LOWsentry/config.example.yml121COMMENT
LOWsentry/config.example.yml141# -----END RSA PRIVATE KEY-----COMMENT
LOWsentry/config.example.yml161COMMENT
LOWsentry/sentry.conf.example.py61###########COMMENT
LOWsentry/sentry.conf.example.py81# Changing this value will result in all current sessions being invalidated.COMMENT
LOWsentry/sentry.conf.example.py101# Setting the value to False while running in an air-gapped environment willCOMMENT
LOWsentry/sentry.conf.example.py121# "169.254.0.0/16",COMMENT
LOWsentry/sentry.conf.example.py141# "::ffff:c000:200/120",COMMENT
LOWsentry/sentry.conf.example.py161# "ff00::/8",COMMENT
LOWsentry/sentry.conf.example.py241##################COMMENT
LOWsentry/sentry.conf.example.py261########COMMENT
LOWsentry/sentry.conf.example.py341# End of SSL/TLS settingsCOMMENT
LOWsentry/sentry.conf.example.py461#######################COMMENT
LOWsentry/sentry.conf.example.py481# CSP_SCRIPT_SRC += ["example.com"]COMMENT
LOWsentry/sentry.conf.example.py501# this to match your IPs/domains. Ports should be included if you are using custom ports.COMMENT
LOWsentry/sentry.conf.example.py521COMMENT
LOWsentry/enhance-image.example.sh1#!/bin/bashCOMMENT
Self-Referential Comments6 hits · 18 pts
SeverityFileLineSnippetContext
MEDIUMsentry-admin.sh11# Define the Docker volume mapping.COMMENT
MEDIUMinstall/error-handling.sh22# Create the breadcrumb payload now before stacktrace is printedCOMMENT
MEDIUM_unit-test/migrate-pgbouncer-test.sh40# Create the replacement text in a temp fileCOMMENT
MEDIUM_unit-test/migrate-pgbouncer-test.sh97# Create the replacement text in a temp fileCOMMENT
MEDIUM_unit-test/migrate-pgbouncer-test.sh154# Create the replacement text in a temp fileCOMMENT
MEDIUMsentry/sentry.conf.example.py1# This file is just Python, with a touch of Django which meansCOMMENT
AI Slop Vocabulary7 hits · 16 pts
SeverityFileLineSnippetContext
LOWdocker-compose.yml86 # Leaving the value empty to just pass whatever is setCOMMENT
LOWdocker-compose.yml119 # Leaving the value empty to just pass whatever is setCOMMENT
MEDIUMdocker-compose.yml122 # If you have statsd server, you can utilize that to monitor self-hosted Snuba containers.COMMENT
LOWinstall/error-handling.sh86 # If not, we'll just use the kernel name and version from `uname`.COMMENT
MEDIUMsymbolicator/config.example.yml9# If you have statsd server, you can utilize that to monitor self-hosted Symbolicator.COMMENT
MEDIUMrelay/config.example.yml36# If you have statsd server, you can utilize that to monitor self-hosted Relay.COMMENT
MEDIUMsentry/sentry.conf.example.py539# If you have a statsd server, you can utilize that to monitor self-hostedCOMMENT
Slop Phrases4 hits · 8 pts
SeverityFileLineSnippetContext
LOWinstall/_min-requirements.sh1# Don't forget to update the README and other docs when you change these!COMMENT
LOWsentry/config.example.yml46# Also don't forget to set `mail.enable-replies: true` above.COMMENT
LOWsentry/config.example.yml46# Also don't forget to set `mail.enable-replies: true` above.COMMENT
MEDIUMsentry/sentry.conf.example.py173# Through this setting, you can use the provided blob storage orCOMMENT
Hyper-Verbose Identifiers10 hits · 7 pts
SeverityFileLineSnippetContext
LOW_integration-test/conftest.py14def configure_self_hosted_environment(request):CODE
LOW_integration-test/conftest.py44def setup_backup_restore_env_variables():CODE
LOW_integration-test/test_01_basics.py113def test_asset_internal_rewrite():CODE
LOW_integration-test/test_01_basics.py121def test_memcached_django_cache():CODE
LOW_integration-test/test_01_basics.py210def test_cleanup_crons_running():STRING
LOW_integration-test/test_01_basics.py229def test_custom_certificate_authorities():STRING
LOW_integration-test/test_01_basics.py476def test_receive_transaction_events(client_login):STRING
LOW_integration-test/test_01_basics.py503def test_receive_user_feedback_events(client_login):STRING
LOW_integration-test/test_01_basics.py534def test_receive_metrics_events(client_login):STRING
LOW_integration-test/test_01_basics.py601def test_upload_mobile_builds(client_login):STRING
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWinstall/ensure-correct-permissions-profiles-dir.sh9 # Check if the parent directory of /var/vroom/sentry-profiles is already owned by vroom:vroomCOMMENT
LOWinstall/bootstrap-s3-profiles.sh75 # Check if there are files in the sentry-vroom volumeCOMMENT
Structural Annotation Overuse1 hit · 2 pts
SeverityFileLineSnippetContext
LOWsentry/config.example.yml25# NOTE: The following 2 configs (mail.from and mail.list-namespace) are setCOMMENT
Fake / Example Data1 hit · 1 pts
SeverityFileLineSnippetContext
LOW_integration-test/nodejs/user-feedback.js5 name: "John Doe",CODE
Unused Imports1 hit · 1 pts
SeverityFileLineSnippetContext
LOWsentry/sentry.conf.example.py4CODE