AI Slop Code RIsk Monitor

timescale/pg_textsearch

PostgreSQL extension for BM25 relevance-ranked full-text search. Postgres OSS licensed.

4.5 Low pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for timescale/pg_textsearch, a C project with 4,023 GitHub stars. SynthScan examined 133,560 lines of code across 403 source files, recording 301 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 4.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.

4.5
Adjusted Signal
4.5
Raw Pattern Score
100%
Time Factor
2026-10-11
Last Push
4.0K
Stars
C
Language
133.6K
Lines of Code
403
Files
301
Pattern Hits
2026-10-12
Scan Date
0.00
HC Hit Rate

Risk Review · v3

Use each vector to guide manual verification of the underlying findings.

Cognitive Ownership Risk 7.2/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.4/100 · LOW

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

Agent Over-Engineering Ratio 14.1/100 · LOW

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

PR Review Velocity Impact 19.6/100 · LOW

Which changes need focused human review? 301 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

Run additional scans to build a history of the legacy pattern signal. Score changes are not a measure of AI adoption or code quality.

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

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 141LOW 160

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 301 distinct pattern matches across 9 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.

Decorative Section Separators130 hits · 393 pts
SeverityFileLineSnippetContext
MEDIUMtest/scripts/logical_replication.sh181# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/logical_replication.sh183# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/logical_replication.sh264# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/logical_replication.sh266# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/logical_replication.sh296# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/logical_replication.sh298# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/logical_replication.sh333# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/logical_replication.sh335# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh64# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh67# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh98# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh101# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh146# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh149# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh183# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh186# -------------------------------------------------------------------COMMENT
MEDIUM⚡test/scripts/replication_lib.sh278# -------------------------------------------------------------------COMMENT
MEDIUM⚡test/scripts/replication_lib.sh293# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh364# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication_lib.sh366# -------------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh39# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh41# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh117# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh119# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh158# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh160# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh187# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh189# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh255# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh262# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh319# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/replication.sh321# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh172# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh177# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh259# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh264# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh354# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh361# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh469# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh475# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh607# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh613# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh689# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh695# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh780# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh786# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh969# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/multi_index.sh971# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh115# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh117# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh151# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh158# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh221# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh227# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh302# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/segment_wal_recovery.sh304# -------------------------------------------------------COMMENT
MEDIUMtest/scripts/wal_audit.sh91# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/wal_audit.sh93# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/wal_audit.sh124# ---------------------------------------------------------------COMMENT
MEDIUMtest/scripts/wal_audit.sh127# ---------------------------------------------------------------COMMENT
70 more matches not shown…
Over-Commented Block114 hits · 114 pts
SeverityFileLineSnippetContext
LOWtest/scripts/shutdown_spill.sh1#!/bin/bashCOMMENT
LOWtest/scripts/stress.sh1#!/bin/bashCOMMENT
LOWtest/scripts/stress.sh581 run_sql_quiet "DROP TABLE segment_test CASCADE;"COMMENT
LOWtest/scripts/compression_test.c1/*COMMENT
LOWtest/scripts/partial_concurrent_read.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_lib.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_lib.sh21#COMMENT
LOWtest/scripts/replication_lib.sh281# The standby memtable-staleness bug only manifests for backends thatCOMMENT
LOWtest/scripts/replication.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication.sh321# ---------------------------------------------------------------COMMENT
LOWtest/scripts/multi_index.sh1#!/bin/bashCOMMENT
LOWtest/scripts/segment_wal_recovery.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_memtable_dead_reclaim.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_segment_reclaim.sh1#!/bin/bashCOMMENT
LOWtest/scripts/wal_audit.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_issue_342.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_cascading.sh1#!/bin/bashCOMMENT
LOWtest/scripts/multi_backend_reindex.sh1#!/bin/bashCOMMENT
LOWtest/scripts/multi_backend_reindex.sh21# `CacheRegisterRelcacheCallback`. Subsequent writes from that backendCOMMENT
LOWtest/scripts/multi_backend_reindex.sh1621# require_parallelCOMMENT
LOWtest/scripts/multi_backend_reindex.sh1681 rewrite_steps+=$'\n'COMMENT
LOWtest/scripts/replication_correctness.sh1#!/bin/bashCOMMENT
LOWtest/scripts/upgrade_matrix.sh1#!/bin/bashCOMMENT
LOWtest/scripts/upgrade_matrix.sh21# REINDEX (no crash, no silent wrong answer) and REINDEX recovers.COMMENT
LOWtest/scripts/replication_concurrency.sh1#!/bin/bashCOMMENT
LOWtest/scripts/gen_v1_bm25vector.py1#!/usr/bin/env python3COMMENT
LOWtest/scripts/gen_v1_bm25vector.py21idx_name = b"compat_idx"COMMENT
LOWtest/scripts/replication_parallel_build.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_spill_paths.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_spill_paths.sh41# Test 1: bulk-load PRE_COMMIT spill replicationCOMMENT
LOWtest/scripts/replication_spill_paths.sh101 if [ "${LL_AFTER}" != "2000" ]; thenCOMMENT
LOWtest/scripts/replication_spill_paths.sh261# registry slot is empty (no other backend has touched this indexCOMMENT
LOWtest/scripts/replication_spill_paths.sh341# ---------------------------------------------------------------COMMENT
LOWtest/scripts/vacuum_concurrent_merge.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_failover.sh1#!/bin/bashCOMMENT
LOWtest/scripts/replication_failover.sh41 return 0COMMENT
LOWtest/scripts/replication_failover.sh101 log "D1 PASSED"COMMENT
LOWtest/scripts/gen_nul_lexeme_bm25vector.py1#!/usr/bin/env python3COMMENT
LOWtest/scripts/gen_nul_lexeme_bm25vector.py41# explicit NUL check.COMMENT
LOWtest/scripts/hypertable.sh1#!/bin/bashCOMMENT
LOWtest/modules/pg_textsearch_test/pg_textsearch_test.c1#include <postgres.h>COMMENT
LOWbenchmarks/run_parallel_scaling.sh1#!/bin/bashCOMMENT
LOWbenchmarks/run_filtered_seed.sh1#!/bin/bashCOMMENT
LOWbenchmarks/README.md61COMMENT
LOWbenchmarks/runner/extract_metrics.sh1#!/bin/bashCOMMENT
LOWbenchmarks/runner/run_benchmark.sh1#!/bin/bashCOMMENT
LOWbenchmarks/datasets/msmarco-v2/run_full_benchmark.sh1#!/bin/bashCOMMENT
LOWbenchmarks/datasets/msmarco-v2/run_v2_benchmark.sh1#!/bin/bashCOMMENT
LOWbenchmarks/datasets/msmarco-v2/profile_build.sh1#!/usr/bin/env bashCOMMENT
LOW…arks/datasets/msmarco-v2/generate_benchmark_queries.sh1#!/bin/bashCOMMENT
LOW…chmarks/datasets/msmarco/generate_benchmark_queries.sh1#!/bin/bashCOMMENT
LOW…marks/datasets/msmarco/insert/run_concurrent_insert.sh1#!/usr/bin/env bashCOMMENT
LOW…marks/datasets/msmarco/insert/run_concurrent_insert.sh21# # ParadeDB:COMMENT
LOWbenchmarks/datasets/wikipedia/download.sh141 ;;COMMENT
LOWscripts/bump-version.sh1#!/usr/bin/env bashCOMMENT
LOW.github/workflows/benchmark.yml2081 # Runs only on failure to avoid noise on successful runs.COMMENT
LOW.github/workflows/claude-code-review.yml1name: Claude Code ReviewCOMMENT
LOW.github/workflows/claude.yml41 actions: readCOMMENT
LOW.github/workflows/upgrade-tests.yml121 SQLCOMMENT
LOWsrc/mod.c1/*COMMENT
54 more matches not shown…
Self-Referential Comments9 hits · 27 pts
SeverityFileLineSnippetContext
MEDIUMtest/scripts/stress.sh599 # Create a reference index to monitor DSA usageCOMMENT
MEDIUMtest/scripts/concurrency.sh316 # Create the main indexCOMMENT
MEDIUMtest/scripts/concurrency.sh508 # Create a test table and indexCOMMENT
MEDIUMtest/scripts/concurrency.sh570 # Create a table with exactly 10 documents containing "racecondition" termCOMMENT
MEDIUMscripts/bump-version.sh83 # Create the upgrade-script stub. Authors append feature DDL asCOMMENT
MEDIUM.github/workflows/benchmark.yml216 # Create a query script that runs many iterations for profilingCOMMENT
MEDIUM.github/workflows/benchmark.yml377 # Create a temporary directory for gh-pages contentCOMMENT
MEDIUM.github/workflows/benchmark.yml408 # Create an index.html for this profileCOMMENT
MEDIUM.github/workflows/package-release.yml197 # Create a build scriptCOMMENT
Redundant / Tautological Comments18 hits · 27 pts
SeverityFileLineSnippetContext
LOWtest/scripts/recovery.sh358 # Check if we have necessary toolsCOMMENT
LOWtest/scripts/concurrency.sh102 # Check if library is readable and has correct permissionsCOMMENT
LOWtest/scripts/concurrency.sh143 # Check if port is availableCOMMENT
LOWtest/scripts/concurrency.sh157 # Check if log file exists and show contentsCOMMENT
LOWtest/scripts/concurrency.sh171 # Check if PostgreSQL is using a different log location due to our configCOMMENT
LOWtest/scripts/concurrency.sh484 # Check if too many sessions failedCOMMENT
LOWtest/scripts/concurrency.sh541 # Check if session 1 handled the drop gracefullyCOMMENT
LOWtest/scripts/hypertable.sh30# Check if TimescaleDB is availableCOMMENT
LOWtest/scripts/hypertable.sh162 # Check if CustomScan is in the plan (may or may not be depending on TimescaleDB version)COMMENT
LOWbenchmarks/run_parallel_scaling.sh27# Check if data existsCOMMENT
LOWbenchmarks/run_cranfield.sh30# Check if pg_textsearch extension is availableCOMMENT
LOWbenchmarks/run_memory_stress.sh18# Check if pg_textsearch extension is availableCOMMENT
LOW…arks/datasets/msmarco-v2/generate_benchmark_queries.sh23# Check if queries file existsCOMMENT
LOW…chmarks/datasets/msmarco/generate_benchmark_queries.sh23# Check if queries file existsCOMMENT
LOW.github/workflows/release.yml211 # Check if release existsCOMMENT
LOW.github/workflows/package-release.yml417 # Check if release exists, create if it doesn'tCOMMENT
LOW.github/workflows/ci.yml696 # Check if postgres binary contains sanitizer symbolsCOMMENT
LOW.github/workflows/sanitizer-build-and-test.yml92 # Check if postgres binary contains sanitizer symbolsCOMMENT
Hyper-Verbose Identifiers12 hits · 14 pts
SeverityFileLineSnippetContext
LOWtest/scripts/build_memory_benchmark_test.py28 def test_process_memory_uses_pss_not_shared_rss(self):CODE
LOW⚡test/scripts/build_memory_benchmark_test.py43 def test_exited_process_is_not_reported_as_zero_memory(self):CODE
LOW⚡test/scripts/build_memory_benchmark_test.py49 def test_malformed_memory_sample_is_an_error(self):CODE
LOW⚡test/scripts/build_memory_benchmark_test.py57 def test_peak_is_maximum_concurrent_sum_not_sum_of_peaks(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py73 def test_empty_measurements_are_not_published_as_zero(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py78 def test_cgroup_snapshot_preserves_limits_and_oom_events(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py95 def test_invalid_options_fail_before_creating_output(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py116 def test_small_serial_case_does_not_require_parallel_rows(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py126 def test_missing_postgres_tools_record_failure(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py144 def test_default_parallel_degree_is_not_reduced_for_small_heap(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py162 def test_success_records_metrics_and_cleans_up(self):CODE
LOWtest/scripts/build_memory_benchmark_test.py183 def test_timeout_records_failure_and_cleans_up(self):CODE
Example Usage Blocks7 hits · 11 pts
SeverityFileLineSnippetContext
LOW⚡test/scripts/replication_lib.sh287# Usage:COMMENT
LOWtest/scripts/upgrade_matrix.sh28# Usage:COMMENT
LOWbenchmarks/run_parallel_scaling.sh4# Usage:COMMENT
LOWbenchmarks/run_filtered_seed.sh14# Usage:COMMENT
LOWbenchmarks/runner/run_benchmark.sh5# Usage:COMMENT
LOWbenchmarks/datasets/msmarco-v2/profile_build.sh5# Usage:COMMENT
LOW…marks/datasets/msmarco/insert/run_concurrent_insert.sh17# Usage:COMMENT
Fake / Example Data8 hits · 10 pts
SeverityFileLineSnippetContext
LOWtest/scripts/multi_backend_reindex.sh1585 SELECT 'row ' || g || ' lorem ipsum dolor sit amet 'CODE
LOWtest/scripts/multi_backend_reindex.sh1585 SELECT 'row ' || g || ' lorem ipsum dolor sit amet 'CODE
LOWtest/scripts/multi_backend_reindex.sh1605 SELECT 'parallel row ' || g || ' lorem ipsum dolor sit amet 'CODE
LOWtest/scripts/multi_backend_reindex.sh1605 SELECT 'parallel row ' || g || ' lorem ipsum dolor sit amet 'CODE
LOW⚡test/sql/quoted_identifiers.sql14INSERT INTO qi_test1 (content) VALUES ('lorem ipsum dolor sit amet');CODE
LOW⚡test/sql/quoted_identifiers.sql14INSERT INTO qi_test1 (content) VALUES ('lorem ipsum dolor sit amet');CODE
LOW⚡test/sql/quoted_identifiers.sql16INSERT INTO qi_test1 (content) VALUES ('lorem ipsum again');CODE
LOWtest/sql/quoted_identifiers.sql66UPDATE qi_test1 SET content = 'updated lorem ipsum' WHERE id = 1;CODE
AI Slop Vocabulary2 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUMtest/scripts/replication_segment_reclaim.sh17# Uses the shared replication harness (replication_lib.sh). AssertsCOMMENT
MEDIUMtest/scripts/upgrade_matrix.sh5# For each old release, this harness builds several distinct on-diskCOMMENT
Deep Nesting1 hit · 1 pts
SeverityFileLineSnippetContext
LOWbenchmarks/run_build_memory.py237CODE