AI Slop Code RIsk Monitor

loomio/loomio

Loomio is a collaborative decision-making tool

5.4 Moderate pattern signal View on GitHub

Maintenance and Governance Review

This report summarizes scanner evidence for loomio/loomio, a Ruby project with 2,610 GitHub stars. SynthScan examined 454,521 lines of code across 4255 source files, recording 824 pattern matches distributed across 14 syntactic categories. The legacy adjusted pattern signal is 5.4 (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.

5.4
Adjusted Signal
5.4
Raw Pattern Score
100%
Time Factor
2026-10-09
Last Push
2.6K
Stars
Ruby
Language
454.5K
Lines of Code
4.3K
Files
824
Pattern Hits
2026-10-12
Scan Date
0.10
HC Hit Rate

Risk Review · v3

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

Cognitive Ownership Risk 3.7/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 20.4/100 · LOW

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

Agent Over-Engineering Ratio 1.9/100 · LOW

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

PR Review Velocity Impact 29.2/100 · MEDIUM

Which changes need focused human review? 824 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 5HIGH 438MEDIUM 41LOW 340

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 824 distinct pattern matches across 14 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.

Magic Placeholder Names437 hits · 1912 pts
SeverityFileLineSnippetContext
HIGH⚡app/views/profile/api_access.rb71 code(class: "api-access__example") { "Authorization: Bearer YOUR_API_KEY" }CODE
HIGH⚡app/views/profile/api_access.rb77 code { "?api_key=YOUR_API_KEY" }CODE
HIGH⚡app/views/profile/api_access.rb79 code { "Authorization: Bearer YOUR_API_KEY" }CODE
HIGH⚡docs/he/user_manual/integrations/api/user-api.md166בעבר ניתן היה להעביר את מפתח ה־API כפרמטר `api_key` בכתובת URL. בקשות המשתמשות ב־`?api_key=YOUR_API_KEY` אינן פועלות עודCODE
HIGH⚡docs/he/user_manual/integrations/api/user-api.md169Authorization: Bearer YOUR_API_KEYCODE
HIGH⚡docs/he/user_manual/integrations/api/user-api.md172הדוגמאות משתמשות ב־`YOUR_API_KEY`, במזהה הקבוצה `123` ובכתובת `https://www.loomio.com/`. יש להחליף אותם במפתח ה־API, במזCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md183curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1'CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md238curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groupsCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md276curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/123CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md277curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/example-groupCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md310curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/chatbots?group_id=123'CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md334 -H 'Authorization: Bearer YOUR_API_KEY' \CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md360 -H 'Authorization: Bearer YOUR_API_KEY' \CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md376 -H 'Authorization: Bearer YOUR_API_KEY' \CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md389curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md483curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=DiscussCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md519curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/reports?section=users&group_scope=custom&groCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md575curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md591curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md620curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123'CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md645curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0'CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md701curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated thread tCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md717curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md743curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"discussion_id": 123, "bodCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md768curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"body":"updated comment",CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md784curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md825curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md841curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md870curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123'CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md902curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated poll titCODE
HIGHdocs/he/user_manual/integrations/api/user-api.md918curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/polls/123CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md942curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/memberships?group_id=123'CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md968curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "emails":CODE
HIGHdocs/he/user_manual/integrations/api/user-api.md974curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "emails":CODE
HIGH⚡docs/be/user_manual/integrations/api/user-api.md166Раней ключ API прымаўся як параметр URL `api_key`. Запыты з `?api_key=YOUR_API_KEY` больш не працуюць. Замест гэтага выкCODE
HIGH⚡docs/be/user_manual/integrations/api/user-api.md169Authorization: Bearer YOUR_API_KEYCODE
HIGH⚡docs/be/user_manual/integrations/api/user-api.md172У прыкладах выкарыстоўваюцца `YOUR_API_KEY`, ідэнтыфікатар групы `123` і `https://www.loomio.com/`. Замяніце іх сваім клCODE
HIGHdocs/be/user_manual/integrations/api/user-api.md183curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1'CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md238curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groupsCODE
HIGHdocs/be/user_manual/integrations/api/user-api.md276curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/123CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md277curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/example-groupCODE
HIGHdocs/be/user_manual/integrations/api/user-api.md310curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/chatbots?group_id=123'CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md334 -H 'Authorization: Bearer YOUR_API_KEY' \CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md360 -H 'Authorization: Bearer YOUR_API_KEY' \CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md376 -H 'Authorization: Bearer YOUR_API_KEY' \CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md389curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md483curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=DiscussCODE
HIGHdocs/be/user_manual/integrations/api/user-api.md519curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/reports?section=users&group_scope=custom&groCODE
HIGHdocs/be/user_manual/integrations/api/user-api.md575curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md591curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md620curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123'CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md645curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0'CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md701curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated thread tCODE
HIGHdocs/be/user_manual/integrations/api/user-api.md717curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md743curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"discussion_id": 123, "bodCODE
HIGHdocs/be/user_manual/integrations/api/user-api.md768curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"body":"updated comment",CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md784curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md825curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":"CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md841curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123CODE
HIGHdocs/be/user_manual/integrations/api/user-api.md870curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123'CODE
377 more matches not shown…
Hyper-Verbose Identifiers111 hits · 119 pts
SeverityFileLineSnippetContext
LOWapp/mailers/group_mailer.rb19 def expired_trial_deletion_warning(group_id, recipient_id)CODE
LOWapp/mailers/notification_mailer.rb199 def reply_to_address_with_group_name(model:, user:)CODE
LOWapp/models/poll.rb445 def member_vote_weights_by_user_id(user_ids)CODE
LOWapp/models/concerns/searchable.rb14 def pg_search_insert_statement(id: nil, author_id: nil)CODE
LOWapp/models/concerns/has_rich_text.rb140 def assign_attributes_and_files(params)CODE
LOWapp/models/concerns/has_rich_text.rb153 def attach_inline_image_files(image_file_attachables)CODE
LOWapp/models/concerns/has_rich_text.rb197 def add_required_link_attributes(text)CODE
LOWapp/mailboxes/received_email_mailbox.rb40 def attach_files_and_inline_images(email)CODE
LOWapp/controllers/api/v1/stances_controller.rb163 def live_update_outdated_stances(poll)CODE
LOWapp/controllers/api/v1/poll_templates_controller.rb162 def find_template_for_author_or_admin(scope = nil)CODE
LOWapp/controllers/api/v1/snorlax_base.rb285 def respond_with_standard_error(error, status)CODE
LOWapp/controllers/api/v1/snorlax_base.rb304 def respond_with_access_denied(error)CODE
LOW…/controllers/api/v1/discussion_templates_controller.rb148 def find_template_for_author_or_admin(scope = nil)CODE
LOWapp/controllers/api/v1/registrations_controller.rb154 def restore_pending_invitation(invitation)CODE
LOWapp/controllers/api/v1/mobile/activity_controller.rb66 def bounded_integer_parameter(name, default: nil, maximum: nil)CODE
LOWapp/controllers/dev/polls_controller.rb309 def vote_table_matrix_choices(poll, index)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb1441 def create_manual_oatmilk_discussion_template(group:, coordinator:)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb1474 def create_manual_oatmilk_poll_template_copy(source:, group:, coordinator:)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb1497 def manual_oatmilk_poll_options_attributes(template)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb1503 def manual_oatmilk_proposal_title(template_key)CODE
LOW⚡app/controllers/dev/scenarios/oatmilk_cooperative.rb1518 def manual_oatmilk_poll_type_outcome(poll_type)CODE
LOW⚡app/controllers/dev/scenarios/oatmilk_cooperative.rb1527 def manual_oatmilk_proposal_outcome(template_key)CODE
LOW⚡app/controllers/dev/scenarios/oatmilk_cooperative.rb1536 def manual_oatmilk_proposal_details(_template_key)CODE
LOW⚡app/controllers/dev/scenarios/oatmilk_cooperative.rb1540 def manual_oatmilk_proposal_reason(_template_key, index)CODE
LOW⚡app/controllers/dev/scenarios/oatmilk_cooperative.rb1548 def create_manual_oatmilk_advice_template(group:, coordinator:)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb1572 def create_manual_oatmilk_poll_template(group:, coordinator:)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb1795 def mark_manual_oatmilk_delegates(group)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb1806 def add_manual_oatmilk_participation_report_data(group:, coordinator:)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb2076 def create_manual_oatmilk_member(name:, email:, avatar_filename: nil)CODE
LOWapp/controllers/dev/scenarios/oatmilk_cooperative.rb2097 def deliver_manual_oatmilk_notification_email(kind:, subject:, actor:, recipient:)CODE
LOWapp/controllers/concerns/identity_authentication.rb6 def finish_identity_authentication(identity)CODE
LOWapp/views/digest_mailer/digest.rb63 def mark_digest_as_read_url_for(user, format: nil)CODE
LOWapp/views/chatbot/markdown/concerns.rb329 def render_discussion_undecided(itemable)CODE
LOWapp/views/chatbot/markdown/concerns.rb342 def render_meeting_stance_choices(stance)CODE
LOWapp/helpers/current_user_helper.rb77 def authentication_return_path(fallback: nil)CODE
LOWapp/helpers/current_user_helper.rb153 def record_successful_sign_in(user)CODE
LOWapp/helpers/email_helper.rb92 def mark_notification_as_read_pixel_src(notification_id, recipient:)CODE
LOWapp/helpers/email_helper.rb118 def mark_digest_as_read_url_for(user, time_start:, time_finish:, format: nil)CODE
LOWapp/helpers/pending_actions_helper.rb37 def consume_pending_membership(user)CODE
LOWapp/helpers/pending_actions_helper.rb50 def consume_pending_topic_reader(user)CODE
LOWapp/helpers/poll_helper.rb15 def dot_vote_stance_choice_percentage_for(stance, stance_choice)CODE
LOWapp/helpers/poll_helper.rb24 def score_stance_choice_percentage_for(stance, stance_choice)CODE
LOWapp/helpers/pretty_url_helper.rb97 def no_slug_topic_url_options(controller, key, options)CODE
LOW⚡app/helpers/dev/scenarios_helper.rb129 def poll_user_mentioned_scenario(params)CODE
LOW⚡app/helpers/dev/scenarios_helper.rb179 def poll_closing_soon_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb4 def saved_discussion_with_created_topic_item(group:)CODE
LOWapp/helpers/dev/scenarios_helper.rb46 def poll_vote_conversation_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb63 def poll_none_of_the_above_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb102 def poll_legacy_anonymous_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb149 def poll_stance_created_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb247 def poll_closing_soon_author_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb253 def poll_closing_soon_with_vote_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb288 def poll_expired_author_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb313 def poll_outcome_created_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb348 def poll_outcome_review_due_scenario(params)CODE
LOWapp/helpers/dev/scenarios_helper.rb450 def alternative_poll_option_selection(poll_option_ids, i)CODE
LOW⚡app/helpers/dev/fake_data_helper.rb127 def fake_new_discussion_event(discussion = fake_discussion)CODE
LOW⚡app/helpers/dev/fake_data_helper.rb133 def fake_poll_created_topic_item(poll = fake_poll)CODE
LOW⚡app/helpers/dev/fake_data_helper.rb139 def fake_stance_created_topic_item(stance = fake_stance)CODE
LOW⚡app/helpers/dev/fake_data_helper.rb145 def fake_outcome_created_topic_item(outcome = fake_outcome)CODE
51 more matches not shown…
Fake / Example Data103 hits · 106 pts
SeverityFileLineSnippetContext
LOWapp/controllers/dev/polls_controller.rb84 admin = saved fake_userCODE
LOWapp/controllers/dev/polls_controller.rb91 user = saved fake_user(email: 'poll-member@example.com')CODE
LOWapp/controllers/dev/polls_controller.rb148 voters = Array.new(params[:voter_count].to_i.clamp(0, 25)) { saved(fake_user) }CODE
LOWapp/controllers/dev/polls_controller.rb172 voter = saved(fake_user(name: "Voter #{format('%02d', index + 1)}", email: "voter#{index + 1}@example.com"))CODE
LOWapp/controllers/dev/polls_controller.rb208 user = fake_userCODE
LOWapp/controllers/dev/polls_controller.rb227 voter = saved(fake_user(name: "Matrix voter #{format('%02d', index + 1)}"))CODE
LOWapp/controllers/dev/scenarios/discussion.rb16 member = saved(fake_user(name: "Thread member #{format('%02d', index + 1)}", email: "threadmember#{index + 1}@examCODE
LOWapp/controllers/dev/scenarios/group.rb236 create_subgroup.add_member! fake_user name: 'only in subgroup'CODE
LOWapp/controllers/dev/scenarios/membership_request.rb7 MembershipRequestService.create(membership_request: request, actor: saved(fake_user))CODE
LOWapp/controllers/dev/scenarios/auth.rb54 user = saved fake_user(password: nil, name: 'fake user')CODE
LOWapp/controllers/dev/scenarios/auth.rb70 admin = saved fake_userCODE
LOWapp/controllers/dev/scenarios/auth.rb72 user = saved fake_userCODE
LOW⚡app/helpers/dev/scenarios_helper.rb131 voter = saved(fake_user)CODE
LOW⚡app/helpers/dev/scenarios_helper.rb132 group_member = saved(fake_user)CODE
LOW⚡app/helpers/dev/scenarios_helper.rb170 voter = saved(fake_user)CODE
LOW⚡app/helpers/dev/scenarios_helper.rb181 non_voter = saved(fake_user)CODE
LOWapp/helpers/dev/scenarios_helper.rb16 user = saved(fake_user(time_zone: "America/New_York", auto_translate: params[:auto_translate].present?))CODE
LOWapp/helpers/dev/scenarios_helper.rb77 observer = fake_user.tap(&:save!)CODE
LOWapp/helpers/dev/scenarios_helper.rb151 voter = saved(fake_user)CODE
LOWapp/helpers/dev/scenarios_helper.rb215 non_voter = saved(fake_user)CODE
LOWapp/helpers/dev/scenarios_helper.rb316 observer = fake_userCODE
LOWapp/helpers/dev/scenarios_helper.rb351 observer = fake_userCODE
LOWapp/helpers/dev/scenarios_helper.rb391 observer = fake_user.tap(&:save!)CODE
LOWapp/helpers/dev/scenarios_helper.rb407 user = saved(fake_user(time_zone: "America/New_York"))CODE
LOW⚡app/helpers/dev/fake_data_helper.rb154 user: fake_user,CODE
LOW⚡app/helpers/dev/fake_data_helper.rb160 requestor: fake_user,CODE
LOW⚡app/helpers/dev/fake_data_helper.rb167 user: fake_user,CODE
LOW⚡app/helpers/dev/fake_data_helper.rb355 group.add_admin!(saved(fake_user))CODE
LOW⚡app/helpers/dev/fake_data_helper.rb357 group.add_member!(saved(fake_user))CODE
LOW⚡app/helpers/dev/fake_data_helper.rb436 parent_author = fake_userCODE
LOW⚡app/helpers/dev/fake_data_helper.rb442 reply_author = fake_userCODE
LOWapp/helpers/dev/fake_data_helper.rb34 def fake_user(args = {})CODE
LOWapp/helpers/dev/fake_data_helper.rb100 author = args.delete(:author) || fake_userCODE
LOWapp/helpers/dev/fake_data_helper.rb218 author = args.delete(:author) || fake_userCODE
LOWapp/helpers/dev/fake_data_helper.rb241 u = fake_userCODE
LOWapp/helpers/dev/fake_data_helper.rb310 participant: fake_user,CODE
LOWapp/helpers/dev/fake_data_helper.rb324 author: fake_userCODE
LOWapp/helpers/dev/fake_data_helper.rb331 user: fake_user,CODE
LOWapp/helpers/dev/fake_data_helper.rb461 group.add_member! saved(fake_user)CODE
LOWtest/mailers/previews/forward_mailer_preview.rb8 ForwardMailer.bounce(to: 'user@example.com')CODE
LOWtest/services/mention_parser_test.rb15 assert_empty MentionParser.usernames('Contact person@example.org')CODE
LOWtest/services/received_email_service_test.rb262 mail_from: 'list-bounces@example.org',CODE
LOWvue/src/components/lmo_textarea/lmo_textarea.vue41 :placeholder="placeholder"CODE
LOWvue/src/components/lmo_textarea/lmo_textarea.vue55 :placeholder="placeholder"CODE
LOWvue/src/components/lmo_textarea/md_editor.vue201 :placeholder="placeholder"CODE
LOWvue/src/components/topic/comment_form.vue81 :placeholder="placeholder"CODE
LOWvue/src/components/common/recipients_autocomplete.vue363 :placeholder="placeholder"CODE
LOWdocs/he/user_manual/integrations/api/server-api.md85 "email": "ada@example.org",CODE
LOWdocs/he/user_manual/integrations/api/server-api.md93 "email": "ada@example.org",CODE
LOWdocs/he/user_manual/integrations/api/server-api.md188 -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \CODE
LOWdocs/he/user_manual/integrations/api/server-api.md198 -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \CODE
LOWdocs/be/user_manual/integrations/api/server-api.md85 "email": "ada@example.org",CODE
LOWdocs/be/user_manual/integrations/api/server-api.md93 "email": "ada@example.org",CODE
LOWdocs/be/user_manual/integrations/api/server-api.md188 -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \CODE
LOWdocs/be/user_manual/integrations/api/server-api.md198 -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \CODE
LOWdocs/ja/user_manual/integrations/api/server-api.md85 "email": "ada@example.org",CODE
LOWdocs/ja/user_manual/integrations/api/server-api.md93 "email": "ada@example.org",CODE
LOWdocs/ja/user_manual/integrations/api/server-api.md188 -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \CODE
LOWdocs/ja/user_manual/integrations/api/server-api.md198 -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \CODE
LOWdocs/it/user_manual/integrations/api/server-api.md85 "email": "ada@example.org",CODE
43 more matches not shown…
Over-Commented Block96 hits · 96 pts
SeverityFileLineSnippetContext
LOWapp/models/tag.rb1class Tag < ApplicationRecordCOMMENT
LOWapp/models/concerns/group_export_relations.rb81 # self.discussion_files,COMMENT
LOWapp/services/identity_service.rb1class IdentityServiceCOMMENT
LOWapp/services/cleanup_service.rb1# CleanupService removes records which are no longer needed. Integrity cleanupCOMMENT
LOWapp/services/stv_count_service/meek_counter.rb1module StvCountServiceCOMMENT
LOWapp/services/stv_count_service/tie_exploration.rb1module StvCountServiceCOMMENT
LOWapp/services/stv_count_service/scottish_counter.rb1module StvCountServiceCOMMENT
LOWapp/extras/range_set.rb61 # read the middleCOMMENT
LOWtest/support/blt_election.rb1# Reads elections in the BLT format used by STV counting software, so theCOMMENT
LOW…st/controllers/api/v1/poll_results_query_count_test.rb1require 'test_helper'COMMENT
LOW…st/services/stv_count_service_published_counts_test.rb121 # candidates as OpenTally.COMMENT
LOWconfig/blazer.yml41# class name of the user modelCOMMENT
LOWconfig/blazer.yml61 - "1 hour"COMMENT
LOWconfig/puma.rb1# This configuration file will be evaluated by Puma. The top-level methods thatCOMMENT
LOWconfig/locales/client.en.yml61 # <p>This short series of small steps is designed to ensure that the people you invite to join the group will haCOMMENT
LOWconfig/locales/glossary.yml1# Loomio terminology, shared by the app strings (config/locales/*.yml) and theCOMMENT
LOWconfig/environments/production.rb21 # config.require_master_key = trueCOMMENT
LOWconfig/environments/production.rb61 # information to avoid inadvertent exposure of personally identifiable information (PII). If youCOMMENT
LOWconfig/environments/production.rb81 # Don't log any deprecations.COMMENT
LOWconfig/initializers/application_controller_renderer.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/backtrace_silencers.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/new_framework_defaults_7_2.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/new_framework_defaults_7_2.rb21#COMMENT
LOWconfig/initializers/new_framework_defaults_7_2.rb41# WebP. Requires imagemagick/libvips built with WebP support.COMMENT
LOWconfig/initializers/new_framework_defaults_7_2.rb61#COMMENT
LOWconfig/initializers/wrap_parameters.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/cookies_serializer.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/hash.rb1# I don't understand why I need this!COMMENT
LOWconfig/initializers/permissions_policy.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/content_security_policy.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/content_security_policy.rb21# config.content_security_policy_nonce_directives = %w(script-src style-src)COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb21COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb41# Active Record Encryption now uses SHA-256 as its hash digest algorithm.COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb61###COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb81###COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb101# Options are `true`, and `false`. If `false`, the exception will be reportedCOMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb121# In Rails 7.1, the new default is `:json_allow_marshal` which serializes andCOMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb141# Rails.application.config.active_support.message_serializer = :json_allow_marshalCOMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb161#++COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb181# Enable precompilation of `config.filter_parameters`. Precompilation canCOMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb201###COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb221#++COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb241# this file):COMMENT
LOWconfig/initializers/new_framework_defaults_7_1.rb261#COMMENT
LOWconfig/initializers/inflections.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/new_framework_defaults_7_0.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/new_framework_defaults_7_0.rb21# your application and, all the encrypted cookies. Only change this after youCOMMENT
LOWconfig/initializers/new_framework_defaults_7_0.rb41# Rails.application.config.active_support.executor_around_test_case = trueCOMMENT
LOWconfig/initializers/new_framework_defaults_7_0.rb61# Rails.application.config.active_record.verify_foreign_keys_for_fixtures = trueCOMMENT
LOWconfig/initializers/new_framework_defaults_7_0.rb81# Rails.application.config.action_controller.wrap_parameters_by_default = trueCOMMENT
LOWconfig/initializers/new_framework_defaults_7_0.rb101# ** Please read carefully, this must be configured in config/application.rb **COMMENT
LOWconfig/initializers/new_framework_defaults_7_0.rb121# Rails transparently deserializes existing (Marshal-serialized) cookies on read andCOMMENT
LOWconfig/initializers/new_framework_defaults_6_1.rb1# Be sure to restart your server when you modify this file.COMMENT
LOWconfig/initializers/new_framework_defaults_6_1.rb21COMMENT
LOWconfig/initializers/new_framework_defaults_6_1.rb41COMMENT
LOWvue/tests/e2e/specs/profile.js121 page.click('.user-dropdown__list-item-button--profile')COMMENT
LOWvue/tests/e2e/specs/poll.js241 // page = pageHelper(test)COMMENT
LOWvue/tests/e2e/specs/poll.js501 // page.loadPath('polls/test_discussion')COMMENT
LOWvue/tests/e2e/specs/poll.js521 // page.expectText('.poll-common-stance-choice', 'An option')COMMENT
36 more matches not shown…
Self-Referential Comments23 hits · 69 pts
SeverityFileLineSnippetContext
MEDIUMapp/services/stance_service.rb123 # Create a topic item only when the response belongs in the timeline. DirectCOMMENT
MEDIUMtest/controllers/api/v1/reactions_controller_test.rb35 # Create a user who is NOT a member of the groupCOMMENT
MEDIUMtest/controllers/api/v1/topic_items_controller_test.rb313 # Create a second private discussion for cross-isolation testCOMMENT
MEDIUMtest/controllers/api/v1/topic_items_controller_test.rb373 # Create an topic_item so the response includes discussion dataCOMMENT
MEDIUMtest/controllers/api/v1/outcomes_controller_test.rb129 # Create a different poll to get an invalid poll optionCOMMENT
MEDIUMtest/services/translation_service_test.rb38 # Create a stub that will raise if Google Translate is calledCOMMENT
MEDIUMtest/services/translation_service_test.rb68 # Create a stub that returns translated text and validates argumentsCOMMENT
MEDIUMtest/services/record_cloner_test.rb33 # Create a comment in the discussionCOMMENT
MEDIUMtest/services/group_service/privacy_change_test.rb5 # Create a user to author discussionsCOMMENT
MEDIUMtest/services/group_service/privacy_change_test.rb8 # Create an open group with public discussionsCOMMENT
MEDIUMtest/services/group_service/privacy_change_test.rb51 # Create an open group with subgroupsCOMMENT
MEDIUMtest/services/group_service/privacy_change_test.rb88 # Create a user to author discussionsCOMMENT
MEDIUMtest/services/group_service/privacy_change_test.rb91 # Create a group that allows public discussionsCOMMENT
MEDIUMtest/services/group_service/privacy_change_test.rb112 # Create a user to author discussionsCOMMENT
MEDIUMtest/services/group_service/privacy_change_test.rb115 # Create a secret group with private discussionsCOMMENT
MEDIUMconfig/initializers/wrap_parameters.rb3# This file contains settings for ActionController::ParamsWrapper whichCOMMENT
MEDIUMconfig/initializers/permissions_policy.rb3# Define an application-wide HTTP permissions policy. For furtherCOMMENT
MEDIUMconfig/initializers/content_security_policy.rb3# Define an application-wide content security policy.COMMENT
MEDIUMconfig/initializers/new_framework_defaults_7_0.rb43# Define the isolation level of most of Rails internal state.COMMENT
MEDIUMconfig/initializers/new_framework_defaults_6_1.rb3# This file contains migration options to ease your Rails 6.1 upgrade.COMMENT
MEDIUMdb/schema.rb1# This file is auto-generated from the current state of the database. InsteadCOMMENT
MEDIUMdb/schema.rb5# This file is the source Rails uses to define your schema when running `bin/railsCOMMENT
MEDIUM…/migrate/support/poll_created_event_cleanup_service.rb49 # Create a missing poll_created event for every existing poll. Leave its topicCOMMENT
Decorative Section Separators17 hits · 51 pts
SeverityFileLineSnippetContext
MEDIUMtest/views/pages_phlex_test.rb25 # ── DiscussionShow ──────────────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb136 # ── ThreadItems::NewComment ─────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb155 # ── ThreadItems::PollCreated ────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb176 # ── ThreadItems::StanceCreated ──────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb230 # ── ThreadItems::Removed ────────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb248 # ── StanceBody ──────────────────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb385 # ── GroupShow ───────────────────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb394 # ── GroupExport ─────────────────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb440 # ── PollExport ──────────────────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb463 # ── ExportTable ─────────────────────────────────────────────────COMMENT
MEDIUMtest/views/pages_phlex_test.rb489 # ── ErrorPage ────────────────────────────────────────────────────COMMENT
MEDIUMtest/services/stv_count_service_test.rb11 # ── QuotaCalculator ──────────────────────────────────────────────COMMENT
MEDIUMtest/services/stv_count_service_test.rb25 # ── Scottish STV (WIGM) ──────────────────────────────────────────COMMENT
MEDIUMtest/services/stv_count_service_test.rb269 # ── Meek STV ──────────────────────────────────────────────────────COMMENT
MEDIUMtest/services/stv_count_service_test.rb383 # ── Edge Cases ────────────────────────────────────────────────────COMMENT
MEDIUMtest/services/stv_count_service_test.rb421 # ── Tie Detection ─────────────────────────────────────────────────COMMENT
MEDIUMtest/services/stv_count_service_test.rb556 # ── Integration with StvCountService.count ────────────────────────COMMENT
Hallucination Indicators5 hits · 50 pts
SeverityFileLineSnippetContext
CRITICALapp/extras/queries/union_query.rb4 table_name.to_s.singularize.camelize.constantize.distinct.from("(#{from}) as #{table_name}")CODE
CRITICALtest/controllers/api/v1/poll_edit_change_note_test.rb127 expected_ids = @group.members.active.humans.where.not(id: @actor.id).pluck(:id).sortCODE
CRITICALtest/services/anonymous_ballot_service_test.rb757 ballot_values = ballot.reload.attributes.values.compact.map(&:to_s)CODE
CRITICALconfig/initializers/transcription.rb4 Rails.application.config.active_storage.analyzers.push(TranscriptionAnalyzer)CODE
CRITICALvue/tests/e2e/screenshots/quorum.js79 title.nextElementSibling.nextElementSibling.nextElementSibling.classList.add('manual-quorum-tip');CODE
Structural Annotation Overuse14 hits · 23 pts
SeverityFileLineSnippetContext
LOW…/en/guides/making_decisions/simple_decision_process.md21### Step 1 - Introduce and discussCOMMENT
LOW…/en/guides/making_decisions/simple_decision_process.md36### Step 2 - Sense checkCOMMENT
LOW…/en/guides/making_decisions/simple_decision_process.md52### Step 3 - ProposalCOMMENT
LOWdocs/en/guides/making_decisions/advice_process.md56### Step 0 - You notice a problem or opportunity and take the initiative.COMMENT
LOW…igrate/20260219000001_make_root_events_thread_items.rb5 # Step 1: Delete duplicate new_discussion events (keep the one with the lowest id)COMMENT
LOW…igrate/20260219000001_make_root_events_thread_items.rb18 # Step 2: Set topic_id on new_discussion events (they previously had no topic_id)COMMENT
LOW⚡…igrate/20260219000001_make_root_events_thread_items.rb29 # Step 3: Give root events (new_discussion + standalone poll_created) sequence dataCOMMENT
LOW⚡…igrate/20260219000001_make_root_events_thread_items.rb38 # Step 4: Prepend "00000-" to all non-root position_keysCOMMENT
LOW⚡…igrate/20260219000001_make_root_events_thread_items.rb47 # Step 5: Update topic items_count and ranges_string to include sequence_id 0.COMMENT
LOW…igrate/20260219000001_make_root_events_thread_items.rb64 # Step 6: Anyone who had read the topic before should also be consideredCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb7 # Step 1: Delete orphans where a linked identity already exists for the same uidCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb19 # Step 2: For uids that have ONLY orphan records (no linked user), keep theCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb32 # Step 3: For the 16 cases where the same uid is linked to multipleCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb44 # Step 4: Prevent future duplicatesCOMMENT
Verbosity Indicators10 hits · 17 pts
SeverityFileLineSnippetContext
LOW…igrate/20260219000001_make_root_events_thread_items.rb5 # Step 1: Delete duplicate new_discussion events (keep the one with the lowest id)COMMENT
LOW…igrate/20260219000001_make_root_events_thread_items.rb18 # Step 2: Set topic_id on new_discussion events (they previously had no topic_id)COMMENT
LOW⚡…igrate/20260219000001_make_root_events_thread_items.rb29 # Step 3: Give root events (new_discussion + standalone poll_created) sequence dataCOMMENT
LOW⚡…igrate/20260219000001_make_root_events_thread_items.rb38 # Step 4: Prepend "00000-" to all non-root position_keysCOMMENT
LOW⚡…igrate/20260219000001_make_root_events_thread_items.rb47 # Step 5: Update topic items_count and ranges_string to include sequence_id 0.COMMENT
LOW…igrate/20260219000001_make_root_events_thread_items.rb64 # Step 6: Anyone who had read the topic before should also be consideredCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb7 # Step 1: Delete orphans where a linked identity already exists for the same uidCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb19 # Step 2: For uids that have ONLY orphan records (no linked user), keep theCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb32 # Step 3: For the 16 cases where the same uid is linked to multipleCOMMENT
LOW…0005017_deduplicate_identities_and_add_unique_index.rb44 # Step 4: Prevent future duplicatesCOMMENT
AI Response Leakage1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHconfig/initializers/new_framework_defaults_7_2.rb22# In this example, if the configuration is set to `:never`, the job willCOMMENT
AI Slop Vocabulary2 hits · 3 pts
SeverityFileLineSnippetContext
LOWapp/helpers/dev/ninties_movies_helper.rb6 # try to just return objects here. Don't knit them together. Leave that forCOMMENT
LOW…20260219000000_create_topics_and_refactor_threading.rb59 # 4. discussions.topic_id = discussions.id (just add column with correct value)COMMENT
Redundant / Tautological Comments2 hits · 3 pts
SeverityFileLineSnippetContext
LOWtest/mailboxes/received_email_mailbox_test.rb53 # Set from to match the user's email for routingCOMMENT
LOWconfig/environments/production.rb74 # Set this to true and configure the email server for immediate delivery to raise delivery errors.COMMENT
Example Usage Blocks2 hits · 3 pts
SeverityFileLineSnippetContext
LOWtest/support/saml_response_builder.rb7# Usage:COMMENT
LOWscript/check_translations.rb4# Usage:COMMENT
Slop Phrases1 hit · 2 pts
SeverityFileLineSnippetContext
MEDIUMconfig/locales/server.en.yml310 decline_meaning: I'm unable to participateCODE