AI Slop Code RIsk Monitor

gojue/ecapture

Capture SSL/TLS plaintext with eBPF—no MITM proxy or custom CA installation. Supports Linux and Android on x86_64 and arm64.

8.7 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for gojue/ecapture, a C project with 15,492 GitHub stars. SynthScan examined 61,532 lines of code across 354 source files, recording 444 pattern matches distributed across 6 syntactic categories. The legacy adjusted pattern signal is 8.7 (Moderate 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.

8.7
Adjusted Signal
8.7
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
15.5K
Stars
C
Language
61.5K
Lines of Code
354
Files
444
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 30.4/100 · MEDIUM

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

Hallucinated Dependency & Supply Chain Risk 0.0/100 · LOW

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

Agent Over-Engineering Ratio 6.9/100 · LOW

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

PR Review Velocity Impact 33.5/100 · MEDIUM

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

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.

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 29LOW 415

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 444 distinct pattern matches across 6 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.

Over-Commented Block370 hits · 362 pts
SeverityFileLineSnippetContext
LOW.golangci.yml1# This configuration file is not a recommendation.COMMENT
LOWkern/boringssl_na_kern.c1#ifndef ECAPTURE_BORINGSSL_NA_KERN_HCOMMENT
LOWkern/boringssl_na_kern.c21COMMENT
LOWkern/boringssl_na_kern.c41#define SSL_CIPHER_ST_ID 0x10COMMENT
LOWkern/boringssl_na_kern.c61// bssl::SSL_HANDSHAKE->hintsCOMMENT
LOWkern/gnutls_3_7_0_kern.c1#ifndef ECAPTURE_GNUTLS_3_7_0_KERN_HCOMMENT
LOWkern/gnutls_3_7_0_kern.c21// gnutls_session_int->key.proto.tls13.e_ckeyCOMMENT
LOWkern/openssl_untag.h1// Copyright 2026 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/gnutls_3_8_7_kern.c1#ifndef ECAPTURE_GNUTLS_3_8_7_KERN_HCOMMENT
LOWkern/gnutls_3_8_7_kern.c21// gnutls_session_int->key.proto.tls13.e_ckeyCOMMENT
LOWkern/openssl_3_4_0_kern.c1#ifndef ECAPTURE_OPENSSL_3_4_0_KERN_HCOMMENT
LOWkern/openssl_3_4_0_kern.c21COMMENT
LOWkern/openssl_3_4_0_kern.c41#define SSL_CIPHER_ST_ID 0x18COMMENT
LOWkern/openssl_3_4_0_kern.c61// bio_st->numCOMMENT
LOWkern/openssl_3_5_0_kern.c1#ifndef ECAPTURE_OPENSSL_3_5_0_KERN_HCOMMENT
LOWkern/openssl_3_5_0_kern.c21COMMENT
LOWkern/openssl_3_5_0_kern.c41#define SSL_CIPHER_ST_ID 0x18COMMENT
LOWkern/openssl_3_5_0_kern.c61// bio_st->numCOMMENT
LOWkern/openssl_masterkey_3.2.h1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/openssl_3_2_4_kern.c1#ifndef ECAPTURE_OPENSSL_3_2_4_KERN_HCOMMENT
LOWkern/openssl_3_2_4_kern.c21COMMENT
LOWkern/openssl_3_2_4_kern.c41#define SSL_CIPHER_ST_ID 0x18COMMENT
LOWkern/openssl_3_2_4_kern.c61// bio_st->numCOMMENT
LOWkern/tc.h1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/boringssl_a_17_kern.c1#ifndef ECAPTURE_BORINGSSL_A_17_KERN_HCOMMENT
LOWkern/boringssl_a_17_kern.c21COMMENT
LOWkern/boringssl_a_17_kern.c41// bio_method_st->typeCOMMENT
LOWkern/boringssl_a_17_kern.c61// boringssl_masterkey.h to read the TLS version before the 1.2/1.3 branch.COMMENT
LOWkern/boringssl_a_17_kern.c81COMMENT
LOWkern/boringssl_a_17_kern.c101#include "boringssl_masterkey.h"COMMENT
LOWkern/openssl_masterkey.h1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/bash_kern.c1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/boringssl_a_15_kern.c1#ifndef ECAPTURE_BORINGSSL_A_15_KERN_HCOMMENT
LOWkern/boringssl_a_15_kern.c21COMMENT
LOWkern/boringssl_a_15_kern.c41#define SSL_CIPHER_ST_ID 0x10COMMENT
LOWkern/boringssl_a_15_kern.c61COMMENT
LOWkern/boringssl_a_15_kern.c81#define BSSL__SSL_HANDSHAKE_TLS13_STATE 0x18COMMENT
LOWkern/gnutls_3_6_13_kern.c1#ifndef ECAPTURE_GNUTLS_3_6_13_KERN_HCOMMENT
LOWkern/gnutls_3_6_13_kern.c21// gnutls_session_int->key.proto.tls13.e_ckeyCOMMENT
LOWkern/postgres_kern.c1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/openssl_3_3_2_kern.c1#ifndef ECAPTURE_OPENSSL_3_3_2_KERN_HCOMMENT
LOWkern/openssl_3_3_2_kern.c21COMMENT
LOWkern/openssl_3_3_2_kern.c41#define SSL_CIPHER_ST_ID 0x18COMMENT
LOWkern/openssl_3_3_2_kern.c61// bio_st->numCOMMENT
LOWkern/gotls_kern.c1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/gotls_kern.c141 int ret = bpf_probe_read_user(&fd, sizeof(fd), (void *)((u64)netfd_ptr + 16));COMMENT
LOWkern/openssl.h1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/ecapture.h1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/ecapture.h41 * supported by CLANG.COMMENT
LOWkern/ecapture.h61#include <bpf/bpf_helpers.h>COMMENT
LOWkern/openssl_1_1_0a_kern.c1#ifndef ECAPTURE_OPENSSL_1_1_0_A_KERN_HCOMMENT
LOWkern/openssl_1_1_0a_kern.c21COMMENT
LOWkern/openssl_1_1_0a_kern.c41#define BIO_ST_NUM 0x28COMMENT
LOWkern/nspr_kern.c1// Copyright 2022 CFC4N <cfc4n.cs@gmail.com>. All Rights Reserved.COMMENT
LOWkern/openssl_1_1_1a_kern.c1#ifndef ECAPTURE_OPENSSL_1_1_1_A_KERN_HCOMMENT
LOWkern/openssl_1_1_1a_kern.c21COMMENT
LOWkern/openssl_1_1_1a_kern.c41#define SSL_ST_EARLY_SECRET 0x134COMMENT
LOWkern/openssl_1_1_1a_kern.c61// bio_st->methodCOMMENT
LOWkern/openssl_3_0_12_kern.c1#ifndef ECAPTURE_OPENSSL_3_0_12_KERN_HCOMMENT
LOWkern/openssl_3_0_12_kern.c21COMMENT
310 more matches not shown…
Decorative Section Separators26 hits · 88 pts
SeverityFileLineSnippetContext
MEDIUMkern/boringssl_const.h11// ── Android ≤ 15 (TLS 1.3 secrets are private raw arrays) ─────────────────COMMENT
MEDIUMkern/boringssl_const.h31// ────────────────────────────────────────────────────────────────────────────COMMENT
MEDIUMkern/boringssl_const.h34// ── Android 16+: three root values differ from older versions ───────────────COMMENT
MEDIUMkern/boringssl_const.h46// ── Android ≤ 15: original layout ───────────────────────────────────────────COMMENT
MEDIUMkern/boringssl_const.h59// ── Downstream offsets: identical formula for all versions ──────────────────COMMENT
MEDIUMtest/e2e/common.sh271# ============================================================================COMMENT
MEDIUMtest/e2e/common.sh273# ============================================================================COMMENT
MEDIUMinternal/probe/gotls/event_test.go79// ── DecodeFromBytes ──────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go271// ── tuple() ─────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go316// ── String() / StringHex() ───────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go406// ── UUID() ───────────────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go454// ── Clone / Type / Validate ─────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go511// ── helper functions ─────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go555// ── IsRead / IsWrite ─────────────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go575// ── GetData / GetDataLen ─────────────────────────────────────────────────────COMMENT
MEDIUMinternal/probe/gotls/event_test.go595// ── DecodeFromBytes round-trip ───────────────────────────────────────────────COMMENT
MEDIUMutils/boringssl-offset.c43// ─── Type-trait probes ───────────────────────────────────────────────────────COMMENT
MEDIUMutils/boringssl-offset.c73// ─── Output helpers ──────────────────────────────────────────────────────────COMMENT
MEDIUMutils/boringssl-offset.c90// ─── Per-field emitters (partial template specialisation) ────────────────────COMMENT
MEDIUM⚡utils/boringssl-offset.c196// ─── Main ────────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡utils/boringssl-offset.c202 // ── ssl_st ────────────────────────────────────────────────────────────────COMMENT
MEDIUM⚡utils/boringssl-offset.c209 // ── ssl_session_st ────────────────────────────────────────────────────────COMMENT
MEDIUM⚡utils/boringssl-offset.c214 // ── bio / cipher ──────────────────────────────────────────────────────────COMMENT
MEDIUM⚡utils/boringssl-offset.c220 // ── bssl::SSL3_STATE ──────────────────────────────────────────────────────COMMENT
MEDIUM⚡utils/boringssl-offset.c228 // ── ssl_st role bit (client vs server) ────────────────────────────────────COMMENT
MEDIUM⚡utils/boringssl-offset.c237 // ── bssl::SSL_HANDSHAKE ───────────────────────────────────────────────────COMMENT
Redundant / Tautological Comments26 hits · 44 pts
SeverityFileLineSnippetContext
LOWtest/e2e/common.sh31# Check if running as rootCOMMENT
LOWtest/e2e/common.sh61# Check if command existsCOMMENT
LOWtest/e2e/common.sh216# Check if a binary is linked against a specific libraryCOMMENT
LOWtest/e2e/mysql_advanced_test.sh41# Check if MySQL is availableCOMMENT
LOWtest/e2e/bash_e2e_test.sh62 # Check if bash has readlineCOMMENT
LOWtest/e2e/bash_e2e_test.sh88 # Check if still runningCOMMENT
LOWtest/e2e/bash_e2e_test.sh139 # Check if we captured some bash commandsCOMMENT
LOW⚡test/e2e/mysql_e2e_test.sh49# Check if MySQL is availableCOMMENT
LOW⚡test/e2e/mysql_e2e_test.sh53 # Check if mysql client is availableCOMMENT
LOW⚡test/e2e/mysql_e2e_test.sh59 # Check if MySQL server is runningCOMMENT
LOWtest/e2e/mysql_e2e_test.sh79 # Check if MySQL is availableCOMMENT
LOWtest/e2e/mysql_e2e_test.sh120 # Check if still runningCOMMENT
LOWtest/e2e/mysql_e2e_test.sh168 # Check if we captured some MySQL activityCOMMENT
LOWtest/e2e/zsh_e2e_test.sh58 # Check if zsh is installedCOMMENT
LOWtest/e2e/zsh_e2e_test.sh88 # Check if still runningCOMMENT
LOWtest/e2e/zsh_e2e_test.sh136 # Check if we captured some zsh commandsCOMMENT
LOWtest/e2e/edge_cases_test.sh184 # Check if process terminated gracefullyCOMMENT
LOWtest/e2e/edge_cases_test.sh219 # Check if process terminated gracefullyCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh255 # Check if client is running (meaning it connected and is receiving)COMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh365 # Check if any test failedCOMMENT
LOW⚡test/e2e/postgres_e2e_test.sh49# Check if PostgreSQL is availableCOMMENT
LOW⚡test/e2e/postgres_e2e_test.sh53 # Check if psql client is availableCOMMENT
LOW⚡test/e2e/postgres_e2e_test.sh59 # Check if PostgreSQL server is runningCOMMENT
LOWtest/e2e/postgres_e2e_test.sh79 # Check if PostgreSQL is availableCOMMENT
LOWtest/e2e/postgres_e2e_test.sh119 # Check if still runningCOMMENT
LOWtest/e2e/postgres_e2e_test.sh167 # Check if we captured some PostgreSQL activityCOMMENT
Structural Annotation Overuse12 hits · 20 pts
SeverityFileLineSnippetContext
LOW⚡kern/gotls_kern.c115 // Step 1: tls.Conn.conn is the first field (offset 0), it's an interface (16 bytes: type ptr + data ptr)COMMENT
LOW⚡kern/gotls_kern.c123 // Step 2: net.TCPConn.conn (embedded field at offset 0)COMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh96 # Step 1: Start eCapture with ecaptureQ WebSocket serverCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh113 # Step 2: Connect ecaptureq_clientCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh132 # Step 3: Generate TLS traffic via curlCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh144 # Step 4: Stop processes gracefullyCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh162 # Step 5: Verify resultsCOMMENT
LOWinternal/README.md106### Step 1: Define ConfigurationCOMMENT
LOWinternal/README.md123### Step 2: Define EventsCOMMENT
LOWinternal/README.md142### Step 3: Implement ProbeCOMMENT
LOWinternal/README.md169### Step 4: Register with FactoryCOMMENT
LOWinternal/README.md179### Step 5: Add TestsCOMMENT
Verbosity Indicators7 hits · 12 pts
SeverityFileLineSnippetContext
LOW⚡kern/gotls_kern.c115 // Step 1: tls.Conn.conn is the first field (offset 0), it's an interface (16 bytes: type ptr + data ptr)COMMENT
LOW⚡kern/gotls_kern.c123 // Step 2: net.TCPConn.conn (embedded field at offset 0)COMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh96 # Step 1: Start eCapture with ecaptureQ WebSocket serverCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh113 # Step 2: Connect ecaptureq_clientCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh132 # Step 3: Generate TLS traffic via curlCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh144 # Step 4: Stop processes gracefullyCOMMENT
LOWtest/e2e/ecaptureq_e2e_test.sh162 # Step 5: Verify resultsCOMMENT
AI Slop Vocabulary3 hits · 9 pts
SeverityFileLineSnippetContext
MEDIUMtest/e2e/linux/common.sh2# Linux-only E2E harness. Supported environment: GitHub Actions Ubuntu 22.04+.COMMENT
MEDIUMtest/e2e/android/common_android.sh2# Android 13+ E2E harness for rooted devices/emulators.COMMENT
MEDIUMutils/boringssl-offset.c151// hand-maintained; the *_LEN offset is (next vector's offset) - 1, robust to any padding.COMMENT