The lightweight, fault-tolerant database built on SQLite. Designed to keep your data highly available with minimal effort.
This report summarizes scanner evidence for rqlite/rqlite, a Go project with 17,893 GitHub stars. SynthScan examined 136,330 lines of code across 398 source files, recording 144 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 2.1 (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.
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.
Can maintainers explain intent, assumptions, and trade-offs? 116 finding(s).
Are imports declared and package/API names verified? 7 finding(s).
Are wrappers, guards, and repeated structures necessary? 53 finding(s).
Which changes need focused human review? 144 finding(s).
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.
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.
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.
The scanner identified 144 distinct pattern matches across 12 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/get_gh_latest.py | 4 | # Define the GitHub API URL for issues and pull requests | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 27 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 44 | # Create a node, enable automatic backups, and start it. Then | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 54 | # Create a second node, with auto-restore enabled. | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 91 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 110 | # Create a node, enable automatic backups, and start it. Then | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 120 | # Create a second node, with auto-restore enabled. | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 174 | # Create the auto-restore config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 218 | # Create the auto-restore config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 263 | # Create the auto-restore config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 277 | # Create a new node, write some data to it. | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 286 | # Create a new node, using the directory from the previous node, but check | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 319 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 336 | # Create a node, enable automatic backups, and start it. Then | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 382 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 400 | # Create a node, enable automatic backups, and start it. Then | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 441 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 457 | # Create a node, enable automatic backups, and start it. Then | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 507 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 524 | # Create a cluster with automatic backups enabled. | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 556 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 573 | # Create a cluster with automatic backups enabled. | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 608 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 625 | # Create a cluster with automatic backups enabled. | COMMENT |
| MEDIUM | system_test/e2e/auto_state_s3.py | 634 | # Create a cluster with two more followers | COMMENT |
| MEDIUM⚡ | system_test/e2e/auto_state_file.py | 23 | # Create a temporary directory for backups | COMMENT |
| MEDIUM⚡ | system_test/e2e/auto_state_file.py | 26 | # Create the auto-backup config file with timestamp enabled | COMMENT |
| MEDIUM | system_test/e2e/auto_state_file.py | 41 | # Create a node, enable automatic backups, and start it | COMMENT |
| MEDIUM | system_test/e2e/auto_state_file.py | 46 | # Create a table and insert data | COMMENT |
| MEDIUM⚡ | system_test/e2e/auto_state_file.py | 98 | # Create a temporary directory for backups | COMMENT |
| MEDIUM⚡ | system_test/e2e/auto_state_file.py | 102 | # Create the auto-backup config file with timestamp disabled | COMMENT |
| MEDIUM | system_test/e2e/auto_state_file.py | 117 | # Create a node, enable automatic backups, and start it | COMMENT |
| MEDIUM | system_test/e2e/auto_state_file.py | 122 | # Create a table and insert data | COMMENT |
| MEDIUM⚡ | system_test/e2e/auto_state_file.py | 177 | # Create a temporary directory for backups | COMMENT |
| MEDIUM⚡ | system_test/e2e/auto_state_file.py | 180 | # Create the auto-backup config file with compression | COMMENT |
| MEDIUM | system_test/e2e/auto_state_file.py | 195 | # Create a node, enable automatic backups, and start it | COMMENT |
| MEDIUM | system_test/e2e/auto_state_file.py | 200 | # Create a table and insert data | COMMENT |
| MEDIUM | system_test/e2e/joining.py | 226 | # Create a potential join target node | COMMENT |
| MEDIUM | system_test/e2e/multi_node.py | 677 | # Create a two-node cluster. | COMMENT |
| MEDIUM | system_test/e2e/auto_state_gcs.py | 26 | # Create the auto-backup config file | COMMENT |
| MEDIUM | system_test/e2e/auto_state_gcs.py | 41 | # Create a node, enable automatic backups, and start it. Then | COMMENT |
| MEDIUM | system_test/e2e/auto_state_gcs.py | 104 | # Create the auto-restore config file | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tools/package/build-packages.sh | 13 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/package/build-packages.sh | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/package/build-packages.sh | 31 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/package/build-packages.sh | 35 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/package/build-packages.sh | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tools/package/build-packages.sh | 43 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/package/build-packages.sh | 99 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/package/build-packages.sh | 101 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/package/build-packages.sh | 194 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tools/package/build-packages.sh | 196 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | system_test/e2e/gcs.py | 15 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | system_test/e2e/gcs.py | 17 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | system_test/e2e/gcs.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | system_test/e2e/gcs.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | doc.go | 1 | // The MIT License (MIT) | COMMENT |
| LOW | cmd/rqlited/gen.go | 1 | //go:generate flagforge -o config_flags.go flags.toml | COMMENT |
| LOW | testdata/chinook/db.go | 1 | // The MIT License (MIT) | COMMENT |
| LOW | snapshot/sink.go | 181 | // streaming sink, writes the snapshot metadata, and moves the temp snapshot | COMMENT |
| LOW | snapshot/store.go | 501 | // Close shuts down the reaper goroutine and waits for it to exit. | COMMENT |
| LOW | snapshot/store.go | 521 | // | COMMENT |
| LOW | snapshot/store.go | 941 | if err := <-checker.Check(); err != nil { | COMMENT |
| LOW | snapshot/observer.go | 21 | // ReapObservation events and an optional filter function. Observations | COMMENT |
| LOW | snapshot/snapshot.go | 61 | // directory name is the snapshot ID (typically derived from term, index, and a | COMMENT |
| LOW | snapshot/snapshot.go | 161 | } | COMMENT |
| LOW | snapshot/snapshot.go | 461 | if snapshot.id == id { | COMMENT |
| LOW | snapshot/snapshot.go | 481 | COMMENT | |
| LOW | snapshot/staging.go | 41 | } | COMMENT |
| LOW | snapshot/plan/plan.go | 281 | err = fmt.Errorf("unknown operation type: %s", op.Type) | COMMENT |
| LOW | snapshot/plan/executor.go | 61 | // | COMMENT |
| LOW | cluster/service.go | 381 | // unauthorizedError is the error returned to a client whose credentials | COMMENT |
| LOW | cluster/bootstrap.go | 101 | } | COMMENT |
| LOW | cdc/config.go | 81 | COMMENT | |
| LOW | cdc/service.go | 1 | // Package cdc implements Change Data Capture for rqlite. It captures row-level | COMMENT |
| LOW | cdc/service.go | 21 | // | Snapshotter |---->| | | | COMMENT |
| LOW | cdc/service.go | 41 | // | ^ ^ | COMMENT |
| LOW | cdc/service.go | 61 | // | COMMENT |
| LOW | cdc/fifo.go | 21 | // ErrQueueClosed is returned when an operation is attempted on a closed queue. | COMMENT |
| LOW | queue/queue.go | 121 | // Write queues a request, and returns a monotonically increasing | COMMENT |
| LOW | db/db.go | 1141 | // Dump writes a consistent snapshot of the database in SQL text format. | COMMENT |
| LOW | db/db_test.go | 1381 | t.Skip("skipping test on Appveyor") | COMMENT |
| LOW | db/db_common_test.go | 2541 | // and creates an index on b. The dump must contain the original values and omit | COMMENT |
| LOW | db/checkpoint_bench_test.go | 1 | // Benchmark suite for CheckpointManager and alternative Checkpointer implementations. | COMMENT |
| LOW | db/checkpoint_manager.go | 41 | COMMENT | |
| LOW | db/testdata/carray.c | 61 | void *iov_base; | COMMENT |
| LOW | db/wal/compacting_section_scanner.go | 41 | COMMENT | |
| LOW | store/store.go | 1741 | // Update our strong read term. | COMMENT |
| LOW | store/store.go | 2061 | // Database returns a copy of the underlying database. The caller MUST | COMMENT |
| LOW | store/store.go | 2481 | } | COMMENT |
| LOW | store/store.go | 2721 | s.numFullSnapshots++ | COMMENT |
| LOW | store/store.go | 2761 | s.numIncSnapshots.Add(1) | COMMENT |
| LOW | store/store.go | 2881 | // We're about to enter a point of no return. We're going to swap in the incoming | COMMENT |
| LOW | store/store_multi_test.go | 561 | } | COMMENT |
| LOW | store/file_fingerprint.go | 61 | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/get_gh_latest.py | 3 | def get_latest_issue_pr_numbers(owner, repo): | CODE |
| LOW | system_test/e2e/cdc.py | 89 | def test_multi_node_events_with_node_failure(self): | CODE |
| LOW | system_test/e2e/auto_state_s3.py | 600 | def test_no_upload_leader_change(self): | CODE |
| LOW | system_test/e2e/cdc_test_server.py | 95 | class CDCHTTPRequestHandler(BaseHTTPRequestHandler): | CODE |
| LOW | system_test/e2e/cdc_test_server.py | 302 | def get_highest_message_index(self) -> int: | CODE |
| LOW | system_test/e2e/single_node.py | 65 | def test_simple_raw_queries_unicode(self): | CODE |
| LOW | system_test/e2e/single_node.py | 81 | def test_simple_raw_queries_pretty(self): | CODE |
| LOW | system_test/e2e/single_node.py | 112 | def test_simple_parameterized_queries(self): | CODE |
| LOW | system_test/e2e/single_node.py | 133 | def test_simple_named_parameterized_queries(self): | CODE |
| LOW | system_test/e2e/single_node.py | 156 | def test_simple_parameterized_mixed_queries(self): | CODE |
| LOW | system_test/e2e/single_node.py | 172 | def test_simple_parameterized_mixed_queries_via_request(self): | CODE |
| LOW⚡ | system_test/e2e/auto_state_file.py | 17 | def test_backup_timestamp_true(self): | CODE |
| LOW⚡ | system_test/e2e/auto_state_file.py | 92 | def test_backup_timestamp_false(self): | CODE |
| LOW⚡ | system_test/e2e/auto_state_file.py | 171 | def test_backup_with_compression(self): | CODE |
| LOW | system_test/e2e/joining.py | 231 | def test_single_node_join_fails(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 61 | def test_execute_fail_restart(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 128 | def test_remove_node_via_leader(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 142 | def test_remove_node_via_follower(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 156 | def test_demote_node_via_leader(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 182 | def test_demote_node_via_follower(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 200 | def test_promote_node_via_leader(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 221 | def test_promote_node_via_follower(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 448 | def test_execute_query_forward(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 468 | def test_execute_queued_forward(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 496 | def test_execute_queued_forward_wait(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 645 | def test_execute_fail_nonvoter(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 842 | def test_cluster_leader_remove_on_shutdown(self): | CODE |
| LOW | system_test/e2e/multi_node.py | 871 | def test_cluster_follower_remove_on_shutdown(self): | CODE |
| LOW | system_test/e2e/helpers.py | 448 | def wait_for_upload_skipped_id(self, i, timeout=TIMEOUT): | CODE |
| LOW | http/console/static/js/app.js | 175 | function updateFreshnessVisibility() { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | system_test/e2e/cdc_test_server.py | 263 | except: | CODE |
| HIGH | system_test/e2e/cdc_test_server.py | 267 | except: | CODE |
| HIGH | system_test/e2e/helpers.py | 363 | except (KeyError, requests.exceptions.ConnectionError): | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | snapshot/testdata/db-and-wals/create-wals.py | 3 | CODE | |
| LOW | system_test/e2e/cdc.py | 9 | CODE | |
| LOW | system_test/e2e/auto_clustering.py | 12 | CODE | |
| LOW | system_test/e2e/auto_clustering.py | 12 | CODE | |
| LOW | system_test/e2e/gcs.py | 9 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_test/e2e/gcs.py | 64 | except Exception as exc: | CODE |
| LOW | system_test/e2e/cdc_test_server.py | 120 | except Exception: | CODE |
| LOW | system_test/e2e/s3.py | 49 | except Exception as e: | CODE |
| MEDIUM | system_test/e2e/s3.py | 50 | print(f"Error uploading file '{file_path}' to '{bucket_name}': {e}") | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_test/e2e/helpers.py | 94 | CODE | |
| LOW | system_test/e2e/helpers.py | 187 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | db/testdata/text.go | 3 | const Lorum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam ultricies turpis nisi, quis egestas enim sce | CODE |
| LOW | db/testdata/text.go | 3 | const Lorum = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nam ultricies turpis nisi, quis egestas enim sce | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/get_gh_latest.py | 25 | # Example usage | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_test/e2e/cdc_test_server.py | 103 | # Check if we should simulate a failure | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | system_test/e2e/cdc_test_server.py | 98 | CODE |