AI Slop Code Risk Monitor

jeremyevans/rodauth

SlopCodeMonitor badge for jeremyevans/rodauth Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

Ruby's Most Advanced Authentication Framework

1.8 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for jeremyevans/rodauth, a Ruby project with 1,945 GitHub stars. SynthScan examined 42,243 lines of code across 198 source files, recording 71 pattern matches distributed across 2 syntactic categories. The legacy adjusted pattern signal is 1.8 (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.

1.8
Adjusted Signal
1.8
Raw Pattern Score
100%
Time Factor
2026-10-27
Last Push
1.9K
Stars
Ruby
Language
42.2K
Lines of Code
198
Files
71
Pattern Hits
2026-10-31
Scan Date
0.00
HC Hit Rate

Risk Review · Payload v1

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.

Cognitive Ownership Risk 8.4/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.5/100 · LOW

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

Agent Over-Engineering Ratio 8.4/100 · LOW

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

PR Review Velocity Impact 8.1/100 · LOW

Which changes need focused human review? 71 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 0LOW 71

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 71 distinct pattern matches across 2 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.

Hyper-Verbose Identifiers67 hits · 74 pts
SeverityFileLineSnippetContext
LOWspec/spec_helper.rb474 def jwt_refresh_validate_login(res)CODE
LOWspec/http_basic_auth_spec.rb19 def newline_basic_auth_json_request(opts={})CODE
LOWlib/rodauth.rb80 def def_configuration_methods(feature)CODE
LOWlib/rodauth.rb209 def configuration_module_eval(&block)CODE
LOWlib/rodauth/features/base.rb548 def over_max_bytesize_param_value(key, value)CODE
LOWlib/rodauth/features/base.rb562 def null_byte_parameter_value(key, value)CODE
LOWlib/rodauth/features/base.rb623 def convert_response_header_key(key)CODE
LOWlib/rodauth/features/base.rb669 def missing_recommended_configuration(msg)CODE
LOWlib/rodauth/features/base.rb718 def convert_token_id_to_integer(id)CODE
LOWlib/rodauth/features/base.rb762 def normalize_session_or_flash_key(key)CODE
LOW⚡lib/rodauth/features/base.rb783 def set_redirect_error_status(status)CODE
LOW⚡lib/rodauth/features/base.rb786 def set_response_error_status(status)CODE
LOW⚡lib/rodauth/features/base.rb790 def set_response_error_reason_status(reason, status)CODE
LOWlib/rodauth/features/base.rb904 def compute_raw_hmac_with_secret(data, secret)CODE
LOWlib/rodauth/features/base.rb959 def retry_on_uniqueness_violation(&block)CODE
LOWlib/rodauth/features/base.rb1019 def set_session_return_to_path(session_key, path=request.fullpath)CODE
LOWlib/rodauth/features/jwt_refresh.rb96 def account_from_refresh_token(token)CODE
LOWlib/rodauth/features/jwt_refresh.rb124 def _account_from_refresh_token(token)CODE
LOWlib/rodauth/features/jwt_refresh.rb140 def _account_refresh_token_split(token)CODE
LOW⚡lib/rodauth/features/jwt_refresh.rb182 def jwt_refresh_token_account_ds(account_id)CODE
LOW⚡lib/rodauth/features/jwt_refresh.rb186 def jwt_refresh_token_account_token_ds(account_id, token_id)CODE
LOW⚡lib/rodauth/features/jwt_refresh.rb195 def remove_jwt_refresh_token_key(token)CODE
LOWlib/rodauth/features/jwt_refresh.rb211 def set_jwt_refresh_token_hmac_session_key(token)CODE
LOWlib/rodauth/features/json.rb236 def set_redirect_error_status(status)CODE
LOWlib/rodauth/features/json.rb242 def set_response_error_status(status)CODE
LOWlib/rodauth/features/disallow_password_reuse.rb27 def add_previous_password_hash(hash)CODE
LOWlib/rodauth/features/verify_account.rb199 def account_from_verify_account_key(key)CODE
LOWlib/rodauth/features/verify_account.rb319 def _account_from_verify_account_key(token)CODE
LOWlib/rodauth/features/reset_password.rb183 def account_from_reset_password_key(key)CODE
LOWlib/rodauth/features/reset_password.rb260 def _account_from_reset_password_key(token)CODE
LOWlib/rodauth/features/password_expiration.rb45 def account_from_reset_password_key(key)CODE
LOWlib/rodauth/features/audit_logging.rb58 def serialize_audit_log_metadata(metadata)CODE
LOWlib/rodauth/features/audit_logging.rb62 def audit_log_message_default(action)CODE
LOW⚡lib/rodauth/features/verify_login_change.rb124 def account_from_verify_login_change_key(key)CODE
LOW⚡lib/rodauth/features/verify_login_change.rb128 def send_verify_login_change_email(login)CODE
LOW⚡lib/rodauth/features/verify_login_change.rb136 def get_verify_login_change_login_and_key(id)CODE
LOWlib/rodauth/features/verify_login_change.rb182 def create_verify_login_change_key(login)CODE
LOWlib/rodauth/features/verify_login_change.rb198 def verify_login_change_key_insert_hash(login)CODE
LOWlib/rodauth/features/verify_login_change.rb204 def create_verify_login_change_email(login)CODE
LOWlib/rodauth/features/verify_login_change.rb216 def _account_from_verify_login_change_key(token)CODE
LOWlib/rodauth/features/webauthn.rb439 def webauthn_form_submission_call(meth, arg)CODE
LOWlib/rodauth/features/webauthn.rb443 def _override_webauthn_credential_response_verify(webauthn_credential)CODE
LOWlib/rodauth/features/webauthn.rb456 def webauthn_form_submission_call(meth, arg)CODE
LOWlib/rodauth/features/webauthn.rb460 def _override_webauthn_credential_response_verify(webauthn_credential)CODE
LOWlib/rodauth/features/active_sessions.rb79 def handle_duplicate_active_session_id(_e)CODE
LOWlib/rodauth/features/active_sessions.rb102 def remove_all_active_sessions_except_for(session_id)CODE
LOWlib/rodauth/features/argon2.rb70 def extract_password_hash_cost(hash)CODE
LOWlib/rodauth/features/argon2.rb88 def extract_password_hash_cost(hash)CODE
LOWlib/rodauth/features/two_factor_base.rb149 def require_two_factor_not_authenticated(auth_type = nil)CODE
LOWlib/rodauth/features/two_factor_base.rb256 def two_factor_remove_session(type)CODE
LOWlib/rodauth/features/two_factor_base.rb264 def two_factor_update_session(auth_type)CODE
LOWlib/rodauth/features/lockout.rb175 def _setup_account_lockouts_hash(account_id, key)CODE
LOW…b/rodauth/features/login_password_requirements_base.rb132 def set_password_requirement_error_message(reason, message)CODE
LOW…b/rodauth/features/login_password_requirements_base.rb153 def set_login_requirement_error_message(reason, message)CODE
LOW…b/rodauth/features/login_password_requirements_base.rb233 def extract_password_hash_cost(hash)CODE
LOWlib/rodauth/features/internal_request.rb193 def _set_internal_request_return_value(value)CODE
LOWlib/rodauth/features/internal_request.rb198 def _return_from_internal_request(value)CODE
LOWlib/rodauth/features/internal_request.rb225 def _handle_internal_request_eval(_)CODE
LOWlib/rodauth/features/internal_request.rb230 def _handle_account_id_for_login(_)CODE
LOW⚡lib/rodauth/features/internal_request.rb255 def _handle_account_id_for_remember_key(request)CODE
7 more matches not shown…
Fake / Example Data4 hits · 4 pts
SeverityFileLineSnippetContext
LOWspec/rodauth_spec.rb665 @app.rodauth.create_account(login: "user@example.com", password: "secret")CODE
LOWspec/rodauth_spec.rb666 @app.rodauth.account_exists?(login: "user@example.com").must_equal trueCODE
LOWspec/close_account_spec.rb95 account_ds.update(:email => 'foo@bar.com', :status_id=>3)CODE
LOWspec/close_account_spec.rb116 DB[:accounts].select_map(:email).must_equal ['foo@bar.com']CODE