Repository Analysis

PostgREST/postgrest

REST API for any Postgres database

11.4 Low AI signal View on GitHub

Analysis Overview

This report presents the forensic synthetic code analysis of PostgREST/postgrest, a Haskell project with 27,439 GitHub stars. SynthScan v2.0 examined 11,794 lines of code across 79 source files, recording 139 pattern matches distributed across 9 syntactic categories. The overall adjusted score of 11.4 places this repository in the Low 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).

11.4
Adjusted Score
11.4
Raw Score
100%
Time Factor
2026-07-14
Last Push
27.4K
Stars
Haskell
Language
11.8K
Lines of Code
79
Files
139
Pattern Hits
2026-07-14
Scan Date
0.04
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 3MEDIUM 3LOW 133

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 139 distinct pattern matches across 9 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 Identifiers103 hits · 81 pts
SeverityFileLineSnippetContext
LOWtest/io/test_admin.py27def test_admin_ready_w_channel(defaultenv):CODE
LOWtest/io/test_admin.py40def test_admin_ready_wo_channel(defaultenv):CODE
LOWtest/io/test_admin.py53def test_admin_ready_includes_schema_cache_state(defaultenv, metapostgrest):CODE
LOWtest/io/test_admin.py92def test_admin_ready_dependent_on_main_app(defaultenv):CODE
LOWtest/io/test_admin.py110def test_admin_live_dependent_on_main_app(defaultenv):CODE
LOWtest/io/test_admin.py121def test_admin_works_with_host_special_values(specialhostvalue, defaultenv):CODE
LOWtest/io/test_admin.py147def test_admin_metrics_include_ghc_runtime_metrics(defaultenv):CODE
LOWtest/io/test_admin.py161def test_admin_metrics_exclude_ghc_runtime_metrics_by_default(defaultenv):CODE
LOWtest/io/test_admin.py171def test_admin_metrics_include_schema_cache_fails(defaultenv, metapostgrest):CODE
LOWtest/io/config.py37def get_admin_host_and_port_from_config(config):CODE
LOWtest/io/test_auth.py22def test_read_secret_from_file(secretpath, defaultenv):CODE
LOWtest/io/test_auth.py39def test_read_secret_from_stdin(defaultenv):CODE
LOWtest/io/test_auth.py55def test_read_secret_from_stdin_dbconfig(defaultenv):CODE
LOWtest/io/test_auth.py68def test_fail_with_invalid_password(defaultenv):CODE
LOWtest/io/test_auth.py99def test_jwt_aud_in_role_claim_key(jwtaudroleclaim, defaultenv):CODE
LOWtest/io/test_auth.py140def test_jwt_secret_external_file_reload(tmp_path, defaultenv):CODE
LOWtest/io/test_auth.py189def test_invalidate_jwt_cache_when_secret_changes(tmp_path, defaultenv):CODE
LOWtest/io/util.py63def parse_server_timings_header(header):CODE
LOWtest/io/test_io.py1526def test_function_setting_statement_timeout_fails(defaultenv):CODE
LOWtest/io/test_io.py1539def test_function_setting_statement_timeout_passes(defaultenv):CODE
LOWtest/io/test_io.py1549def test_function_setting_work_mem(defaultenv):CODE
LOWtest/io/test_io.py61def test_read_dburi_from_stdin_without_eol(dburi, defaultenv):CODE
LOWtest/io/test_io.py74def test_read_dburi_from_stdin_with_eol(dburi, defaultenv):CODE
LOWtest/io/test_io.py87def test_app_settings_flush_pool(defaultenv):CODE
LOWtest/io/test_io.py111def test_flush_pool_no_interrupt(defaultenv):CODE
LOWtest/io/test_io.py133def test_graceful_shutdown_waits_for_in_flight_request(defaultenv):CODE
LOWtest/io/test_io.py154def test_termination_unix_signal_logging(defaultenv):CODE
LOWtest/io/test_io.py180def test_so_reuseport_zero_downtime_handover(defaultenv):CODE
LOWtest/io/test_io.py295def test_db_schema_notify_reload(defaultenv):CODE
LOWtest/io/test_io.py350def test_max_rows_notify_reload(defaultenv):CODE
LOWtest/io/test_io.py381def test_invalid_role_claim_key_notify_reload(defaultenv):CODE
LOWtest/io/test_io.py448def test_change_statement_timeout(defaultenv, metapostgrest):CODE
LOWtest/io/test_io.py521def test_pool_acquisition_timeout(level, defaultenv, metapostgrest):CODE
LOWtest/io/test_io.py552def test_pool_acquisition_timeout_logs_are_debounced(defaultenv):CODE
LOWtest/io/test_io.py600def test_change_statement_timeout_held_connection(defaultenv, metapostgrest):CODE
LOWtest/io/test_io.py652def test_listener_query_is_visible_in_pg_stat_activity(defaultenv):CODE
LOWtest/io/test_io.py1280def test_schema_cache_query_timings_log(level, timezone_enabled, defaultenv):CODE
LOWtest/io/test_io.py1311def test_get_pgrst_version_with_uri_connection_string(dburi_type, dburi, defaultenv):CODE
LOWtest/io/test_io.py1333def test_get_pgrst_version_with_keyval_connection_string(defaultenv):CODE
LOWtest/io/test_io.py1351def test_log_postgrest_version(defaultenv):CODE
LOWtest/io/test_io.py1364def test_log_postgrest_host_and_port(host, defaultenv):CODE
LOWtest/io/test_io.py1392def test_log_postgrest_admin_server_host_and_port(host, defaultenv):CODE
LOWtest/io/test_io.py1423def test_succeed_w_role_having_superuser_settings(defaultenv):CODE
LOWtest/io/test_io.py1435def test_get_granted_superuser_setting(defaultenv):CODE
LOWtest/io/test_io.py1453def test_fail_with_invalid_dbname_and_automatic_recovery_disabled(defaultenv):CODE
LOWtest/io/test_io.py1468def test_fail_with_automatic_recovery_disabled_and_terminated_using_query(defaultenv):CODE
LOWtest/io/test_io.py1489def test_db_error_logging_to_stderr(level, defaultenv, metapostgrest):CODE
LOWtest/io/test_io.py1563def test_multiple_func_settings(defaultenv):CODE
LOWtest/io/test_io.py1581def test_first_hoisted_setting_is_applied(defaultenv):CODE
LOWtest/io/test_io.py1597def test_second_hoisted_setting_is_applied(defaultenv):CODE
LOWtest/io/test_io.py1613def test_schema_cache_startup_load_with_in_db_config(defaultenv, metapostgrest):CODE
LOWtest/io/test_io.py1649def test_log_error_when_schema_cache_load_error_on_startup_to_stderr(defaultenv):CODE
LOWtest/io/test_io.py1677def test_no_double_schema_cache_reload_on_empty_schema(defaultenv):CODE
LOWtest/io/test_io.py1703def test_log_pool_req_observation(level, defaultenv):CODE
LOWtest/io/test_io.py1729def test_proxy_status_header_with_role_statement_timeout(defaultenv, metapostgrest):CODE
LOWtest/io/test_io.py1749def test_allow_configs_to_be_set_to_empty(defaultenv):CODE
LOWtest/io/test_io.py1762def test_schema_cache_error_observation(defaultenv):CODE
LOWtest/io/test_io.py1782def test_log_listener_connection_errors(defaultenv):CODE
LOWtest/io/test_io.py1800def test_log_listener_connection_start(defaultenv):CODE
LOWtest/io/test_io.py1819def test_connection_error_message_does_not_claim_retry(defaultenv):CODE
43 more matches not shown…
Over-Commented Block22 hits · 22 pts
SeverityFileLineSnippetContext
LOW.stylish-haskell.yaml1# stylish-haskell configuration fileCOMMENT
LOW.stylish-haskell.yaml21 - simple_align:COMMENT
LOW.stylish-haskell.yaml41 # Default: global.COMMENT
LOW.stylish-haskell.yaml61 # > import qualified Data.List as ListCOMMENT
LOW.stylish-haskell.yaml81 # > init, last, length)COMMENT
LOW.stylish-haskell.yaml101 # > , singletonCOMMENT
LOW.stylish-haskell.yaml121COMMENT
LOW.stylish-haskell.yaml141 # functions.COMMENT
LOW.stylish-haskell.yaml161 # Default: falseCOMMENT
LOW.stylish-haskell.yaml181 #COMMENT
LOW.stylish-haskell.yaml201# A common setting is the number of columns (parts of) code will be wrappedCOMMENT
LOWtest/io/test_io.py181 "A second PostgREST instance should take over on the same main/admin ports without request failures."COMMENT
LOWdocs/conf.py1# -*- coding: utf-8 -*-COMMENT
LOWdocs/conf.py61# The language for content autogenerated by Sphinx. Refer to documentationCOMMENT
LOWdocs/conf.py81# default_role = NoneCOMMENT
LOWdocs/conf.py121# The name for this set of Sphinx documents.COMMENT
LOWdocs/conf.py141COMMENT
LOWdocs/conf.py161# html_additional_pages = {}COMMENT
LOWdocs/conf.py181# If true, an OpenSearch description file will be output, and all pages willCOMMENT
LOWdocs/conf.py201# implements a search results scorer. If empty, the default will be used.COMMENT
LOWdocs/conf.py221# (source start file, target name, title,COMMENT
LOWdocs/conf.py241# Documents to append as an appendix to all manuals.COMMENT
Cross-Language Confusion3 hits · 18 pts
SeverityFileLineSnippetContext
HIGHtest/io/test_io.py1535 == '{"code":"57014","details":null,"hint":null,"message":"canceling statement due to statement timeout"}'CODE
HIGHtest/io/test_io.py1644 log_message = '{"code":"PGRST001","details":"no connection to the server\\n","hint":null,"message":"Database cliCODE
HIGHtest/io/test_io.py1672 log_err_message = '{"code":"PGRST002","details":null,"hint":null,"message":"Could not query the database for theCODE
Excessive Try-Catch Wrapping3 hits · 4 pts
SeverityFileLineSnippetContext
LOWtest/io/util.py17 except Exception as e:CODE
MEDIUMtest/io/util.py14def run(self):CODE
LOWtest/io/test_io.py218 except Exception as exc:CODE
Decorative Section Separators1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUM.stylish-haskell.yaml2# ==================================COMMENT
Self-Referential Comments1 hit · 3 pts
SeverityFileLineSnippetContext
MEDIUMdocs/conf.py6# This file is execfile()d with the current directory set to itsCOMMENT
Deep Nesting3 hits · 2 pts
SeverityFileLineSnippetContext
LOWtest/io/test_io.py686CODE
LOWtest/io/test_io.py749CODE
LOWtest/io/postgrest.py92CODE
Fake / Example Data2 hits · 2 pts
SeverityFileLineSnippetContext
LOWtest/load/put.json3 "name": "John Doe",CODE
LOWtest/load/fixtures.sql14INSERT INTO test.actors VALUES (1, 'John Doe');CODE
AI Structural Patterns1 hit · 1 pts
SeverityFileLineSnippetContext
LOWtest/io/postgrest.py92CODE