Kanban as it should be. Not as it has been.
This report summarizes scanner evidence for basecamp/fizzy, a Ruby project with 8,244 GitHub stars. SynthScan examined 67,410 lines of code across 1097 source files, recording 220 pattern matches distributed across 10 syntactic categories. The legacy adjusted pattern signal is 5.5 (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? 198 finding(s).
Are imports declared and package/API names verified? 20 finding(s).
Are wrappers, guards, and repeated structures necessary? 96 finding(s).
Which changes need focused human review? 220 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 220 distinct pattern matches across 10 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 |
|---|---|---|---|---|
| LOW | app/mailers/user_mailer.rb | 2 | def email_change_confirmation(email_address:, token:, user:) | CODE |
| LOW | app/models/application_platform.rb | 83 | def extract_list_from_native_user_agent(prefix) | CODE |
| LOW | app/models/color.rb | 17 | def extract_from_legacy_export(value) | CODE |
| LOW | app/models/signup.rb | 53 | def handle_account_creation_error(error) | CODE |
| LOW | app/models/card/readable.rb | 32 | def inaccessible_notifications_from(sources, accessible_user_ids) | CODE |
| LOW | app/models/card/eventable.rb | 35 | def create_system_comment_for(event) | CODE |
| LOW | app/models/card/exportable.rb | 41 | def attachment_representation(attachment) | CODE |
| LOW | app/models/board/accessible.rb | 43 | def clean_inaccessible_data_for(user) | CODE |
| LOW | app/models/board/storage.rb | 56 | def sum_blob_bytes_in_batches(base_scope, record_ids) | CODE |
| LOW | app/models/notification/event_payload.rb | 100 | def card_url_with_comment_anchor(comment) | CODE |
| LOW | app/models/magic_link/code.rb | 26 | def remove_invalid_characters(code) | CODE |
| LOW | app/models/zip_file/reader.rb | 95 | def ensure_declared_within_budget(entry) | CODE |
| LOW | app/models/user/email_address_changeable.rb | 7 | def change_email_address_using_token(token) | CODE |
| LOW | app/models/user/email_address_changeable.rb | 20 | def send_email_address_change_confirmation(new_email_address) | CODE |
| LOW | app/models/user/email_address_changeable.rb | 41 | def generate_email_address_change_token(from: identity.email_address, to:, **options) | CODE |
| LOW | app/models/user/attachable.rb | 7 | def attachable_plain_text_representation(...) | CODE |
| LOW | app/models/user/notifiable.rb | 18 | def find_or_create_bundle_for(notification) | CODE |
| LOW | app/models/user/notifiable.rb | 26 | def expand_pending_bundle_for(notification) | CODE |
| LOW | app/models/search/query.rb | 35 | def remove_invalid_search_characters(terms) | CODE |
| LOW | app/models/account/data_transfer/record_set.rb | 134 | def check_associations_dont_exist(data) | CODE |
| LOW | app/models/account/data_transfer/record_set.rb | 144 | def check_association_doesnt_exist(data, association, associated_id) | CODE |
| LOW | app/models/account/data_transfer/record_set.rb | 170 | def check_unique_keys_available(data) | CODE |
| LOW | app/models/account/data_transfer/record_set.rb | 182 | def check_unique_key_available(column, value) | CODE |
| LOW | app/models/account/data_transfer/manifest.rb | 78 | def set_importable_model_names(record_sets) | CODE |
| LOW | …ount/data_transfer/action_text/rich_text_record_set.rb | 57 | def transform_body_for_export(content) | CODE |
| LOW | …ount/data_transfer/action_text/rich_text_record_set.rb | 102 | def transform_body_for_import(body) | CODE |
| LOW | app/models/concerns/storage/tracked.rb | 71 | def storage_attachments_for_records(recordables) | CODE |
| LOW | app/javascript/helpers/scroll_helpers.js | 39 | function findNearestScrollableYAncestor(refElement) { | CODE |
| LOW | app/javascript/helpers/scroll_helpers.js | 50 | function findNearestScrollableXAncestor(refElement) { | CODE |
| LOW | app/controllers/prompts/cards_controller.rb | 32 | def prepending_exact_matches_by_id(cards) | CODE |
| LOW | app/controllers/concerns/authentication.rb | 16 | def require_unauthenticated_access(**options) | CODE |
| LOW | app/controllers/concerns/authentication.rb | 21 | def allow_unauthenticated_access(**options) | CODE |
| LOW | app/controllers/concerns/authorization.rb | 9 | def allow_unauthorized_access(**options) | CODE |
| LOW | app/controllers/concerns/authorization.rb | 13 | def require_access_without_a_user(**options) | CODE |
| LOW | …/controllers/concerns/authentication/via_magic_link.rb | 15 | def redirect_to_fake_session_magic_link(email_address, **options) | CODE |
| LOW | …/controllers/concerns/authentication/via_magic_link.rb | 25 | def redirect_to_session_magic_link(magic_link, return_to: nil) | CODE |
| LOW | …/controllers/concerns/authentication/via_magic_link.rb | 36 | def serve_development_magic_link(magic_link) | CODE |
| LOW | …/controllers/concerns/authentication/via_magic_link.rb | 43 | def set_pending_authentication_token(magic_link) | CODE |
| LOW | app/helpers/cards_helper.rb | 42 | def button_to_remove_card_image(card) | CODE |
| LOW | app/helpers/notifications_helper.rb | 42 | def notification_toggle_read_button(notification, url:) | CODE |
| LOW⚡ | app/helpers/notifications_helper.rb | 64 | def notifications_next_page_link(page) | CODE |
| LOW⚡ | app/helpers/notifications_helper.rb | 70 | def bundle_email_frequency_options_for(settings) | CODE |
| LOW⚡ | app/helpers/notifications_helper.rb | 80 | def event_notification_action(event) | CODE |
| LOW⚡ | app/helpers/notifications_helper.rb | 88 | def comment_notification_body(event) | CODE |
| LOW | app/helpers/filters_helper.rb | 14 | def filter_selected_boards_title(user_filtering) | CODE |
| LOW | app/helpers/accesses_helper.rb | 18 | def access_involvement_advance_button(board, user, show_watchers: true, icon_only: false) | CODE |
| LOW | app/helpers/bridge_helper.rb | 24 | def bridge_share_card_description(card) | CODE |
| LOW | app/helpers/bridge_helper.rb | 32 | def bridge_share_board_description(board) | CODE |
| LOW | app/helpers/clipboard_helper.rb | 2 | def button_to_copy_to_clipboard(url, &) | CODE |
| LOW | app/helpers/entropy_helper.rb | 2 | def entropy_bubble_options_for(card) | CODE |
| LOW | app/helpers/entropy_helper.rb | 10 | def stalled_bubble_options_for(card) | CODE |
| LOW⚡ | app/helpers/pagination_helper.rb | 63 | def with_automatic_pagination(name, page, **properties) | CODE |
| LOW⚡ | app/helpers/pagination_helper.rb | 72 | def day_timeline_pagination_frame_tag(day_timeline, &) | CODE |
| LOW⚡ | app/helpers/pagination_helper.rb | 76 | def day_timeline_pagination_frame_id_for(day) | CODE |
| LOW⚡ | app/helpers/pagination_helper.rb | 80 | def day_timeline_pagination_link(day_timeline, filter) | CODE |
| LOW | test/webmock_ipaddr_extension.rb | 38 | def request_signature_from_request(net_http, request, body = nil) | CODE |
| LOW | test/integration/active_storage_authorization_test.rb | 283 | def attach_blob_as_rich_text_embed(container) | CODE |
| LOW | test/integration/notifications_test.rb | 160 | def assert_push_delivered_for(notification) | CODE |
| LOW | test/integration/pagination_blob_html_xss_test.rb | 118 | def create_unattached_html_blob(content_type: "text/html;charset=utf-8") | CODE |
| LOW | test/models/card/pinnable_test.rb | 56 | def assert_broadcasted_pin_update(&block) | CODE |
| 34 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | app/controllers/boards_controller.rb | 38 | @board.account.users.active.alphabetically.includes(:identity).partition { |user| selected_user_ids.include? user. | CODE |
| CRITICAL | app/controllers/notifications_controller.rb | 6 | @unread = Current.user.notifications.unread.ordered.preloaded.limit(max_unread_notifications) unless current_page_pa | CODE |
| CRITICAL | app/controllers/users_controller.rb | 9 | set_page_and_extract_portion_from Current.account.users.active.alphabetically.includes(:identity) | CODE |
| CRITICAL | app/controllers/cards/assignments_controller.rb | 5 | @assigned_to = @card.assignees.active.alphabetically.where.not(id: Current.user) | CODE |
| CRITICAL | app/controllers/cards/assignments_controller.rb | 6 | @users = @board.users.active.alphabetically.where.not(id: @card.assignees).where.not(id: Current.user) | CODE |
| CRITICAL | app/controllers/cards/taggings_controller.rb | 6 | @tags = Current.account.tags.all.alphabetically.where.not(id: @tagged_with) | CODE |
| CRITICAL | app/controllers/boards/accesses_controller.rb | 5 | set_page_and_extract_portion_from @board.account.users.active.alphabetically.includes(:identity) | CODE |
| CRITICAL | app/controllers/notifications/trays_controller.rb | 17 | Current.user.notifications.unread.preloaded.ordered.limit(MAX_ENTRIES_LIMIT) | CODE |
| CRITICAL | app/controllers/notifications/trays_controller.rb | 21 | Current.user.notifications.read.preloaded.ordered.limit(MAX_ENTRIES_LIMIT) | CODE |
| CRITICAL | script/load-prod-db-in-dev.rb | 51 | url = Rails.application.routes.url_helpers.root_url(Rails.application.config.action_controller.default_url_options.mer | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | mise.saas.toml | 1 | # SaaS-only mise overlay, loaded when MISE_ENV=saas (mise environment | COMMENT |
| LOW | app/models/zip_file/reader.rb | 1 | class ZipFile::Reader | COMMENT |
| LOW | app/models/concerns/attachments.rb | 1 | module Attachments | COMMENT |
| LOW | app/javascript/lib/action_pack/passkey.js | 1 | // Web components for the ActionPack::Passkey Ruby helpers. | COMMENT |
| LOW | app/jobs/search_reindex_job.rb | 1 | # Repair task — reindexes every searchable Card and Comment in the database. | COMMENT |
| LOW | app/helpers/pagination_helper.rb | 1 | module PaginationHelper | COMMENT |
| LOW | test/integration/pagination_blob_html_xss_test.rb | 1 | require "test_helper" | COMMENT |
| LOW | test/channels/solid_cable_adapter_test.rb | 1 | require "test_helper" | COMMENT |
| LOW | config/locales/en.yml | 1 | # Files in the config/locales directory are used for internationalization and | COMMENT |
| LOW | config/locales/en.yml | 21 | # | COMMENT |
| LOW | config/environments/production.rb | 61 | end | COMMENT |
| LOW | config/environments/test.rb | 1 | require "active_support/core_ext/integer/time" | 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/inflections.rb | 1 | # Be sure to restart your server when you modify this file. | COMMENT |
| LOW | config/initializers/active_storage_no_reuse.rb | 1 | # Enforce storage ledger integrity by preventing blob reuse in tracked contexts. | COMMENT |
| LOW | lib/rails_ext/active_record_replica_support.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/rails_ext/active_record_optimizer_hints.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/rails_ext/active_record_optimizer_hints.rb | 41 | # ignore these comments, making this a safe no-op across all databases. | COMMENT |
| LOW | lib/rails_ext/active_record_optimizer_hints.rb | 61 | # | COMMENT |
| LOW | lib/rails_ext/active_record_date_arithmetic.rb | 1 | # frozen_string_literal: true | COMMENT |
| LOW | lib/rails_ext/active_record_date_arithmetic.rb | 21 | # # => "DATE_SUB(last_active_at, INTERVAL COALESCE(auto_postpone_period, 3600) SECOND)" | COMMENT |
| LOW | lib/rails_ext/active_storage_authorization.rb | 1 | # HackerOne #3943339: never serve a blob inline with a media type a browser or | COMMENT |
| LOW | lib/action_pack/passkey.rb | 1 | # ActionPack::Passkey provides WebAuthn passkey registration and authentication backed by Active Record. | COMMENT |
| LOW | lib/action_pack/passkey.rb | 21 | # options = ActionPack::Passkey.authentication_options | COMMENT |
| LOW | lib/action_pack/railtie.rb | 1 | require_relative "web_authn" | COMMENT |
| LOW | lib/action_pack/web_authn.rb | 1 | # = Action Pack WebAuthn | COMMENT |
| LOW | lib/action_pack/web_authn.rb | 21 | # | COMMENT |
| LOW | lib/action_pack/passkey/holder.rb | 1 | # Adds passkey support to an Active Record model (the "holder" of passkeys). | COMMENT |
| LOW | lib/action_pack/passkey/holder.rb | 21 | # [+name+] | COMMENT |
| LOW | lib/action_pack/passkey/form_helper.rb | 1 | # View helpers for rendering passkey registration and sign-in buttons. | COMMENT |
| LOW | lib/action_pack/passkey/form_helper.rb | 41 | COMMENT | |
| LOW | lib/action_pack/passkey/request.rb | 1 | # = Action Pack Passkey Request | COMMENT |
| LOW | lib/action_pack/passkey/request.rb | 21 | # end | COMMENT |
| LOW | lib/action_pack/passkey/challenges_controller.rb | 1 | # = Action Pack Passkey Challenges Controller | COMMENT |
| LOW | lib/action_pack/web_authn/relying_party.rb | 1 | # = Action Pack WebAuthn Relying Party | COMMENT |
| LOW | lib/action_pack/web_authn/relying_party.rb | 21 | # The relying party identifier, typically the application's domain name | COMMENT |
| LOW | lib/action_pack/web_authn/public_key_credential.rb | 1 | # = Action Pack WebAuthn Public Key Credential | COMMENT |
| LOW | lib/action_pack/web_authn/public_key_credential.rb | 21 | # | COMMENT |
| LOW | lib/action_pack/web_authn/public_key_credential.rb | 41 | # [+public_key+] | COMMENT |
| LOW | lib/action_pack/web_authn/current.rb | 1 | # = Action Pack WebAuthn Current Attributes | COMMENT |
| LOW | lib/action_pack/web_authn/cose_key.rb | 1 | # = Action Pack WebAuthn COSE Key | COMMENT |
| LOW | lib/action_pack/web_authn/cose_key.rb | 21 | # | COMMENT |
| LOW | lib/action_pack/web_authn/cbor_decoder.rb | 1 | # = Action Pack WebAuthn CBOR Decoder | COMMENT |
| LOW | lib/action_pack/web_authn/cbor_decoder.rb | 21 | # The decoder supports the following CBOR types: | COMMENT |
| LOW | lib/action_pack/web_authn/cbor_decoder.rb | 41 | # [Simple values] | COMMENT |
| LOW | lib/action_pack/web_authn/cbor_decoder.rb | 81 | COMMENT | |
| LOW | lib/action_pack/web_authn/authenticator/data.rb | 1 | # = Action Pack WebAuthn Authenticator Data | COMMENT |
| LOW | lib/action_pack/web_authn/authenticator/data.rb | 21 | # data.user_verified? # => true | COMMENT |
| LOW | lib/action_pack/web_authn/authenticator/attestation.rb | 1 | # = Action Pack WebAuthn Attestation | COMMENT |
| LOW | lib/action_pack/web_authn/authenticator/attestation.rb | 21 | # | COMMENT |
| LOW | lib/action_pack/web_authn/authenticator/response.rb | 1 | # = Action Pack WebAuthn Authenticator Response | COMMENT |
| LOW | lib/action_pack/web_authn/authenticator/response.rb | 21 | # response = ActionPack::WebAuthn::Authenticator::AssertionResponse.new( | COMMENT |
| LOW | …ion_pack/web_authn/authenticator/assertion_response.rb | 1 | # = Action Pack WebAuthn Assertion Response | COMMENT |
| LOW | …ion_pack/web_authn/authenticator/assertion_response.rb | 21 | # ) | COMMENT |
| LOW | …n_pack/web_authn/authenticator/attestation_response.rb | 1 | # = Action Pack WebAuthn Attestation Response | COMMENT |
| LOW | …/web_authn/authenticator/attestation_verifiers/none.rb | 1 | # = Action Pack WebAuthn None Attestation Verifier | COMMENT |
| LOW | …ack/web_authn/public_key_credential/request_options.rb | 1 | # = Action Pack WebAuthn Public Key Credential Request Options | COMMENT |
| LOW | …ck/web_authn/public_key_credential/creation_options.rb | 1 | # = Action Pack WebAuthn Public Key Credential Creation Options | COMMENT |
| LOW | …ck/web_authn/public_key_credential/creation_options.rb | 21 | # A unique identifier for the user account. Will be Base64URL-encoded in the | COMMENT |
| 11 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | test/integration/active_storage_authorization_test.rb | 110 | # Create the draft card and attachment with proper Current context | COMMENT |
| MEDIUM | test/models/webhook/triggerable_test.rb | 13 | # Create a test event | COMMENT |
| MEDIUM | test/models/storage/attachment_tracking_test.rb | 90 | # Create a model that doesn't respond to :board | COMMENT |
| MEDIUM | test/models/storage/attachment_tracking_test.rb | 104 | # Create a card with nil board association won't happen in practice | COMMENT |
| MEDIUM | test/models/storage/totaled_test.rb | 177 | # Create a new account to destroy (don't destroy fixtures) | COMMENT |
| MEDIUM | test/models/account/import_test.rb | 148 | # Create a ZIP with no account.json | COMMENT |
| MEDIUM | …data_transfer/action_text/rich_text_record_set_test.rb | 10 | # Create a malicious ActionText record that points to the victim's card | COMMENT |
| MEDIUM | test/controllers/cards_controller_test.rb | 289 | # Create a card with custom timestamps (simulating import) | 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 | lib/action_pack/web_authn/authenticator/attestation.rb | 31 | # The following methods are delegated to +authenticator_data+: | 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 | db/queue_schema.rb | 1 | # This file is auto-generated from the current state of the database. Instead | COMMENT |
| MEDIUM | db/queue_schema.rb | 5 | # This file is the source Rails uses to define your schema when running `bin/rails | COMMENT |
| MEDIUM | db/cache_schema.rb | 1 | # This file is auto-generated from the current state of the database. Instead | COMMENT |
| MEDIUM | db/cache_schema.rb | 5 | # This file is the source Rails uses to define your schema when running `bin/rails | COMMENT |
| MEDIUM | db/cable_schema.rb | 1 | # This file is auto-generated from the current state of the database. Instead | COMMENT |
| MEDIUM | db/cable_schema.rb | 5 | # This file is the source Rails uses to define your schema when running `bin/rails | COMMENT |
| MEDIUM | db/schema_sqlite.rb | 1 | # This file is auto-generated from the current state of the database. Instead | COMMENT |
| MEDIUM | db/schema_sqlite.rb | 5 | # This file is the source Rails uses to define your schema when running `bin/rails | COMMENT |
| MEDIUM | saas/db/saas_schema.rb | 1 | # This file is auto-generated from the current state of the database. Instead | COMMENT |
| MEDIUM | saas/db/saas_schema.rb | 5 | # This file is the source Rails uses to define your schema when running `bin/rails | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/javascript/controllers/upload_preview_controller.js | 4 | static targets = [ "image", "input", "fileName", "placeholder" ] | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 8 | name: "user@example.com", | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 16 | assert_equal "user@example.com", @options.name | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 42 | assert_equal "user@example.com", user["name"] | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 59 | name: "user@example.com", | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 81 | name: "user@example.com", | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 100 | name: "user@example.com", | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 113 | name: "user@example.com", | CODE |
| LOW | …b_authn/public_key_credential/creation_options_test.rb | 124 | name: "user@example.com", | CODE |
| LOW | docs/api/sections/authentication.md | 53 | -d '{"email_address": "user@example.com"}' \ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | app/models/account/seeder.rb | 24 | # --------------- | COMMENT |
| MEDIUM | app/models/account/seeder.rb | 26 | # --------------- | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | app/jobs/search_reindex_job.rb | 12 | # Usage: | COMMENT |
| LOW | test/webmock_ipaddr_extension.rb | 3 | # Usage: | COMMENT |
| LOW | lib/rails_ext/active_record_replica_support.rb | 6 | # Usage: | COMMENT |
| LOW | lib/rails_ext/active_record_date_arithmetic.rb | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | config/deploy.yml | 19 | ssl: true # Set this to false if you *don't* want SSL | CODE |
| LOW | config/environments/production.rb | 25 | # Set BASE_URL to your instance's public URL (e.g., https://fizzy.example.com) | COMMENT |
| LOW | config/environments/production.rb | 109 | # Set this to true and configure the email server for immediate delivery to raise delivery errors. | COMMENT |
| LOW | config/environments/test.rb | 47 | # Set host to be used by links generated in mailer templates. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | lib/action_pack/web_authn/public_key_credential.rb | 3 | # Represents a WebAuthn public key credential and orchestrates the registration | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | db/migrate/20251113163145_ensure_account_id_index.rb | 78 | # a single index, since Triggerable only queries for `subscribed_actions` in conjunction with | COMMENT |