Loomio is a collaborative decision-making tool
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.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 262 finding(s).
Are imports declared and package/API names verified? 545 finding(s).
Are wrappers, guards, and repeated structures necessary? 128 finding(s).
Which changes need focused human review? 824 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 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.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | app/views/profile/api_access.rb | 71 | code(class: "api-access__example") { "Authorization: Bearer YOUR_API_KEY" } | CODE |
| HIGH⚡ | app/views/profile/api_access.rb | 77 | code { "?api_key=YOUR_API_KEY" } | CODE |
| HIGH⚡ | app/views/profile/api_access.rb | 79 | code { "Authorization: Bearer YOUR_API_KEY" } | CODE |
| HIGH⚡ | docs/he/user_manual/integrations/api/user-api.md | 166 | בעבר ניתן היה להעביר את מפתח ה־API כפרמטר `api_key` בכתובת URL. בקשות המשתמשות ב־`?api_key=YOUR_API_KEY` אינן פועלות עוד | CODE |
| HIGH⚡ | docs/he/user_manual/integrations/api/user-api.md | 169 | Authorization: Bearer YOUR_API_KEY | CODE |
| HIGH⚡ | docs/he/user_manual/integrations/api/user-api.md | 172 | הדוגמאות משתמשות ב־`YOUR_API_KEY`, במזהה הקבוצה `123` ובכתובת `https://www.loomio.com/`. יש להחליף אותם במפתח ה־API, במז | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 183 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1' | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 238 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 276 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/123 | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 277 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/example-group | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 310 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/chatbots?group_id=123' | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 334 | -H 'Authorization: Bearer YOUR_API_KEY' \ | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 360 | -H 'Authorization: Bearer YOUR_API_KEY' \ | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 376 | -H 'Authorization: Bearer YOUR_API_KEY' \ | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 389 | curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456 | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 483 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=Discuss | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 519 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/reports?section=users&group_scope=custom&gro | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 575 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":" | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 591 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123 | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 620 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123' | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 645 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0' | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 701 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated thread t | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 717 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123 | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 743 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"discussion_id": 123, "bod | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 768 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"body":"updated comment", | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 784 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123 | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 825 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":" | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 841 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123 | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 870 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123' | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 902 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated poll tit | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 918 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/polls/123 | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 942 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/memberships?group_id=123' | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 968 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "emails": | CODE |
| HIGH | docs/he/user_manual/integrations/api/user-api.md | 974 | curl -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.md | 166 | Раней ключ API прымаўся як параметр URL `api_key`. Запыты з `?api_key=YOUR_API_KEY` больш не працуюць. Замест гэтага вык | CODE |
| HIGH⚡ | docs/be/user_manual/integrations/api/user-api.md | 169 | Authorization: Bearer YOUR_API_KEY | CODE |
| HIGH⚡ | docs/be/user_manual/integrations/api/user-api.md | 172 | У прыкладах выкарыстоўваюцца `YOUR_API_KEY`, ідэнтыфікатар групы `123` і `https://www.loomio.com/`. Замяніце іх сваім кл | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 183 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads/123/items?compact=1' | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 238 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 276 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/123 | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 277 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/groups/example-group | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 310 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/chatbots?group_id=123' | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 334 | -H 'Authorization: Bearer YOUR_API_KEY' \ | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 360 | -H 'Authorization: Bearer YOUR_API_KEY' \ | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 376 | -H 'Authorization: Bearer YOUR_API_KEY' \ | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 389 | curl -X DELETE -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/chatbots/456 | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 483 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/search?query=quarterly+planning&type=Discuss | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 519 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/reports?section=users&group_scope=custom&gro | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 575 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":" | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 591 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/discussions/abc123 | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 620 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/discussions?group_id=123' | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 645 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/threads?limit=50&offset=0' | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 701 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"title":"updated thread t | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 717 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/discussions/123 | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 743 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"discussion_id": 123, "bod | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 768 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X PATCH -H 'Content-Type: application/json' -d '{"body":"updated comment", | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 784 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X DELETE https://www.loomio.com/api/b2/comments/123 | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 825 | curl -H 'Authorization: Bearer YOUR_API_KEY' -X POST -H 'Content-Type: application/json' -d '{"group_id": 123, "title":" | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 841 | curl -H 'Authorization: Bearer YOUR_API_KEY' https://www.loomio.com/api/b2/polls/abc123 | CODE |
| HIGH | docs/be/user_manual/integrations/api/user-api.md | 870 | curl -H 'Authorization: Bearer YOUR_API_KEY' 'https://www.loomio.com/api/b2/polls?group_id=123' | CODE |
| 377 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/mailers/group_mailer.rb | 19 | def expired_trial_deletion_warning(group_id, recipient_id) | CODE |
| LOW | app/mailers/notification_mailer.rb | 199 | def reply_to_address_with_group_name(model:, user:) | CODE |
| LOW | app/models/poll.rb | 445 | def member_vote_weights_by_user_id(user_ids) | CODE |
| LOW | app/models/concerns/searchable.rb | 14 | def pg_search_insert_statement(id: nil, author_id: nil) | CODE |
| LOW | app/models/concerns/has_rich_text.rb | 140 | def assign_attributes_and_files(params) | CODE |
| LOW | app/models/concerns/has_rich_text.rb | 153 | def attach_inline_image_files(image_file_attachables) | CODE |
| LOW | app/models/concerns/has_rich_text.rb | 197 | def add_required_link_attributes(text) | CODE |
| LOW | app/mailboxes/received_email_mailbox.rb | 40 | def attach_files_and_inline_images(email) | CODE |
| LOW | app/controllers/api/v1/stances_controller.rb | 163 | def live_update_outdated_stances(poll) | CODE |
| LOW | app/controllers/api/v1/poll_templates_controller.rb | 162 | def find_template_for_author_or_admin(scope = nil) | CODE |
| LOW | app/controllers/api/v1/snorlax_base.rb | 285 | def respond_with_standard_error(error, status) | CODE |
| LOW | app/controllers/api/v1/snorlax_base.rb | 304 | def respond_with_access_denied(error) | CODE |
| LOW | …/controllers/api/v1/discussion_templates_controller.rb | 148 | def find_template_for_author_or_admin(scope = nil) | CODE |
| LOW | app/controllers/api/v1/registrations_controller.rb | 154 | def restore_pending_invitation(invitation) | CODE |
| LOW | app/controllers/api/v1/mobile/activity_controller.rb | 66 | def bounded_integer_parameter(name, default: nil, maximum: nil) | CODE |
| LOW | app/controllers/dev/polls_controller.rb | 309 | def vote_table_matrix_choices(poll, index) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1441 | def create_manual_oatmilk_discussion_template(group:, coordinator:) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1474 | def create_manual_oatmilk_poll_template_copy(source:, group:, coordinator:) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1497 | def manual_oatmilk_poll_options_attributes(template) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1503 | def manual_oatmilk_proposal_title(template_key) | CODE |
| LOW⚡ | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1518 | def manual_oatmilk_poll_type_outcome(poll_type) | CODE |
| LOW⚡ | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1527 | def manual_oatmilk_proposal_outcome(template_key) | CODE |
| LOW⚡ | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1536 | def manual_oatmilk_proposal_details(_template_key) | CODE |
| LOW⚡ | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1540 | def manual_oatmilk_proposal_reason(_template_key, index) | CODE |
| LOW⚡ | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1548 | def create_manual_oatmilk_advice_template(group:, coordinator:) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1572 | def create_manual_oatmilk_poll_template(group:, coordinator:) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1795 | def mark_manual_oatmilk_delegates(group) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 1806 | def add_manual_oatmilk_participation_report_data(group:, coordinator:) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 2076 | def create_manual_oatmilk_member(name:, email:, avatar_filename: nil) | CODE |
| LOW | app/controllers/dev/scenarios/oatmilk_cooperative.rb | 2097 | def deliver_manual_oatmilk_notification_email(kind:, subject:, actor:, recipient:) | CODE |
| LOW | app/controllers/concerns/identity_authentication.rb | 6 | def finish_identity_authentication(identity) | CODE |
| LOW | app/views/digest_mailer/digest.rb | 63 | def mark_digest_as_read_url_for(user, format: nil) | CODE |
| LOW | app/views/chatbot/markdown/concerns.rb | 329 | def render_discussion_undecided(itemable) | CODE |
| LOW | app/views/chatbot/markdown/concerns.rb | 342 | def render_meeting_stance_choices(stance) | CODE |
| LOW | app/helpers/current_user_helper.rb | 77 | def authentication_return_path(fallback: nil) | CODE |
| LOW | app/helpers/current_user_helper.rb | 153 | def record_successful_sign_in(user) | CODE |
| LOW | app/helpers/email_helper.rb | 92 | def mark_notification_as_read_pixel_src(notification_id, recipient:) | CODE |
| LOW | app/helpers/email_helper.rb | 118 | def mark_digest_as_read_url_for(user, time_start:, time_finish:, format: nil) | CODE |
| LOW | app/helpers/pending_actions_helper.rb | 37 | def consume_pending_membership(user) | CODE |
| LOW | app/helpers/pending_actions_helper.rb | 50 | def consume_pending_topic_reader(user) | CODE |
| LOW | app/helpers/poll_helper.rb | 15 | def dot_vote_stance_choice_percentage_for(stance, stance_choice) | CODE |
| LOW | app/helpers/poll_helper.rb | 24 | def score_stance_choice_percentage_for(stance, stance_choice) | CODE |
| LOW | app/helpers/pretty_url_helper.rb | 97 | def no_slug_topic_url_options(controller, key, options) | CODE |
| LOW⚡ | app/helpers/dev/scenarios_helper.rb | 129 | def poll_user_mentioned_scenario(params) | CODE |
| LOW⚡ | app/helpers/dev/scenarios_helper.rb | 179 | def poll_closing_soon_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 4 | def saved_discussion_with_created_topic_item(group:) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 46 | def poll_vote_conversation_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 63 | def poll_none_of_the_above_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 102 | def poll_legacy_anonymous_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 149 | def poll_stance_created_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 247 | def poll_closing_soon_author_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 253 | def poll_closing_soon_with_vote_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 288 | def poll_expired_author_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 313 | def poll_outcome_created_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 348 | def poll_outcome_review_due_scenario(params) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 450 | def alternative_poll_option_selection(poll_option_ids, i) | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 127 | def fake_new_discussion_event(discussion = fake_discussion) | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 133 | def fake_poll_created_topic_item(poll = fake_poll) | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 139 | def fake_stance_created_topic_item(stance = fake_stance) | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 145 | def fake_outcome_created_topic_item(outcome = fake_outcome) | CODE |
| 51 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/controllers/dev/polls_controller.rb | 84 | admin = saved fake_user | CODE |
| LOW | app/controllers/dev/polls_controller.rb | 91 | user = saved fake_user(email: 'poll-member@example.com') | CODE |
| LOW | app/controllers/dev/polls_controller.rb | 148 | voters = Array.new(params[:voter_count].to_i.clamp(0, 25)) { saved(fake_user) } | CODE |
| LOW | app/controllers/dev/polls_controller.rb | 172 | voter = saved(fake_user(name: "Voter #{format('%02d', index + 1)}", email: "voter#{index + 1}@example.com")) | CODE |
| LOW | app/controllers/dev/polls_controller.rb | 208 | user = fake_user | CODE |
| LOW | app/controllers/dev/polls_controller.rb | 227 | voter = saved(fake_user(name: "Matrix voter #{format('%02d', index + 1)}")) | CODE |
| LOW | app/controllers/dev/scenarios/discussion.rb | 16 | member = saved(fake_user(name: "Thread member #{format('%02d', index + 1)}", email: "threadmember#{index + 1}@exam | CODE |
| LOW | app/controllers/dev/scenarios/group.rb | 236 | create_subgroup.add_member! fake_user name: 'only in subgroup' | CODE |
| LOW | app/controllers/dev/scenarios/membership_request.rb | 7 | MembershipRequestService.create(membership_request: request, actor: saved(fake_user)) | CODE |
| LOW | app/controllers/dev/scenarios/auth.rb | 54 | user = saved fake_user(password: nil, name: 'fake user') | CODE |
| LOW | app/controllers/dev/scenarios/auth.rb | 70 | admin = saved fake_user | CODE |
| LOW | app/controllers/dev/scenarios/auth.rb | 72 | user = saved fake_user | CODE |
| LOW⚡ | app/helpers/dev/scenarios_helper.rb | 131 | voter = saved(fake_user) | CODE |
| LOW⚡ | app/helpers/dev/scenarios_helper.rb | 132 | group_member = saved(fake_user) | CODE |
| LOW⚡ | app/helpers/dev/scenarios_helper.rb | 170 | voter = saved(fake_user) | CODE |
| LOW⚡ | app/helpers/dev/scenarios_helper.rb | 181 | non_voter = saved(fake_user) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 16 | user = saved(fake_user(time_zone: "America/New_York", auto_translate: params[:auto_translate].present?)) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 77 | observer = fake_user.tap(&:save!) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 151 | voter = saved(fake_user) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 215 | non_voter = saved(fake_user) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 316 | observer = fake_user | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 351 | observer = fake_user | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 391 | observer = fake_user.tap(&:save!) | CODE |
| LOW | app/helpers/dev/scenarios_helper.rb | 407 | user = saved(fake_user(time_zone: "America/New_York")) | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 154 | user: fake_user, | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 160 | requestor: fake_user, | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 167 | user: fake_user, | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 355 | group.add_admin!(saved(fake_user)) | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 357 | group.add_member!(saved(fake_user)) | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 436 | parent_author = fake_user | CODE |
| LOW⚡ | app/helpers/dev/fake_data_helper.rb | 442 | reply_author = fake_user | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 34 | def fake_user(args = {}) | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 100 | author = args.delete(:author) || fake_user | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 218 | author = args.delete(:author) || fake_user | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 241 | u = fake_user | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 310 | participant: fake_user, | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 324 | author: fake_user | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 331 | user: fake_user, | CODE |
| LOW | app/helpers/dev/fake_data_helper.rb | 461 | group.add_member! saved(fake_user) | CODE |
| LOW | test/mailers/previews/forward_mailer_preview.rb | 8 | ForwardMailer.bounce(to: 'user@example.com') | CODE |
| LOW | test/services/mention_parser_test.rb | 15 | assert_empty MentionParser.usernames('Contact person@example.org') | CODE |
| LOW | test/services/received_email_service_test.rb | 262 | mail_from: 'list-bounces@example.org', | CODE |
| LOW | vue/src/components/lmo_textarea/lmo_textarea.vue | 41 | :placeholder="placeholder" | CODE |
| LOW | vue/src/components/lmo_textarea/lmo_textarea.vue | 55 | :placeholder="placeholder" | CODE |
| LOW | vue/src/components/lmo_textarea/md_editor.vue | 201 | :placeholder="placeholder" | CODE |
| LOW | vue/src/components/topic/comment_form.vue | 81 | :placeholder="placeholder" | CODE |
| LOW | vue/src/components/common/recipients_autocomplete.vue | 363 | :placeholder="placeholder" | CODE |
| LOW | docs/he/user_manual/integrations/api/server-api.md | 85 | "email": "ada@example.org", | CODE |
| LOW | docs/he/user_manual/integrations/api/server-api.md | 93 | "email": "ada@example.org", | CODE |
| LOW | docs/he/user_manual/integrations/api/server-api.md | 188 | -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \ | CODE |
| LOW | docs/he/user_manual/integrations/api/server-api.md | 198 | -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \ | CODE |
| LOW | docs/be/user_manual/integrations/api/server-api.md | 85 | "email": "ada@example.org", | CODE |
| LOW | docs/be/user_manual/integrations/api/server-api.md | 93 | "email": "ada@example.org", | CODE |
| LOW | docs/be/user_manual/integrations/api/server-api.md | 188 | -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \ | CODE |
| LOW | docs/be/user_manual/integrations/api/server-api.md | 198 | -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \ | CODE |
| LOW | docs/ja/user_manual/integrations/api/server-api.md | 85 | "email": "ada@example.org", | CODE |
| LOW | docs/ja/user_manual/integrations/api/server-api.md | 93 | "email": "ada@example.org", | CODE |
| LOW | docs/ja/user_manual/integrations/api/server-api.md | 188 | -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \ | CODE |
| LOW | docs/ja/user_manual/integrations/api/server-api.md | 198 | -d '{"user":{"name":"Ada Lovelace","username":"ada","email":"ada@example.org"}}' \ | CODE |
| LOW | docs/it/user_manual/integrations/api/server-api.md | 85 | "email": "ada@example.org", | CODE |
| 43 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/models/tag.rb | 1 | class Tag < ApplicationRecord | COMMENT |
| LOW | app/models/concerns/group_export_relations.rb | 81 | # self.discussion_files, | COMMENT |
| LOW | app/services/identity_service.rb | 1 | class IdentityService | COMMENT |
| LOW | app/services/cleanup_service.rb | 1 | # CleanupService removes records which are no longer needed. Integrity cleanup | COMMENT |
| LOW | app/services/stv_count_service/meek_counter.rb | 1 | module StvCountService | COMMENT |
| LOW | app/services/stv_count_service/tie_exploration.rb | 1 | module StvCountService | COMMENT |
| LOW | app/services/stv_count_service/scottish_counter.rb | 1 | module StvCountService | COMMENT |
| LOW | app/extras/range_set.rb | 61 | # read the middle | COMMENT |
| LOW | test/support/blt_election.rb | 1 | # Reads elections in the BLT format used by STV counting software, so the | COMMENT |
| LOW | …st/controllers/api/v1/poll_results_query_count_test.rb | 1 | require 'test_helper' | COMMENT |
| LOW | …st/services/stv_count_service_published_counts_test.rb | 121 | # candidates as OpenTally. | COMMENT |
| LOW | config/blazer.yml | 41 | # class name of the user model | COMMENT |
| LOW | config/blazer.yml | 61 | - "1 hour" | COMMENT |
| LOW | config/puma.rb | 1 | # This configuration file will be evaluated by Puma. The top-level methods that | COMMENT |
| LOW | config/locales/client.en.yml | 61 | # <p>This short series of small steps is designed to ensure that the people you invite to join the group will ha | COMMENT |
| LOW | config/locales/glossary.yml | 1 | # Loomio terminology, shared by the app strings (config/locales/*.yml) and the | COMMENT |
| LOW | config/environments/production.rb | 21 | # config.require_master_key = true | COMMENT |
| LOW | config/environments/production.rb | 61 | # information to avoid inadvertent exposure of personally identifiable information (PII). If you | COMMENT |
| LOW | config/environments/production.rb | 81 | # Don't log any deprecations. | COMMENT |
| LOW | config/initializers/application_controller_renderer.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/backtrace_silencers.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_2.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_2.rb | 21 | # | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_2.rb | 41 | # WebP. Requires imagemagick/libvips built with WebP support. | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_2.rb | 61 | # | COMMENT |
| LOW | config/initializers/wrap_parameters.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/cookies_serializer.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/hash.rb | 1 | # I don't understand why I need this! | COMMENT |
| LOW | config/initializers/permissions_policy.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/content_security_policy.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/content_security_policy.rb | 21 | # config.content_security_policy_nonce_directives = %w(script-src style-src) | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 21 | COMMENT | |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 41 | # Active Record Encryption now uses SHA-256 as its hash digest algorithm. | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 61 | ### | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 81 | ### | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 101 | # Options are `true`, and `false`. If `false`, the exception will be reported | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 121 | # In Rails 7.1, the new default is `:json_allow_marshal` which serializes and | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 141 | # Rails.application.config.active_support.message_serializer = :json_allow_marshal | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 161 | #++ | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 181 | # Enable precompilation of `config.filter_parameters`. Precompilation can | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 201 | ### | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 221 | #++ | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 241 | # this file): | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_1.rb | 261 | # | COMMENT |
| LOW | config/initializers/inflections.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_0.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_0.rb | 21 | # your application and, all the encrypted cookies. Only change this after you | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_0.rb | 41 | # Rails.application.config.active_support.executor_around_test_case = true | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_0.rb | 61 | # Rails.application.config.active_record.verify_foreign_keys_for_fixtures = true | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_0.rb | 81 | # Rails.application.config.action_controller.wrap_parameters_by_default = true | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_0.rb | 101 | # ** Please read carefully, this must be configured in config/application.rb ** | COMMENT |
| LOW | config/initializers/new_framework_defaults_7_0.rb | 121 | # Rails transparently deserializes existing (Marshal-serialized) cookies on read and | COMMENT |
| LOW | config/initializers/new_framework_defaults_6_1.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/new_framework_defaults_6_1.rb | 21 | COMMENT | |
| LOW | config/initializers/new_framework_defaults_6_1.rb | 41 | COMMENT | |
| LOW | vue/tests/e2e/specs/profile.js | 121 | page.click('.user-dropdown__list-item-button--profile') | COMMENT |
| LOW | vue/tests/e2e/specs/poll.js | 241 | // page = pageHelper(test) | COMMENT |
| LOW | vue/tests/e2e/specs/poll.js | 501 | // page.loadPath('polls/test_discussion') | COMMENT |
| LOW | vue/tests/e2e/specs/poll.js | 521 | // page.expectText('.poll-common-stance-choice', 'An option') | COMMENT |
| 36 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/services/stance_service.rb | 123 | # Create a topic item only when the response belongs in the timeline. Direct | COMMENT |
| MEDIUM | test/controllers/api/v1/reactions_controller_test.rb | 35 | # Create a user who is NOT a member of the group | COMMENT |
| MEDIUM | test/controllers/api/v1/topic_items_controller_test.rb | 313 | # Create a second private discussion for cross-isolation test | COMMENT |
| MEDIUM | test/controllers/api/v1/topic_items_controller_test.rb | 373 | # Create an topic_item so the response includes discussion data | COMMENT |
| MEDIUM | test/controllers/api/v1/outcomes_controller_test.rb | 129 | # Create a different poll to get an invalid poll option | COMMENT |
| MEDIUM | test/services/translation_service_test.rb | 38 | # Create a stub that will raise if Google Translate is called | COMMENT |
| MEDIUM | test/services/translation_service_test.rb | 68 | # Create a stub that returns translated text and validates arguments | COMMENT |
| MEDIUM | test/services/record_cloner_test.rb | 33 | # Create a comment in the discussion | COMMENT |
| MEDIUM | test/services/group_service/privacy_change_test.rb | 5 | # Create a user to author discussions | COMMENT |
| MEDIUM | test/services/group_service/privacy_change_test.rb | 8 | # Create an open group with public discussions | COMMENT |
| MEDIUM | test/services/group_service/privacy_change_test.rb | 51 | # Create an open group with subgroups | COMMENT |
| MEDIUM | test/services/group_service/privacy_change_test.rb | 88 | # Create a user to author discussions | COMMENT |
| MEDIUM | test/services/group_service/privacy_change_test.rb | 91 | # Create a group that allows public discussions | COMMENT |
| MEDIUM | test/services/group_service/privacy_change_test.rb | 112 | # Create a user to author discussions | COMMENT |
| MEDIUM | test/services/group_service/privacy_change_test.rb | 115 | # Create a secret group with private discussions | COMMENT |
| MEDIUM | config/initializers/wrap_parameters.rb | 3 | # This file contains settings for ActionController::ParamsWrapper which | COMMENT |
| MEDIUM | config/initializers/permissions_policy.rb | 3 | # Define an application-wide HTTP permissions policy. For further | COMMENT |
| MEDIUM | config/initializers/content_security_policy.rb | 3 | # Define an application-wide content security policy. | COMMENT |
| MEDIUM | config/initializers/new_framework_defaults_7_0.rb | 43 | # Define the isolation level of most of Rails internal state. | COMMENT |
| MEDIUM | config/initializers/new_framework_defaults_6_1.rb | 3 | # This file contains migration options to ease your Rails 6.1 upgrade. | COMMENT |
| MEDIUM | db/schema.rb | 1 | # This file is auto-generated from the current state of the database. Instead | COMMENT |
| MEDIUM | db/schema.rb | 5 | # This file is the source Rails uses to define your schema when running `bin/rails | COMMENT |
| MEDIUM | …/migrate/support/poll_created_event_cleanup_service.rb | 49 | # Create a missing poll_created event for every existing poll. Leave its topic | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/views/pages_phlex_test.rb | 25 | # ── DiscussionShow ────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 136 | # ── ThreadItems::NewComment ───────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 155 | # ── ThreadItems::PollCreated ──────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 176 | # ── ThreadItems::StanceCreated ────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 230 | # ── ThreadItems::Removed ──────────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 248 | # ── StanceBody ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 385 | # ── GroupShow ─────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 394 | # ── GroupExport ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 440 | # ── PollExport ────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 463 | # ── ExportTable ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/views/pages_phlex_test.rb | 489 | # ── ErrorPage ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/services/stv_count_service_test.rb | 11 | # ── QuotaCalculator ────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/services/stv_count_service_test.rb | 25 | # ── Scottish STV (WIGM) ────────────────────────────────────────── | COMMENT |
| MEDIUM | test/services/stv_count_service_test.rb | 269 | # ── Meek STV ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/services/stv_count_service_test.rb | 383 | # ── Edge Cases ──────────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/services/stv_count_service_test.rb | 421 | # ── Tie Detection ───────────────────────────────────────────────── | COMMENT |
| MEDIUM | test/services/stv_count_service_test.rb | 556 | # ── Integration with StvCountService.count ──────────────────────── | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | app/extras/queries/union_query.rb | 4 | table_name.to_s.singularize.camelize.constantize.distinct.from("(#{from}) as #{table_name}") | CODE |
| CRITICAL | test/controllers/api/v1/poll_edit_change_note_test.rb | 127 | expected_ids = @group.members.active.humans.where.not(id: @actor.id).pluck(:id).sort | CODE |
| CRITICAL | test/services/anonymous_ballot_service_test.rb | 757 | ballot_values = ballot.reload.attributes.values.compact.map(&:to_s) | CODE |
| CRITICAL | config/initializers/transcription.rb | 4 | Rails.application.config.active_storage.analyzers.push(TranscriptionAnalyzer) | CODE |
| CRITICAL | vue/tests/e2e/screenshots/quorum.js | 79 | title.nextElementSibling.nextElementSibling.nextElementSibling.classList.add('manual-quorum-tip'); | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …/en/guides/making_decisions/simple_decision_process.md | 21 | ### Step 1 - Introduce and discuss | COMMENT |
| LOW | …/en/guides/making_decisions/simple_decision_process.md | 36 | ### Step 2 - Sense check | COMMENT |
| LOW | …/en/guides/making_decisions/simple_decision_process.md | 52 | ### Step 3 - Proposal | COMMENT |
| LOW | docs/en/guides/making_decisions/advice_process.md | 56 | ### Step 0 - You notice a problem or opportunity and take the initiative. | COMMENT |
| LOW | …igrate/20260219000001_make_root_events_thread_items.rb | 5 | # Step 1: Delete duplicate new_discussion events (keep the one with the lowest id) | COMMENT |
| LOW | …igrate/20260219000001_make_root_events_thread_items.rb | 18 | # Step 2: Set topic_id on new_discussion events (they previously had no topic_id) | COMMENT |
| LOW⚡ | …igrate/20260219000001_make_root_events_thread_items.rb | 29 | # Step 3: Give root events (new_discussion + standalone poll_created) sequence data | COMMENT |
| LOW⚡ | …igrate/20260219000001_make_root_events_thread_items.rb | 38 | # Step 4: Prepend "00000-" to all non-root position_keys | COMMENT |
| LOW⚡ | …igrate/20260219000001_make_root_events_thread_items.rb | 47 | # Step 5: Update topic items_count and ranges_string to include sequence_id 0. | COMMENT |
| LOW | …igrate/20260219000001_make_root_events_thread_items.rb | 64 | # Step 6: Anyone who had read the topic before should also be considered | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 7 | # Step 1: Delete orphans where a linked identity already exists for the same uid | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 19 | # Step 2: For uids that have ONLY orphan records (no linked user), keep the | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 32 | # Step 3: For the 16 cases where the same uid is linked to multiple | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 44 | # Step 4: Prevent future duplicates | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | …igrate/20260219000001_make_root_events_thread_items.rb | 5 | # Step 1: Delete duplicate new_discussion events (keep the one with the lowest id) | COMMENT |
| LOW | …igrate/20260219000001_make_root_events_thread_items.rb | 18 | # Step 2: Set topic_id on new_discussion events (they previously had no topic_id) | COMMENT |
| LOW⚡ | …igrate/20260219000001_make_root_events_thread_items.rb | 29 | # Step 3: Give root events (new_discussion + standalone poll_created) sequence data | COMMENT |
| LOW⚡ | …igrate/20260219000001_make_root_events_thread_items.rb | 38 | # Step 4: Prepend "00000-" to all non-root position_keys | COMMENT |
| LOW⚡ | …igrate/20260219000001_make_root_events_thread_items.rb | 47 | # Step 5: Update topic items_count and ranges_string to include sequence_id 0. | COMMENT |
| LOW | …igrate/20260219000001_make_root_events_thread_items.rb | 64 | # Step 6: Anyone who had read the topic before should also be considered | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 7 | # Step 1: Delete orphans where a linked identity already exists for the same uid | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 19 | # Step 2: For uids that have ONLY orphan records (no linked user), keep the | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 32 | # Step 3: For the 16 cases where the same uid is linked to multiple | COMMENT |
| LOW | …0005017_deduplicate_identities_and_add_unique_index.rb | 44 | # Step 4: Prevent future duplicates | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | config/initializers/new_framework_defaults_7_2.rb | 22 | # In this example, if the configuration is set to `:never`, the job will | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/helpers/dev/ninties_movies_helper.rb | 6 | # try to just return objects here. Don't knit them together. Leave that for | COMMENT |
| LOW | …20260219000000_create_topics_and_refactor_threading.rb | 59 | # 4. discussions.topic_id = discussions.id (just add column with correct value) | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/mailboxes/received_email_mailbox_test.rb | 53 | # Set from to match the user's email for routing | COMMENT |
| LOW | config/environments/production.rb | 74 | # Set this to true and configure the email server for immediate delivery to raise delivery errors. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | test/support/saml_response_builder.rb | 7 | # Usage: | COMMENT |
| LOW | script/check_translations.rb | 4 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | config/locales/server.en.yml | 310 | decline_meaning: I'm unable to participate | CODE |