AI Slop Code Risk Monitor

we-promise/sure

SlopCodeMonitor badge for we-promise/sure Adjusted legacy signal; badge bands: 25 / 50 / 75 (different from dashboard bands).

The personal finance app for everyone (by everyone)

5.5 Moderate pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for we-promise/sure, a Ruby project with 10,742 GitHub stars. SynthScan examined 774,680 lines of code across 6122 source files, recording 2378 pattern matches distributed across 15 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.

5.5
Adjusted Signal
5.5
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
10.7K
Stars
Ruby
Language
774.7K
Lines of Code
6.1K
Files
2.4K
Pattern Hits
2026-10-31
Scan Date
0.01
HC Hit Rate

Risk Review · Payload v1

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

Payload schema: 1.0.0 · Engine: 2.0.0 · Scoring: heuristic-density-v1 · Scan date: 2026-10-31.

Cognitive Ownership Risk 14.5/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 4.2/100 · LOW

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

Agent Over-Engineering Ratio 11.5/100 · LOW

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

PR Review Velocity Impact 23.4/100 · LOW

Which changes need focused human review? 2378 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 39HIGH 33MEDIUM 615LOW 1691

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 2378 distinct pattern matches across 15 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.

Decorative Section Separators387 hits · 1173 pts
SeverityFileLineSnippetContext
MEDIUM⚡compose.example.yml1# ===========================================================================COMMENT
MEDIUM⚡compose.example.yml3# ===========================================================================COMMENT
MEDIUMcompose.example.yml23# ----------------COMMENT
MEDIUMcompose.example.yml30# ----------------------------------------COMMENT
MEDIUMcompose.example.ai.yml1# ===========================================================================COMMENT
MEDIUMcompose.example.ai.yml4# ===========================================================================COMMENT
MEDIUMcompose.example.ai.yml44# ----------------COMMENT
MEDIUMcompose.example.ai.yml51# ----------------------------------------COMMENT
MEDIUM⚡app/models/budget.rb407 # =============================================================================COMMENT
MEDIUM⚡app/models/budget.rb409 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb449 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb451 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb479 # =============================================================================COMMENT
MEDIUMapp/models/budget.rb481 # =============================================================================COMMENT
MEDIUMapp/models/qif_import.rb194 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb196 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb281 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb283 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb440 # ------------------------------------------------------------------COMMENT
MEDIUMapp/models/qif_import.rb442 # ------------------------------------------------------------------COMMENT
MEDIUM⚡app/models/demo/generator.rb1334 # ---------------------------------------------------------------------------COMMENT
MEDIUM⚡app/models/demo/generator.rb1336 # ---------------------------------------------------------------------------COMMENT
MEDIUM⚡app/models/demo/generator.rb1343 # ---------------------------------------------------------------------------COMMENT
MEDIUM⚡app/models/demo/generator.rb1345 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb479 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb481 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb953 # -----------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb955 # -----------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1092 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1094 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1117 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1119 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1269 # ---------------------------------------------------------------------------COMMENT
MEDIUMapp/models/demo/generator.rb1271 # ---------------------------------------------------------------------------COMMENT
MEDIUM⚡app/models/provider/yahoo_finance.rb796 # ================================COMMENT
MEDIUM⚡app/models/provider/yahoo_finance.rb798 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb121 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb123 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb192 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb194 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb568 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb570 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb723 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb725 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb779 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb781 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb977 # ================================COMMENT
MEDIUMapp/models/provider/yahoo_finance.rb979 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb60 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb62 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb130 # ================================COMMENT
MEDIUMapp/models/provider/twelve_data.rb132 # ================================COMMENT
MEDIUMapp/models/provider/alpha_vantage.rb89 # ================================COMMENT
MEDIUMapp/models/provider/alpha_vantage.rb91 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb80 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb82 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb180 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb182 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb205 # ================================COMMENT
MEDIUMapp/models/provider/moex_public.rb207 # ================================COMMENT
327 more matches not shown…
Hyper-Verbose Identifiers696 hits · 714 pts
SeverityFileLineSnippetContext
LOWapp/models/snaptrade_account.rb202 def cash_equivalent_position_value(currency_code = currency)CODE
LOWapp/models/category_import.rb113 def ensure_placeholder_category(name)CODE
LOWapp/models/redbark_item.rb40 def import_latest_redbark_data(sync: nil, fetched_at: Time.current)CODE
LOWapp/models/account.rb301 def create_from_simplefin_account(simplefin_account, account_type, subtype = nil)CODE
LOWapp/models/account.rb350 def create_from_enable_banking_account(enable_banking_account, account_type, subtype = nil)CODE
LOWapp/models/account.rb401 def create_from_coinbase_account(coinbase_account)CODE
LOWapp/models/account.rb426 def create_from_binance_account(binance_account)CODE
LOWapp/models/account.rb479 def create_from_trade_republic_account(trade_republic_account)CODE
LOW⚡app/models/account.rb498 def create_from_kraken_account(kraken_account)CODE
LOW⚡app/models/account.rb504 def create_from_coinspot_account(coinspot_account)CODE
LOW⚡app/models/account.rb511 def create_from_onchain_wallet_account(onchain_wallet_account)CODE
LOWapp/models/account.rb533 def create_from_crypto_exchange_account(provider_account, family:)CODE
LOWapp/models/account.rb595 def build_simplefin_accountable_attributes(simplefin_account, account_type, subtype)CODE
LOWapp/models/account.rb916 def restore_status_after_failed_enqueue(restoring)CODE
LOWapp/models/category.rb290 def localized_default_name_for(name)CODE
LOWapp/models/category.rb297 def default_category_translation_key_for(name)CODE
LOWapp/models/investment_statement.rb291 def convert_to_family_currency(amount, from_currency)CODE
LOWapp/models/market_data_importer.rb152 def get_first_required_exchange_rate_date(from_currency:)CODE
LOWapp/models/rule_import.rb123 def extract_conditions_and_actions(fragments)CODE
LOWapp/models/rule_import.rb143 def create_or_update_rule_from_row(row)CODE
LOWapp/models/rule_import.rb241 def resolve_import_condition_value(condition_data)CODE
LOWapp/models/rule_import.rb266 def resolve_import_action_value(action_data)CODE
LOWapp/models/rule_import.rb296 def resolve_import_multi_tag_value(value)CODE
LOWapp/models/rule_import.rb304 def resolve_import_split_value(value)CODE
LOWapp/models/redbark_account.rb106 def normalized_liability_balance(balance:, accountable_type: nil, account: nil)CODE
LOWapp/models/goal.rb220 def whole_account_conflicts_on(account_ids, excluding_link_id: nil)CODE
LOWapp/models/income_statement.rb149 def daily_expense_category_ids(period:)CODE
LOWapp/models/income_statement.rb265 def unfiltered_daily_expense_series(period)CODE
LOWapp/models/income_statement.rb284 def daily_expense_by_category(period)CODE
LOWapp/models/invitation.rb54 def release_provider_item_ownership(user)CODE
LOWapp/models/ai_health.rb310 def openai_compatible_provider_name(value)CODE
LOW⚡app/models/sure_import.rb62 def dry_run_totals_from_ndjson(content)CODE
LOW⚡app/models/sure_import.rb66 def dry_run_totals_from_line_type_counts(counts)CODE
LOW⚡app/models/sure_import.rb72 def expected_record_counts_from_ndjson(content)CODE
LOW⚡app/models/sure_import.rb76 def expected_record_counts_from_line_type_counts(counts)CODE
LOWapp/models/sure_import.rb313 def build_readback_verification(before_counts:, status_for_mismatch:, reused_counts: {}, created_counts: {})CODE
LOWapp/models/sophtron_item.rb69 def import_latest_sophtron_data(sync: nil)CODE
LOWapp/models/sophtron_item.rb269 def persist_remote_sophtron_accounts(accounts)CODE
LOWapp/models/brex_account.rb190 def build_institution_metadata(snapshot, kind)CODE
LOWapp/models/provider_merchant.rb78 def convert_to_family_merchant_for(family, attributes = {})CODE
LOWapp/models/snaptrade_item.rb43 def import_latest_snaptrade_data(sync: nil)CODE
LOWapp/models/indexa_capital_item.rb47 def import_latest_indexa_capital_data(sync: nil)CODE
LOWapp/models/family.rb197 def resolved_categorization_provider(&on_jev_error)CODE
LOWapp/models/family.rb235 def shadow_categorization_provider(&on_jev_error)CODE
LOWapp/models/family.rb296 def request_plaid_transactions_refreshes_later(source:)CODE
LOWapp/models/family.rb325 def secondary_enabled_currency_objects(extra: [])CODE
LOWapp/models/family.rb329 def capture_plaid_refresh_enqueue_failure(source:, error_class:)CODE
LOWapp/models/family.rb383 def auto_share_existing_accounts_with(user)CODE
LOW⚡app/models/family.rb504 def auto_categorize_transactions_later(transactions, rule_run_id: nil)CODE
LOW⚡app/models/family.rb510 def auto_categorize_transactions(transaction_ids)CODE
LOW⚡app/models/family.rb518 def bayes_categorize_uncategorized(scope = categorizable_transactions)CODE
LOWapp/models/family.rb600 def auto_detect_transaction_merchants_later(transactions, rule_run_id: nil)CODE
LOWapp/models/family.rb604 def auto_detect_transaction_merchants(transaction_ids)CODE
LOWapp/models/family.rb732 def securities_with_plan_restrictions(provider:)CODE
LOWapp/models/questrade_account.rb142 def extract_institution_metadata(data)CODE
LOWapp/models/enable_banking_item.rb424 def import_accounts_from_session(accounts_data)CODE
LOWapp/models/rule.rb200 def scope_for_transaction_ids(ids)CODE
LOW⚡app/models/valuation.rb12 def build_reconciliation_name(accountable_type)CODE
LOW⚡app/models/valuation.rb17 def build_opening_anchor_name(accountable_type)CODE
LOW⚡app/models/valuation.rb22 def build_current_anchor_name(accountable_type)CODE
636 more matches not shown…
Over-Commented Block670 hits · 618 pts
SeverityFileLineSnippetContext
LOWpipelock.example.yaml1# Pipelock configuration for Docker ComposeCOMMENT
LOWcompose.example.yml1# ===========================================================================COMMENT
LOWcompose.example.yml21#COMMENT
LOWcompose.example.yml61 OPENAI_MODEL: ${OPENAI_MODEL:-}COMMENT
LOWcompose.example.ai.yml1# ===========================================================================COMMENT
LOWcompose.example.ai.yml21# directly to Sure's /mcp endpoint. Note: /mcp is still reachableCOMMENT
LOWcompose.example.ai.yml41# https://github.com/we-promise/sure/blob/main/docs/hosting/docker.mdCOMMENT
LOWcompose.example.ai.yml81 # Set both values to activate. MCP_USER_EMAIL must match an existing user's email.COMMENT
LOWcompose.example.ai.yml101 #COMMENT
LOWcompose.example.ai.yml141 image: ghcr.io/luckypipewrench/pipelock:3.4.0@sha256:2e6caa43967a5ef19cacbce00188d829c1b5de1eb0ad304a51d2085f32c5694COMMENT
LOWapp/constraints/super_admin_constraint.rb1# Routing constraint for mounting engines that bypass ApplicationControllerCOMMENT
LOWapp/models/snaptrade_account.rb81COMMENT
LOWapp/models/worker_ai_health.rb1# frozen_string_literal: trueCOMMENT
LOWapp/models/worker_ai_health.rb21# times (or across a few replicas) can see more than one process's result,COMMENT
LOWapp/models/account.rb141 delegated_type :accountable, types: Accountable::TYPES, dependent: :destroyCOMMENT
LOWapp/models/account.rb261 manager = Account::OpeningBalanceManager.new(account)COMMENT
LOWapp/models/account.rb561 # An exchange account's ledger is imported from inception, so it opens atCOMMENT
LOWapp/models/account.rb681 endCOMMENT
LOWapp/models/account.rb721 # DestroyJob retries a deadlock, so the account stays pending_deletion (andCOMMENT
LOWapp/models/investment_statement.rb321 # Callers that need return trends should call combined_holding_trend onlyCOMMENT
LOWapp/models/redbark_account.rb21 validates :name, :currency, :redbark_account_id, presence: trueCOMMENT
LOWapp/models/redbark_account.rb41 # unrelated update! (upsert_from_redbark! touching balance, name, currencyCOMMENT
LOWapp/models/redbark_account.rb81 # * Plaid (US / CA) reports the amount owed as a POSITIVE balance forCOMMENT
LOWapp/models/redbark_account.rb101 # @param accountable_type [String] the accountable type of the Sure accountCOMMENT
LOWapp/models/goal.rb1class Goal < ApplicationRecordCOMMENT
LOWapp/models/goal.rb41 # the monthly job would leave a brand-new one wrong until the 1st, so theCOMMENT
LOWapp/models/goal.rb81 # than permanently snapshot a partial subtotal.COMMENT
LOWapp/models/goal.rb101COMMENT
LOWapp/models/goal.rb141 # in December — so RefreshMaintainedGoalTargetsJob rewrites `target_amount`COMMENT
LOWapp/models/goal.rb181 triples.map { |(_, goal_id, amount)| { goal_id: goal_id, allocated_amount: amount } }COMMENT
LOWapp/models/goal.rb221 ids = Array(account_ids).compactCOMMENT
LOWapp/models/goal.rb521 convert_to_goal_currency(median).to_d.positive?COMMENT
LOWapp/models/goal.rb581 Money.new(amount, currency)COMMENT
LOWapp/models/goal.rb601 # guessing would silently pick a side; the caller has to say which pot theCOMMENT
LOWapp/models/goal.rb641 if native_amount > link.allocated_amount.to_dCOMMENT
LOWapp/models/goal.rb821 def projection_payloadCOMMENT
LOWapp/models/goal.rb1121 base = contributions_basis? ? net_contributed_for(account) : account.balance.to_dCOMMENT
LOWapp/models/goal.rb1241 endCOMMENT
LOWapp/models/goal.rb1261 attrs[:consumed_amount] = 0 if completed_amount.present?COMMENT
LOWapp/models/goal.rb1441COMMENT
LOWapp/models/income_statement.rb121 currency: family.currencyCOMMENT
LOWapp/models/sophtron_item.rb1# Represents a Sophtron integration item for a family.COMMENT
LOWapp/models/entry.rb41 validate :cannot_unexclude_split_parentCOMMENT
LOWapp/models/entry.rb421 # Checks if entry should be protected from provider sync overwrites.COMMENT
LOWapp/models/entry.rb621 endCOMMENT
LOWapp/models/entry.rb741 # category or merchant selected either still fails the presenceCOMMENT
LOWapp/models/background_job_health.rb1require "sidekiq/api"COMMENT
LOWapp/models/sophtron_account.rb1# Represents a single bank account from Sophtron.COMMENT
LOWapp/models/family.rb141 # indexed query rather than loading every family and asking each in Ruby.COMMENT
LOWapp/models/family.rb801 endCOMMENT
LOWapp/models/family.rb941 # resolves both forms, and is the same lookup `Localize#resolved_timezone`COMMENT
LOWapp/models/enable_banking_item.rb361COMMENT
LOWapp/models/insight.rb1# A proactive, typed observation about a family's finances, produced nightlyCOMMENT
LOWapp/models/insight.rb41 # Mirrors the DB unique index so direct callers get a validation errorCOMMENT
LOWapp/models/rule.rb41 #COMMENT
LOWapp/models/rule.rb121 rescue Rule::SafeRegex::TimeoutErrorCOMMENT
LOWapp/models/recurring_occurrence.rb1# One expected instance of a recurring obligation: the August rent, thisCOMMENT
LOWapp/models/loan.rb21 # schedule, no tab. VARIABLE_RATE_TYPES is the form's vocabulary only,COMMENT
LOWapp/models/loan.rb61 # Deliberately still nil for a variable loan even though it now has aCOMMENT
LOWapp/models/loan.rb141 .sort_by(&:first)COMMENT
610 more matches not shown…
Self-Referential Comments196 hits · 598 pts
SeverityFileLineSnippetContext
MEDIUMpipelock.example.yaml4# This file is validated in CI with Pipelock 3.4.0. See the release changelogCOMMENT
MEDIUM⚡compose.example.yml8# This file is an example Docker Compose configuration for self hostingCOMMENT
MEDIUMcompose.example.ai.yml151 # Create the dirs yourself first so they are owned by your host userCOMMENT
MEDIUMapp/models/recurring_transaction.rb504 # Create a manual recurring transfer from an existing Transfer pair.COMMENT
MEDIUMapp/models/recurring_transaction.rb629 # Create a manual recurring transaction from an existing transactionCOMMENT
MEDIUMapp/models/assistant/function/import_bank_statement.rb132 # Create a CSV from extracted transactionsCOMMENT
MEDIUMapp/models/assistant/function/import_bank_statement.rb135 # Create a TransactionImportCOMMENT
MEDIUM…/models/plaid_account/transactions/category_matcher.rb11# This class is simply a FAST and CHEAP way to match categories that are high confidence.COMMENT
MEDIUMapp/models/family/monobank_connectable.rb13 # Create a Monobank connection with the given personal token and start its first sync.COMMENT
MEDIUMapp/models/family/fio_connectable.rb13 # Create a Fio connection with the given API token and start its first sync. A tokenCOMMENT
MEDIUMapp/models/family/data_exporter.rb12 # Create a StringIO to hold the zip data in memoryCOMMENT
MEDIUMapp/models/family/data_importer.rb662 # Creating a series generates its own occurrences, so each of these matchesCOMMENT
MEDIUMapp/models/family/up_connectable.rb13 # Create an Up item with the given token and trigger an initial sync.COMMENT
MEDIUMapp/models/family/auto_transfer_matchable.rb174 # Create the transfer for a matched candidate, tolerating a concurrent syncCOMMENT
MEDIUMapp/models/provider/configurable.rb125 # Define a custom check for whether this provider is configuredCOMMENT
MEDIUMapp/models/provider/configurable.rb133 # Define a configuration fieldCOMMENT
MEDIUMapp/models/sophtron_entry/processor.rb137 # Create a stable merchant ID from the merchant nameCOMMENT
MEDIUMapp/models/mercury_entry/processor.rb99 # Create a stable merchant ID from the counterparty nameCOMMENT
MEDIUMapp/models/vector_store/base.rb7 # Create a new vector store / collection / namespaceCOMMENT
MEDIUMapp/models/eval/langfuse/client.rb235 # Create a new request with the same properties (needed for retry since request body may be consumed)COMMENT
MEDIUMapp/models/coinbase_account/processor.rb206 # Create the tradeCOMMENT
MEDIUMapp/models/lunchflow_entry/processor.rb113 # Create a deterministic hash from key transaction attributesCOMMENT
MEDIUMapp/models/lunchflow_entry/processor.rb182 # Create a stable merchant ID from the merchant nameCOMMENT
MEDIUMapp/models/concerns/enrichable.rb4# This module defines how models should, lock, unlock, and edit attributesCOMMENT
MEDIUMapp/controllers/lunchflow_items_controller.rb185 # Create the internal Account with proper balance initializationCOMMENT
MEDIUMapp/controllers/simplefin_items_controller.rb141 # Create a Sync and enqueue it to run asynchronously with a runtime-only flagCOMMENT
MEDIUMapp/controllers/up_items_controller.rb28 # Create an Up connection and kick off its first sync.COMMENT
MEDIUMapp/controllers/snaptrade_items_controller.rb641 # Create the Sure accountCOMMENT
MEDIUMapp/controllers/plaid_items_controller.rb133 # Create the link via AccountProviderCOMMENT
MEDIUMapp/controllers/monobank_items_controller.rb13 # Create a Monobank connection and kick off its first sync.COMMENT
MEDIUMapp/controllers/fio_items_controller.rb19 # Create a Fio connection and kick off its first sync.COMMENT
MEDIUMapp/controllers/fio_items_controller.rb130 # Create a new Sure account for the connection's account and link the two.COMMENT
MEDIUMapp/controllers/oidc_accounts_controller.rb174 # Create the OIDC (or other SSO) identityCOMMENT
MEDIUMapp/controllers/enable_banking_items_controller.rb257 # Create the internal Account (uses save! internally, will raise on failure)COMMENT
MEDIUMapp/controllers/mercury_items_controller.rb185 # Create the internal Account with proper balance initializationCOMMENT
MEDIUMapp/controllers/api/v1/test_controller.rb20 # Create a mock resource that belongs to a different familyCOMMENT
MEDIUMapp/controllers/api/v1/tags_controller.rb45 # Create a new tag for the familyCOMMENT
MEDIUMtest/models/coinstats_item_test.rb160 # Create a linked accountCOMMENT
MEDIUMtest/models/coinstats_item_test.rb178 # Create an unlinked accountCOMMENT
MEDIUMtest/models/coinstats_item_test.rb209 # Create a linked accountCOMMENT
MEDIUMtest/models/coinstats_item_test.rb223 # Create an unlinked accountCOMMENT
MEDIUM⚡test/models/income_statement_test.rb888 # Create a fresh family with ONLY tax-advantaged accountsCOMMENT
MEDIUM⚡test/models/income_statement_test.rb896 # Create a 401k account (tax-deferred)COMMENT
MEDIUM⚡test/models/income_statement_test.rb904 # Create a Roth IRA account (tax-exempt)COMMENT
MEDIUMtest/models/income_statement_test.rb380 # Create a regular transfer between accountsCOMMENT
MEDIUMtest/models/income_statement_test.rb394 # Create a loan payment transactionCOMMENT
MEDIUMtest/models/income_statement_test.rb407 # Create a one-time transactionCOMMENT
MEDIUMtest/models/income_statement_test.rb420 # Create a payment transaction (credit card payment)COMMENT
MEDIUMtest/models/income_statement_test.rb433 # Create an excluded transactionCOMMENT
MEDIUMtest/models/income_statement_test.rb494 # Create a truly empty familyCOMMENT
MEDIUMtest/models/income_statement_test.rb526 # Create a transfer to investment account (marked as investment_contribution)COMMENT
MEDIUMtest/models/income_statement_test.rb606 # Create a Roth IRA (tax-exempt) investment accountCOMMENT
MEDIUMtest/models/income_statement_test.rb614 # Create a dividend transaction in the Roth IRACOMMENT
MEDIUMtest/models/income_statement_test.rb628 # Create a 401k (tax-deferred) investment accountCOMMENT
MEDIUMtest/models/income_statement_test.rb636 # Create a dividend transaction in the 401kCOMMENT
MEDIUMtest/models/income_statement_test.rb650 # Create a taxable brokerage accountCOMMENT
MEDIUMtest/models/income_statement_test.rb658 # Create a dividend transaction in the taxable accountCOMMENT
MEDIUMtest/models/income_statement_test.rb672 # Create a crypto account (default taxable)COMMENT
MEDIUMtest/models/income_statement_test.rb680 # Create a transaction in the crypto accountCOMMENT
MEDIUMtest/models/income_statement_test.rb692 # Create a crypto account in a tax-deferred retirement accountCOMMENT
136 more matches not shown…
Hallucination Indicators39 hits · 405 pts
SeverityFileLineSnippetContext
CRITICALapp/models/goal.rb1338 "#{symbol}#{amount_f.round.to_i.to_s.reverse.gsub(/(\d{3})(?=\d)/, '\1,').reverse}"CODE
CRITICALapp/models/provider/coinspot_adapter.rb21 coinspot_items = family.coinspot_items.active.credentials_configured.ordered.select(&:credentials_configured?)CODE
CRITICALapp/models/provider/coinspot_adapter.rb116 credentialed_items = family.coinspot_items.active.credentials_configured.ordered.select(&:credentials_configured?)CODE
CRITICALapp/models/provider/kraken_adapter.rb16 kraken_items = family.kraken_items.active.credentials_configured.ordered.select(&:credentials_configured?)CODE
CRITICALapp/models/provider/kraken_adapter.rb97 credentialed_items = family.kraken_items.active.credentials_configured.ordered.select(&:credentials_configured?)CODE
CRITICALapp/javascript/controllers/sankey_preview_controller.js216 const feedback = this.formTarget.elements.feedback.value.trim();CODE
CRITICALapp/controllers/insights_controller.rb14 Current.family.insights.visible.active.update_all(status: "read", read_at: Time.current, updated_at: Time.current)CODE
CRITICALapp/controllers/insights_controller.rb71 @feed_insights = Current.family.insights.visible.ordered.limit(Insight::FEED_LIMIT).to_aCODE
CRITICALapp/controllers/categories_controller.rb173 Current.family.categories.alphabetically.roots.where.not(id: @category.id)CODE
CRITICALapp/controllers/brex_items_controller.rb35 brex_items: Current.family.brex_items.active.ordered.includes(:syncs, :brex_accounts))CODE
CRITICALapp/controllers/binance_items_controller.rb64 binance_items = Current.family.binance_items.active.ordered.select(&:credentials_configured?)CODE
CRITICALapp/controllers/wise_items_controller.rb286 wise_items: Current.family.wise_items.active.ordered.includes(:syncs, :wise_accounts))CODE
CRITICALapp/controllers/pages_controller.rb310 insights = Current.family.insights.visible.ordered.limit(Insight::FEED_LIMIT)CODE
CRITICALapp/controllers/trade_republic_items_controller.rb628 Current.family.trade_republic_items.active.where.not(id: @trade_republic_item.id)CODE
CRITICALapp/controllers/coinbase_items_controller.rb72 coinbase_items = Current.family.coinbase_items.active.ordered.select(&:credentials_configured?)CODE
CRITICALapp/controllers/accounts_controller.rb30 @fio_items = visible_provider_items(family.fio_items.active.ordered.with_attached_logo.includes(:fio_accounts))CODE
CRITICALapp/controllers/kraken_items_controller.rb172 credentialed_items = Current.family.kraken_items.active.credentials_configured.ordered.select(&:credentials_configCODE
CRITICALapp/controllers/mercury_items_controller.rb430 mercury_items: Current.family.mercury_items.active.ordered.includes(:syncs, :mercury_accountCODE
CRITICALapp/controllers/mercury_items_controller.rb710 Current.family.mercury_items.active.ordered.select(&:credentials_configured?)CODE
CRITICAL⚡app/controllers/settings/providers_controller.rb284 @wise_items = Current.family.wise_items.active.ordered.includes(:syncs, :wise_accounts)CODE
CRITICAL⚡app/controllers/settings/providers_controller.rb286 @mercury_items = Current.family.mercury_items.active.ordered.includes(:syncs, :mercury_accounts)CODE
CRITICAL⚡app/controllers/settings/providers_controller.rb288 @brex_items = Current.family.brex_items.active.ordered.includes(:syncs, :brex_accounts)CODE
CRITICALapp/controllers/settings/providers_controller.rb306 @trade_republic_items = Current.family.trade_republic_items.active.ordered.includes(:trade_republic_accounts)CODE
CRITICALapp/controllers/settings/providers_controller.rb344 @trade_republic_items = Current.family.trade_republic_items.active.ordered.includes(:trade_republic_accounts)CODE
CRITICALapp/controllers/settings/providers_controller.rb350 @questrade_items = Current.family.questrade_items.active.ordered.select(:id)CODE
CRITICALapp/controllers/settings/api_keys_controller.rb9 @api_keys = Current.user.api_keys.active.visible.order(created_at: :desc)CODE
CRITICALapp/controllers/settings/api_keys_controller.rb57 @api_key = Current.user.api_keys.active.visible.find(params[:id])CODE
CRITICALtest/models/balance_sheet_test.rb222 assert_equal %w[Savings Checking Another Brokerage], balance_sheet.assets.account_groups.first.accounts.map(&:name)CODE
CRITICALtest/models/balance_sheet_test.rb223 assert_equal %w[Card], balance_sheet.liabilities.account_groups.first.accounts.map(&:name)CODE
CRITICALtest/system/category_rule_prompt_test.rb80 other_entry = @user.family.entries.transactions.where.not(id: @entry.id).order(date: :desc).firstCODE
CRITICALtest/system/bills_mobile_test.rb20 page.driver.browser.manage.window.resize_to(*PHONE)CODE
CRITICALtest/system/bills_mobile_test.rb24 page.driver.browser.manage.window.resize_to(1400, 1400)CODE
CRITICALtest/system/bills_mobile_test.rb99 page.driver.browser.manage.window.resize_to(1920, 1400)CODE
CRITICALtest/system/bills_mobile_test.rb111 page.driver.browser.manage.window.resize_to(*PHONE)CODE
CRITICALtest/system/bills_mobile_test.rb171 page.driver.browser.manage.window.resize_to(1920, 1400)CODE
CRITICALtest/system/combobox_dark_theme_test.rb23 page.driver.browser.manage.window.resize_to(*PHONE)CODE
CRITICALtest/system/bill_drawer_test.rb37 page.driver.browser.manage.window.resize_to(375, 812)CODE
CRITICALtest/system/bill_drawer_test.rb54 page.driver.browser.manage.window.resize_to(1400, 1400)CODE
CRITICALtest/controllers/insights_controller_test.rb151 @user.family.insights.active.where.not(id: @insight.id).update_all(status: "read")CODE
Magic Placeholder Names32 hits · 160 pts
SeverityFileLineSnippetContext
HIGHconfig/locales/views/settings/api_keys/uk.yml34 your_api_key: "Ваш ключ API"CODE
HIGHconfig/locales/views/settings/api_keys/nb.yml65 your_api_key: "Din API-nøkkel"CODE
HIGHconfig/locales/views/settings/api_keys/ca.yml36 your_api_key: La teva clau APICODE
HIGHconfig/locales/views/settings/api_keys/ca.yml119 your_api_key: La teva clau APICODE
HIGHconfig/locales/views/settings/api_keys/pt-BR.yml66 your_api_key: "Sua Chave de API"CODE
HIGHconfig/locales/views/settings/api_keys/es.yml40 your_api_key: Tu clave APICODE
HIGHconfig/locales/views/settings/api_keys/es.yml107 your_api_key: Tu Clave APICODE
HIGHconfig/locales/views/settings/api_keys/hu.yml38 your_api_key: "Az API-kulcsod"CODE
HIGHconfig/locales/views/settings/api_keys/hu.yml98 your_api_key: "Az API-kulcsod"CODE
HIGHconfig/locales/views/settings/api_keys/ro.yml66 your_api_key: "Cheia ta API"CODE
HIGHconfig/locales/views/settings/api_keys/pt-PT.yml37 your_api_key: "A Sua Chave de API"CODE
HIGHconfig/locales/views/settings/api_keys/de.yml57 your_api_key: Dein API-KeyCODE
HIGHconfig/locales/views/settings/api_keys/de.yml89 your_api_key: Dein API-SchlüsselCODE
HIGHconfig/locales/views/settings/api_keys/it.yml53 your_api_key: "La tua chiave API"CODE
HIGHconfig/locales/views/settings/api_keys/it.yml114 your_api_key: "La tua chiave API"CODE
HIGHconfig/locales/views/settings/api_keys/pl.yml24 your_api_key: Twój klucz APICODE
HIGHconfig/locales/views/settings/api_keys/pl.yml120 your_api_key: Twój klucz APICODE
HIGHconfig/locales/views/settings/api_keys/en.yml37 your_api_key: "Your API Key"CODE
HIGHconfig/locales/views/settings/api_keys/ru.yml35 your_api_key: Ваш API-ключCODE
HIGHconfig/locales/views/settings/api_keys/ru.yml133 your_api_key: Ваш API-ключCODE
HIGHconfig/locales/views/settings/api_keys/fr.yml30 your_api_key: Votre clé APICODE
HIGHconfig/locales/views/settings/api_keys/fr.yml113 your_api_key: Votre clé APICODE
HIGHconfig/locales/views/settings/api_keys/zh-TW.yml42 your_api_key: 您的 API 金鑰CODE
HIGHconfig/locales/views/settings/api_keys/zh-TW.yml109 your_api_key: 您的 API 金鑰CODE
HIGHconfig/locales/views/settings/api_keys/tr.yml25 your_api_key: API AnahtarınızCODE
HIGHconfig/locales/views/settings/api_keys/tr.yml140 your_api_key: API AnahtarınızCODE
HIGHconfig/locales/views/settings/api_keys/vi.yml38 your_api_key: "Khóa API của bạn"CODE
HIGHconfig/locales/views/settings/api_keys/vi.yml98 your_api_key: "Khóa API của bạn"CODE
HIGHconfig/locales/views/settings/api_keys/zh-CN.yml37 your_api_key: 您的 API 密钥CODE
HIGHconfig/locales/views/settings/api_keys/nl.yml66 your_api_key: "Uw API Key"CODE
HIGHdocs/hosting/ai.md1648QDRANT_API_KEY=your-api-key # Optional, for authenticated instancesCODE
HIGHdocs/llm-guides/adding-a-securities-provider.md402provider = Provider::YourProvider.new("your_api_key")CODE
Redundant / Tautological Comments101 hits · 153 pts
SeverityFileLineSnippetContext
LOWapp/models/sso_provider_tester.rb66 # Check if issuer matches exactly. OIDC discovery requires the configuredCOMMENT
LOWapp/models/llm_usage.rb253 # Check if this usage record represents a failed API callCOMMENT
LOWapp/models/oidc_identity.rb69 # Check if user is in any of the mapped groupsCOMMENT
LOWapp/models/enable_banking_account.rb30 # Check if account_id looks like a valid UUID (not an identification_hash)COMMENT
LOWapp/models/setting.rb278 # Check if it's a declared field firstCOMMENT
LOWapp/models/setting.rb307 # Check if a dynamic field exists (useful to distinguish nil value vs missing key)COMMENT
LOWapp/models/setting.rb312 # Check if dynamic entry existsCOMMENT
LOWapp/models/holding.rb103 # Check if this holding's cost_basis can be overwritten by the given sourceCOMMENT
LOWapp/models/holding.rb135 # Check if this holding's security can be changed by provider syncCOMMENT
LOWapp/models/holding.rb140 # Check if user has remapped this holding to a different securityCOMMENT
LOWapp/models/holding.rb247 # Check if cost_basis is known (has a source and positive value)COMMENT
LOWapp/models/simplefin_item.rb196 # Check if linked via legacy FK (use to_s for UUID comparison safety)COMMENT
LOWapp/models/simplefin_item.rb202 # Check if linked via AccountProviderCOMMENT
LOWapp/models/simplefin_item.rb384 # Check if last sync was more than 3 days agoCOMMENT
LOWapp/models/simplefin_item.rb394 # Check if linked accounts have recent transactionsCOMMENT
LOWapp/models/simplefin_item.rb417 # Check if the SimpleFin connection needs user attentionCOMMENT
LOWapp/models/user.rb245 # Check if user has a local password set (can authenticate locally)COMMENT
LOWapp/models/recurring_transaction.rb802 # Check if this recurring transaction should be marked inactiveCOMMENT
LOWapp/models/mercury_item/importer.rb286 # Check if this account has any stored transactionsCOMMENT
LOWapp/models/recurring_transaction/identifier.rb245 # Check if the last occurrence was within the last 45 daysCOMMENT
LOWapp/models/recurring_transaction/identifier.rb249 # Check if transactions occur on similar days (within 5 days of each other)COMMENT
LOWapp/models/provider/openai.rb332 # Check if the specified model supports vision/PDF inputCOMMENT
LOWapp/models/provider/factory.rb59 # Check if a provider type has a registered adapterCOMMENT
LOWapp/models/provider/factory.rb82 # Check if any provider supports a given account typeCOMMENT
LOWapp/models/provider/syncable.rb18 # Check if the item is currently syncingCOMMENT
LOWapp/models/provider/syncable.rb30 # Check if the item requires an update (e.g., re-authentication)COMMENT
LOWapp/models/provider/configurable.rb77 # Check if provider is configured (all required fields present)COMMENT
LOWapp/models/provider/configurable.rb162 # Check if provider is properly configuredCOMMENT
LOWapp/models/provider/configurable.rb225 # Check if this field has a valueCOMMENT
LOWapp/models/provider/openai/auto_categorizer.rb279 # Check if one contains the otherCOMMENT
LOWapp/models/provider/openai/auto_categorizer.rb437 # Check if there's content after the thinking blockCOMMENT
LOWapp/models/provider/openai/bank_statement_extractor.rb156 # Check if we've seen this exact transaction in a different chunkCOMMENT
LOWapp/models/provider/openai/auto_merchant_detector.rb180 # Check if too many nulls OR missing results were returnedCOMMENT
LOWapp/models/rule/condition_filter/transaction_details.rb28 # Check if extra field is empty or nullCOMMENT
LOWapp/models/lunchflow_item/importer.rb483 # Check if holdings are not supported (501 response)COMMENT
LOWapp/models/eval/sample.rb77 # Check if null is expectedCOMMENT
LOWapp/models/eval/metrics/chat_metrics.rb102 # Check if this specific function was called correctlyCOMMENT
LOW⚡app/models/eval/runners/categorization_runner.rb188 # Check if actual matches any acceptable category (primary or alternatives)COMMENT
LOW⚡app/models/eval/runners/categorization_runner.rb196 # Check if actual matches parent of expected categoryCOMMENT
LOWapp/models/account/linkable.rb72 # Check if account is linked to a specific providerCOMMENT
LOWapp/models/account/linkable.rb89 # Check if holdings can be deletedCOMMENT
LOWapp/models/account/provider_import_adapter.rb115 # Check if duplicate is protected - if so, link but don't modifyCOMMENT
LOWapp/models/coinbase_account/processor.rb190 # Check if trade already exists by external_idCOMMENT
LOWapp/models/lunchflow_entry/processor.rb118 # Check if entry with this external_id already existsCOMMENT
LOWapp/models/lunchflow_entry/processor.rb155 # Check if an entry with this external_id already exists in the accountCOMMENT
LOWapp/models/lunchflow_entry/processor.rb273 # Check if this transaction is marked as pendingCOMMENT
LOWapp/models/concerns/enrichable.rb109 # Check if any virtual attributes changed by comparing current value with what we setCOMMENT
LOWapp/models/concerns/currency_normalizable.rb53 # Check if a currency code is valid in the Money gemCOMMENT
LOWapp/jobs/snaptrade_connection_cleanup_job.rb26 # Check if other accounts still use this authorizationCOMMENT
LOWapp/jobs/indexa_capital_connection_cleanup_job.rb15 # Check if other accounts still use this connectionCOMMENT
LOWapp/jobs/identify_recurring_transactions_job.rb15 # Check if this job is stale (a newer one was scheduled)COMMENT
LOWapp/jobs/identify_recurring_transactions_job.rb19 # Check if there are still incomplete syncs - if so, skip and let the last sync trigger itCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb16 # Check if family has credentialsCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb24 # Check if already cachedCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb61 # Check if family has Lunchflow credentials configuredCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb179 # Check if this lunchflow_account is already linkedCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb255 # Check if account is already linkedCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb261 # Check if family has Lunchflow credentials configuredCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb347 # Check if account is already linkedCOMMENT
LOWapp/controllers/lunchflow_items_controller.rb387 # Check if this lunchflow_account is already linked to another accountCOMMENT
41 more matches not shown…
Structural Annotation Overuse70 hits · 125 pts
SeverityFileLineSnippetContext
LOW⚡app/data_migrations/balance_component_migrator.rb4 # Step 1: Update flows factorCOMMENT
LOW⚡app/data_migrations/balance_component_migrator.rb12 # Step 2: Set start values using LOCF (Last Observation Carried Forward)COMMENT
LOWapp/data_migrations/balance_component_migrator.rb33 # Step 3: Calculate net inflowsCOMMENT
LOWapp/models/mercury_item/importer.rb12 # Step 1: Fetch all accounts from MercuryCOMMENT
LOWapp/models/mercury_item/importer.rb27 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/mercury_item/importer.rb81 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/sophtron_item/importer.rb74 # Step 1: Fetch all accounts from SophtronCOMMENT
LOWapp/models/sophtron_item/importer.rb89 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/sophtron_item/importer.rb138 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/property/avm_import.rb18 # Step 1: validates the inputs, then spends one provider request. ReturnsCOMMENT
LOWapp/models/property/avm_import.rb40 # Step 2: creates the active property account from the user-confirmedCOMMENT
LOW⚡app/models/provider/snaptrade.rb130 # Step 1: ask SnapTrade for a device code and the user code to confirm.COMMENT
LOWapp/models/provider/snaptrade.rb177 # Step 2: redeem the device code once the user has confirmed it. Until theyCOMMENT
LOW⚡app/models/redbark_item/importer.rb23 # Step 1: Fetch and store all accounts (with connection metadata for institutions)COMMENT
LOW⚡app/models/redbark_item/importer.rb26 # Step 2: For linked accounts only, fetch transactions and balances.COMMENT
LOW⚡app/models/snaptrade_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOW⚡app/models/snaptrade_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings and activitiesCOMMENT
LOW⚡app/models/questrade_item/importer.rb32 # Step 1: Fetch and store all accountsCOMMENT
LOW⚡app/models/questrade_item/importer.rb35 # Step 2: For LINKED accounts only, fetch dataCOMMENT
LOWapp/models/lunchflow_item/importer.rb14 # Step 1: Fetch all accounts from LunchflowCOMMENT
LOWapp/models/lunchflow_item/importer.rb39 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOW⚡app/models/provider_merchant/enhancer.rb42 # Step 1: Update the provider merchant's website. ProviderMerchant generatesCOMMENT
LOW⚡app/models/provider_merchant/enhancer.rb47 # Step 2: Deduplicate — find other merchants with the same website_urlCOMMENT
LOW⚡app/models/indexa_capital_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOW⚡app/models/indexa_capital_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings dataCOMMENT
LOWapp/models/simplefin_item/importer.rb532 # Step 2: Fetch transactions/holdings using the regular window.COMMENT
LOW⚡app/jobs/simplefin_connection_update_job.rb27 # Step 1: Claim the new token and update the existing item's access_url.COMMENT
LOW⚡app/jobs/simplefin_connection_update_job.rb31 # Step 2: Sync the item to import fresh data.COMMENT
LOWapp/controllers/wise_items_controller.rb19 # Step 1: Validate token and fetch profiles, then proceed to profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb50 # Step 2: Show profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb62 # Step 3: Create one WiseItem per selected profile.COMMENT
LOWapp/controllers/properties_controller.rb182 # Step 1: spend one provider request, then show the fetched data forCOMMENT
LOW⚡app/controllers/onchain_wallet_items_controller.rb49 # Step 1: paste an address.COMMENT
LOW⚡app/controllers/onchain_wallet_items_controller.rb54 # Step 2: work out the chain if it wasn't given, then show what is there.COMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb87 # Step 3: track the assets that were ticked.COMMENT
LOWtest/models/balance/forward_calculator_test.rb785 # Step 1: Create account with a EUR entry and a stale exchange rate (1:1 EUR→USD).COMMENT
LOW⚡test/models/balance/forward_calculator_test.rb803 # Step 2: Corrected exchange rate arrives later (e.g. daily cron imports it).COMMENT
LOW⚡test/models/balance/forward_calculator_test.rb806 # Step 3: Next sync requests incremental from today — but the guard shouldCOMMENT
LOW⚡test/system/property_test.rb85 # Step 2: Enter balance informationCOMMENT
LOW⚡test/system/property_test.rb90 # Step 3: Enter address informationCOMMENT
LOWtest/system/accounts_test.rb26 # Step 1: Select property type and enter basic detailsCOMMENT
LOW⚡test/system/accounts_test.rb37 # Step 2: Enter balance informationCOMMENT
LOW⚡test/system/accounts_test.rb42 # Step 3: Enter address informationCOMMENT
LOWdocs/hosting/docker.md9### Step 1: Install DockerCOMMENT
LOWdocs/hosting/docker.md22### Step 2: Configure your Docker Compose file and environmentCOMMENT
LOWdocs/hosting/docker.md267### Step 4: Run the appCOMMENT
LOWdocs/hosting/docker.md281### Step 5: Create your accountCOMMENT
LOWdocs/hosting/docker.md298### Step 6: Run the app in the backgroundCOMMENT
LOWdocs/hosting/docker.md312### Step 7: Enjoy!COMMENT
LOWdocs/hosting/hetzner.md14## Step 1: Server Setup and SecurityCOMMENT
LOWdocs/hosting/hetzner.md53## Step 2: Create Application DirectoryCOMMENT
LOWdocs/hosting/hetzner.md64## Step 3: Configure Environment VariablesCOMMENT
LOWdocs/hosting/hetzner.md93## Step 4: Set Up Reverse Proxy with SSLCOMMENT
LOWdocs/hosting/hetzner.md140## Step 5: Deploy the ApplicationCOMMENT
LOWdocs/hosting/hetzner.md161## Step 6: Test the DeploymentCOMMENT
LOWdocs/hosting/hetzner.md189## Step 7: Set Up Automated BackupsCOMMENT
LOWdocs/hosting/hetzner.md213## Step 8: Set Up Basic MonitoringCOMMENT
LOWdocs/llm-guides/adding-a-securities-provider.md29## Step 1: Create the Provider ClassCOMMENT
LOWdocs/llm-guides/adding-a-securities-provider.md271## Step 2: Register in the Provider RegistryCOMMENT
LOWdocs/llm-guides/adding-a-securities-provider.md307## Step 3: Add SettingsCOMMENT
10 more matches not shown…
Fake / Example Data87 hits · 98 pts
SeverityFileLineSnippetContext
LOWapp/models/demo/generator.rb62 create_family_and_users!("Demo Family", "user@example.com", onboarded: true, subscribed: true)CODE
LOWapp/models/demo/generator.rb77 create_family_and_users!("Demo Family", "user@example.com", onboarded: false, subscribed: false)CODE
LOWapp/models/demo/generator.rb106 def generate_default_data!(skip_clear: false, email: "user@example.com")CODE
LOWapp/models/account/provider_import_adapter.rb365 # This handles case variations in merchant names (e.g., "ACME Corp" vs "Acme Corp")COMMENT
LOW…mailers/previews/demo_family_refresh_mailer_preview.rb4 super_admin: User.new(email: "admin@example.com"),CODE
LOWtest/integration/rack_attack_test.rb61 assert_equal "user@example.com", email_block.call(login_request)CODE
LOWtest/integration/rack_attack_test.rb104 assert_equal "user@example.com", api_login_email_block.call(api_login_request)CODE
LOWtest/integration/rack_attack_test.rb108 assert_equal "user@example.com", api_sso_link_email_block.call(sso_link_request)CODE
LOWtest/integration/rack_attack_test.rb260 request = throttle_request("/sessions.json", method: "POST", params: { "email" => "user@example.com" })CODE
LOWtest/integration/rack_attack_test.rb262 assert_equal "user@example.com", email_block.call(request)CODE
LOWtest/integration/rack_attack_test.rb276 unrelated_request = throttle_request("/sessions_other", method: "POST", params: { "email" => "user@example.com" })CODE
LOWtest/integration/rack_attack_test.rb296 request = throttle_request("/api/v1/auth/login", method: "POST", non_rewindable_json_body: { email: "user@example.coCODE
LOWtest/integration/rack_attack_test.rb303 assert_equal({ "email" => "user@example.com" }, JSON.parse(request.body.read))CODE
LOWtest/models/provider_merchant_test.rb57 { field: "name", imported_value: "Acme Inc", kept_value: "Acme" } ],CODE
LOWtest/models/provider_merchant_test.rb58 merchant.import_diff({ "name" => "Acme Inc", "website_url" => "https://acme.io" })CODE
LOWtest/models/indexa_capital_item_test.rb37 username: "user@example.com", document: "12345678A", password: "secret"CODE
LOWtest/models/address_test.rb6 line1: "123 Main St",CODE
LOWtest/models/address_test.rb18 line1: "123 Main St",CODE
LOW⚡test/models/user_test.rb57 user = User.new(email: "user@example.com")CODE
LOW⚡test/models/user_test.rb58 assert_equal "user@example.com", user.display_nameCODE
LOW⚡test/models/user_test.rb66 user = User.new(email: "user@example.com")CODE
LOWtest/models/demo/generator_test.rb11 User.find_by!(email: "user@example.com").update!(email: "existing-user@example.com")CODE
LOWtest/models/demo/generator_test.rb21 family = User.find_by!(email: "user@example.com").familyCODE
LOWtest/models/demo/generator_test.rb33 User.find_by!(email: "user@example.com").update!(email: "existing-user@example.com")CODE
LOWtest/models/demo/generator_test.rb42 item = User.find_by!(email: "user@example.com").family.onchain_wallet_itemCODE
LOWtest/models/provider/anthropic_test.rb105 Setting.stubs(:anthropic_access_token).returns("fake-token-1")CODE
LOWtest/models/provider/anthropic_test.rb109 ClimateControl.modify("ANTHROPIC_API_KEY" => "fake-token-2") doCODE
LOW⚡test/models/provider/realie_test.rb78 .with(query: hash_including("address" => "123 Main Street"))CODE
LOW⚡test/models/provider/realie_test.rb81 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOW⚡test/models/provider/realie_test.rb89 .with(query: hash_including("address" => "123 Main Street"))CODE
LOW⚡test/models/provider/realie_test.rb92 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOW⚡test/models/provider/realie_test.rb100 .with(query: hash_including("address" => "123 Main Street"))CODE
LOW⚡test/models/provider/realie_test.rb103 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOW⚡test/models/provider/realie_test.rb225 .with(query: hash_including("address" => "123 Main Street"))CODE
LOW⚡test/models/provider/realie_test.rb228 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOW⚡test/models/provider/realie_test.rb236 .with(query: hash_including("address" => "123 Main Street"))CODE
LOW⚡test/models/provider/realie_test.rb240 line1: "123 Main Street",CODE
LOW⚡test/models/provider/realie_test.rb261 .with(query: hash_including("address" => "123 Main Street"))CODE
LOW⚡test/models/provider/realie_test.rb264 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOW⚡test/models/provider/realie_test.rb273 .with(query: hash_including("address" => "123 Main Street"))CODE
LOW⚡test/models/provider/realie_test.rb279 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOWtest/models/provider/realie_test.rb53 query: { "address" => "123 Main Street", "state" => "CA" },CODE
LOWtest/models/provider/realie_test.rb59 line1: "123 Main Street",CODE
LOWtest/models/provider/realie_test.rb114 .with(query: hash_including("address" => "123 Main Street"))CODE
LOWtest/models/provider/realie_test.rb118 line1: "123 Main Street",CODE
LOWtest/models/provider/realie_test.rb132 .with(query: hash_including("address" => "123 Main Street"))CODE
LOWtest/models/provider/realie_test.rb136 line1: "123 Main Street",CODE
LOWtest/models/provider/realie_test.rb201 query: { "address" => "123 Main Street", "state" => "CA" },CODE
LOWtest/models/provider/realie_test.rb207 line1: "123 Main Street",CODE
LOWtest/models/provider/realie_test.rb290 response = @provider.fetch_property_valuation(line1: "123 Main Street", region: "CA")CODE
LOWtest/models/provider/indexa_capital_test.rb13 username: "user@example.com",CODE
LOWtest/models/provider/indexa_capital_test.rb28 Provider::IndexaCapital.new(username: "user@example.com")CODE
LOWtest/models/provider/indexa_capital_test.rb32 Provider::IndexaCapital.new(username: "user@example.com", document: "12345678A")CODE
LOWtest/models/provider/chimnie_test.rb214 address = { line1: "123 Main Street", locality: "Los Angeles", region: "CA", postal_code: "90001", country: "US" }CODE
LOWtest/models/provider/chimnie_test.rb224 us_address = { line1: "123 Main Street", locality: "Los Angeles", region: "CA", postal_code: "90001" }CODE
LOW…ls/provider/anthropic/bank_statement_extractor_test.rb16 "account_holder" => "Jane Doe",CODE
LOW…ls/provider/anthropic/bank_statement_extractor_test.rb37 assert_equal "Jane Doe", result[:account_holder]CODE
LOW…odels/provider/openai/bank_statement_extractor_test.rb15 "account_holder" => "John Doe",CODE
LOW…odels/provider/openai/bank_statement_extractor_test.rb46 assert_equal "John Doe", result[:account_holder]CODE
LOW…odels/provider/openai/bank_statement_extractor_test.rb89 "account_holder" => "John Doe",CODE
27 more matches not shown…
Verbosity Indicators48 hits · 92 pts
SeverityFileLineSnippetContext
LOW⚡app/data_migrations/balance_component_migrator.rb4 # Step 1: Update flows factorCOMMENT
LOW⚡app/data_migrations/balance_component_migrator.rb12 # Step 2: Set start values using LOCF (Last Observation Carried Forward)COMMENT
LOWapp/data_migrations/balance_component_migrator.rb33 # Step 3: Calculate net inflowsCOMMENT
LOWapp/models/mercury_item/importer.rb12 # Step 1: Fetch all accounts from MercuryCOMMENT
LOWapp/models/mercury_item/importer.rb27 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/mercury_item/importer.rb81 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/sophtron_item/importer.rb74 # Step 1: Fetch all accounts from SophtronCOMMENT
LOWapp/models/sophtron_item/importer.rb89 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOWapp/models/sophtron_item/importer.rb138 # Step 3: Fetch transactions only for linked accounts with active statusCOMMENT
LOWapp/models/property/avm_import.rb18 # Step 1: validates the inputs, then spends one provider request. ReturnsCOMMENT
LOWapp/models/property/avm_import.rb40 # Step 2: creates the active property account from the user-confirmedCOMMENT
LOW⚡app/models/provider/snaptrade.rb130 # Step 1: ask SnapTrade for a device code and the user code to confirm.COMMENT
LOWapp/models/provider/snaptrade.rb177 # Step 2: redeem the device code once the user has confirmed it. Until theyCOMMENT
LOW⚡app/models/redbark_item/importer.rb23 # Step 1: Fetch and store all accounts (with connection metadata for institutions)COMMENT
LOW⚡app/models/redbark_item/importer.rb26 # Step 2: For linked accounts only, fetch transactions and balances.COMMENT
LOW⚡app/models/snaptrade_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOW⚡app/models/snaptrade_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings and activitiesCOMMENT
LOW⚡app/models/questrade_item/importer.rb32 # Step 1: Fetch and store all accountsCOMMENT
LOW⚡app/models/questrade_item/importer.rb35 # Step 2: For LINKED accounts only, fetch dataCOMMENT
LOWapp/models/lunchflow_item/importer.rb14 # Step 1: Fetch all accounts from LunchflowCOMMENT
LOWapp/models/lunchflow_item/importer.rb39 # Step 2: Update linked accounts and create records for new accounts from APICOMMENT
LOW⚡app/models/provider_merchant/enhancer.rb42 # Step 1: Update the provider merchant's website. ProviderMerchant generatesCOMMENT
LOW⚡app/models/provider_merchant/enhancer.rb47 # Step 2: Deduplicate — find other merchants with the same website_urlCOMMENT
LOW⚡app/models/indexa_capital_item/importer.rb24 # Step 1: Fetch and store all accountsCOMMENT
LOW⚡app/models/indexa_capital_item/importer.rb27 # Step 2: For LINKED accounts only, fetch holdings dataCOMMENT
LOWapp/models/concerns/enrichable.rb105 # So we need to check if the value actually changed by comparing before/afterCOMMENT
LOWapp/models/simplefin_item/importer.rb532 # Step 2: Fetch transactions/holdings using the regular window.COMMENT
LOW⚡app/jobs/simplefin_connection_update_job.rb27 # Step 1: Claim the new token and update the existing item's access_url.COMMENT
LOW⚡app/jobs/simplefin_connection_update_job.rb31 # Step 2: Sync the item to import fresh data.COMMENT
LOWapp/controllers/wise_items_controller.rb19 # Step 1: Validate token and fetch profiles, then proceed to profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb50 # Step 2: Show profile selection.COMMENT
LOWapp/controllers/wise_items_controller.rb62 # Step 3: Create one WiseItem per selected profile.COMMENT
LOWapp/controllers/properties_controller.rb182 # Step 1: spend one provider request, then show the fetched data forCOMMENT
LOW⚡app/controllers/onchain_wallet_items_controller.rb49 # Step 1: paste an address.COMMENT
LOW⚡app/controllers/onchain_wallet_items_controller.rb54 # Step 2: work out the chain if it wasn't given, then show what is there.COMMENT
LOWapp/controllers/onchain_wallet_items_controller.rb87 # Step 3: track the assets that were ticked.COMMENT
LOWtest/models/balance/forward_calculator_test.rb785 # Step 1: Create account with a EUR entry and a stale exchange rate (1:1 EUR→USD).COMMENT
LOW⚡test/models/balance/forward_calculator_test.rb803 # Step 2: Corrected exchange rate arrives later (e.g. daily cron imports it).COMMENT
LOW⚡test/models/balance/forward_calculator_test.rb806 # Step 3: Next sync requests incremental from today — but the guard shouldCOMMENT
LOW⚡test/system/property_test.rb85 # Step 2: Enter balance informationCOMMENT
LOW⚡test/system/property_test.rb90 # Step 3: Enter address informationCOMMENT
LOWtest/system/accounts_test.rb26 # Step 1: Select property type and enter basic detailsCOMMENT
LOW⚡test/system/accounts_test.rb37 # Step 2: Enter balance informationCOMMENT
LOW⚡test/system/accounts_test.rb42 # Step 3: Enter address informationCOMMENT
LOW⚡mobile/lib/services/sync_service.dart543 // Step 1: Process pending deletes (do this first to free up resources)COMMENT
LOW⚡mobile/lib/services/sync_service.dart549 // Step 2: Upload pending transactionsCOMMENT
LOW⚡mobile/lib/services/sync_service.dart555 // Step 3: Download transactions from serverCOMMENT
LOW⚡mobile/lib/services/sync_service.dart561 // Step 4: Sync accountsCOMMENT
AI Slop Vocabulary22 hits · 52 pts
SeverityFileLineSnippetContext
LOWcompose.example.ai.yml100 # turn, so it has to be sized as a sum rather than simply set higher:COMMENT
LOWapp/models/redbark_item.rb16 # Validate on every save, not just create - an update must never blank the keyCOMMENT
MEDIUMapp/models/loan.rb37 # amortises what was actually lent -- but it is what makes leverage readable:COMMENT
MEDIUMapp/models/loan.rb52 # it is a loan whose leverage nobody has told us.COMMENT
MEDIUMapp/models/loan.rb503 # principal, the insurance base, how much has been repaid, and the leverageCOMMENT
LOWapp/models/simplefin_account.rb109 # For custom currency URLs, we'll just use the last part as currency codeCOMMENT
MEDIUMapp/models/assistant.rb11 # Statement Vault + provenance tools back the wealth agent-harness workflowCOMMENT
MEDIUMapp/models/assistant.rb12 # documented in docs/llm-guides/wealth-agent-harness.md. GetValuations is theCOMMENT
MEDIUMapp/models/holding.rb218 # typically be for real tickers not CUSTOM: ones. A more robust solution would track whichCOMMENT
LOWapp/models/simplefin_item.rb214 # We don't destroy it because has_one :account, dependent: :nullify would nullify the FK we just setCOMMENT
LOWapp/models/simplefin_item.rb216 # trigger autosave on the preloaded account association, reverting the FK we just set!COMMENT
MEDIUMapp/models/demo/generator.rb105 # Generate comprehensive realistic demo data with multi-currencyCOMMENT
MEDIUMapp/models/demo/generator.rb337 # leverage and insurance cards rather than hiding both.COMMENT
MEDIUM…ls/simplefin_account/investments/holdings_processor.rb52 # Parse provider data with robust fallbacks across SimpleFin sourcesCOMMENT
MEDIUMtest/models/demo/generator_test.rb163 # The leverage card reads the loan's down payment; the cash-flow historyCOMMENT
LOWtest/models/coinstats_account/processor_test.rb36 # Should not raise, just return earlyCOMMENT
LOWtest/models/portfolio/xirr_test.rb352 # ends stops a future "just use a safer constant" from quietly reintroducingCOMMENT
MEDIUMtest/controllers/loans_controller_test.rb11 # The overview only shows what the loan actually records: a leverage figureCOMMENT
MEDIUMtest/controllers/loans_controller_test.rb79 # A negative opening valuation (imports produce them) has no leverage band,COMMENT
LOWtest/controllers/settings/providers_controller_test.rb476 # Entry should be removed, not just set to nilCOMMENT
LOWconfig/initializers/00_ssl.rb257 # Fallback: just use the custom CA (may break connections to public services)COMMENT
MEDIUMlib/generators/provider/family/family_generator.rb217 # This approach is more robust than trying to append to an existing include lineCOMMENT
Modern AI Meta-Vocabulary15 hits · 45 pts
SeverityFileLineSnippetContext
MEDIUMapp/models/assistant/token_budget.rb4 # Shared resolution of the model's context window so prompt assembly and theCOMMENT
MEDIUMapp/models/sophtron_item/importer.rb5# This class orchestrates the complete import process for a SophtronItem:COMMENT
MEDIUMapp/models/sophtron_item/syncer.rb26 # This method orchestrates all phases of the sync:COMMENT
MEDIUMapp/models/provider/openai.rb487 # caller batches are split to fit the model's context window. `fixed` isCOMMENT
MEDIUMapp/models/provider/openai/auto_merchant_detector.rb456 # Enhanced developer message with few-shot examples for smaller/local LLMsCOMMENT
MEDIUMapp/models/vector_store/embeddable.rb39 # embedding model token limits.COMMENT
MEDIUMapp/models/vector_store/pgvector.rb10# - An embedding model endpoint (EMBEDDING_URI_BASE / EMBEDDING_MODEL)COMMENT
MEDIUMapp/models/vector_store/qdrant.rb4# Like the Pgvector adapter you still supply your own embedding model; QdrantCOMMENT
MEDIUMapp/models/vector_store/qdrant.rb10# - An embedding model endpoint (EMBEDDING_MODEL_URL / EMBEDDING_MODEL_NAME)COMMENT
MEDIUMapp/controllers/pages_controller.rb4 # Per-widget dashboard layout guardrails. Deterministic defaults the masonryCOMMENT
MEDIUMapp/controllers/pages_controller.rb348 # Resolves a section's layout guardrails, applying the user's height presetCOMMENT
MEDIUMtest/models/demo/generator_test.rb242 # the public orchestration. Unrelated history and provider syncs are omittedCOMMENT
MEDIUMtest/models/demo/generator_test.rb274 # Exercise the actual account/transaction orchestration without generatingCOMMENT
MEDIUMtest/models/assistant/configurable_test.rb48 # The roster only itemizes when the model's context window is comfortableCOMMENT
MEDIUMtest/lib/generators/provider/family_generator_test.rb232 # Evaluate the actual scaffold in an isolated namespace, without installing aCOMMENT
Slop Phrases8 hits · 16 pts
SeverityFileLineSnippetContext
MEDIUMapp/models/assistant/function/update_bill.rb175 error: "No account named #{params["account_name"].inspect} that you can add bills to",CODE
MEDIUMapp/models/assistant/function/create_bill.rb144 error: "No account named #{name.inspect} that you can add bills to",CODE
MEDIUMconfig/initializers/doorkeeper.rb396 # For example you can add an additional database column to `oauth_applications` table,COMMENT
LOWconfig/initializers/doorkeeper.rb49 # Don't forget to include Doorkeeper ORM mixins into your custom models:COMMENT
LOWconfig/initializers/doorkeeper.rb80 # [NOTE] If you apply this option on already existing project don't forget to manuallyCOMMENT
LOWconfig/initializers/doorkeeper.rb80 # [NOTE] If you apply this option on already existing project don't forget to manuallyCOMMENT
LOWconfig/initializers/doorkeeper.rb518 # them to make sure you doesn't get NoMethodError exception.COMMENT
MEDIUMspec/spec_helper.rb48# with RSpec, but feel free to customize to your heart's content.COMMENT
Example Usage Blocks6 hits · 9 pts
SeverityFileLineSnippetContext
LOWapp/models/concerns/currency_normalizable.rb9# Usage:COMMENT
LOWapp/jobs/snaptrade_activities_fetch_job.rb7# Usage:COMMENT
LOWapp/services/provider_loader.rb6# Usage:COMMENT
LOWtest/support/provider_adapter_test_interface.rb4# Usage:COMMENT
LOWlib/generators/provider/family/family_generator.rb6# Usage:COMMENT
LOWlib/generators/provider/global/global_generator.rb6# Usage:COMMENT
Synthetic Comment Markers1 hit · 8 pts
SeverityFileLineSnippetContext
HIGHtest/controllers/rules_controller_test.rb646 # raising it, which would otherwise log the reset as requested and redirectCOMMENT