AI Slop Code Risk Monitor

actualbudget/actual

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

A local-first personal finance app

1.9 Low pattern signal View on GitHub

Open-Source Code Quality, Security and Technical Debt Review

This report summarizes scanner evidence for actualbudget/actual, a TypeScript project with 29,879 GitHub stars. SynthScan examined 397,665 lines of code across 2759 source files, recording 545 pattern matches distributed across 12 syntactic categories. The legacy adjusted pattern signal is 1.9 (Low pattern signal); it is not an authorship estimate.

Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.

1.9
Adjusted Signal
1.9
Raw Pattern Score
100%
Time Factor
2026-10-31
Last Push
29.9K
Stars
TypeScript
Language
397.7K
Lines of Code
2.8K
Files
545
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 7.1/100 · LOW

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

Hallucinated Dependency & Supply Chain Risk 0.5/100 · LOW

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

Agent Over-Engineering Ratio 6.2/100 · LOW

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

PR Review Velocity Impact 8.9/100 · LOW

Which changes need focused human review? 545 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 2HIGH 14MEDIUM 56LOW 473

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 545 distinct pattern matches across 12 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.

Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.

Hyper-Verbose Identifiers379 hits · 386 pts
SeverityFileLineSnippetContext
LOWpackages/desktop-electron/certificates.ts16export function trustSelfSignedCertificate(certificatePath: string) {CODE
LOWpackages/loot-core/src/platform/server/fs/index.ts280async function populateDefaultFilesystem() {CODE
LOWpackages/loot-core/src/server/forecast/app.test.ts26async function createForecastWithPostedMonthlySchedule({CODE
LOWpackages/loot-core/src/server/forecast/app.test.ts76async function createForecastWithPostedDailySchedule({CODE
LOW…ages/loot-core/src/server/forecast/forecast-filters.ts131function equalComparableFilterValues(actual: unknown, expected: unknown) {CODE
LOW…ages/loot-core/src/server/forecast/forecast-filters.ts317export async function enrichForecastFilterObjects(CODE
LOWpackages/loot-core/src/server/forecast/app.ts35function createUnassignedForecastAccount(): AccountWithComputedBalance {CODE
LOWpackages/loot-core/src/server/forecast/app.ts45function createUnassignedRuleAccountStub(): DbAccountForRules {CODE
LOW…t-core/src/server/forecast/forecast-tracking-budget.ts35export function projectTrackingBudgetForecast({CODE
LOW…s/loot-core/src/server/forecast/forecast-projection.ts75export function createEmptyForecastResult(CODE
LOW…s/loot-core/src/server/forecast/forecast-projection.ts148function groupTransactionsByAccount(transactions: TransactionEntity[]) {CODE
LOW…s/loot-core/src/server/forecast/forecast-projection.ts163function summarizePostedTransactions(CODE
LOW…s/loot-core/src/server/forecast/forecast-projection.ts189function buildAccountForecastDataPoints(CODE
LOW…ges/loot-core/src/server/forecast/forecast-accounts.ts64export async function resolveAccountIdsFromConditions(CODE
LOW…ges/loot-core/src/server/forecast/forecast-accounts.ts91export function getAccountRestrictionMode(CODE
LOW…es/loot-core/src/server/forecast/forecast-schedules.ts122export async function getPostedScheduleTransactions(schedules: ScheduleData[]) {CODE
LOW…es/loot-core/src/server/forecast/forecast-schedules.ts140async function getTransferPayeesByAccountIds(accountIds: string[]) {CODE
LOW…es/loot-core/src/server/forecast/forecast-schedules.ts200export async function buildFutureScheduleOccurrences(CODE
LOWpackages/loot-core/src/server/importers/ynab5.ts99function getYnabTwiceMonthlyPatterns(dateFirst: string): RecurPattern[] {CODE
LOWpackages/loot-core/src/server/importers/ynab5.ts334 async function createCategoryGroupWithUniqueName(params: {CODE
LOWpackages/loot-core/src/server/importers/ynab5.ts359 async function createCategoryWithUniqueName(params: {CODE
LOWpackages/loot-core/src/server/importers/ynab5.ts872export async function importScheduledTransactions(CODE
LOWpackages/loot-core/src/server/importers/ynab5.ts897 async function createScheduleWithUniqueName(params: {CODE
LOWpackages/loot-core/src/server/schedules/app.ts93function areScheduleConditionsEqual(CODE
LOWpackages/loot-core/src/server/schedules/app.ts327async function allowAutoPostingToRunAgainToday(postsTransaction: boolean) {CODE
LOWpackages/loot-core/src/server/schedules/app.ts590async function postTransactionForSchedule({CODE
LOWpackages/loot-core/src/server/schedules/app.ts625export async function getCompletedScheduleRuleIds(): Promise<string[]> {CODE
LOWpackages/loot-core/src/server/schedules/app.ts635async function hasTransactionForSchedule(CODE
LOWpackages/loot-core/src/server/schedules/app.ts651async function advanceRecurringScheduleFromNextDate(CODE
LOWpackages/loot-core/src/server/dashboard/app.ts25function isExportedCustomReportWidget(CODE
LOWpackages/loot-core/src/server/transactions/app.ts36async function handleBatchUpdateTransactions({CODE
LOW…loot-core/src/server/transactions/transaction-rules.ts119export function serializeConditionsOrActions(arr) {CODE
LOW…loot-core/src/server/transactions/transaction-rules.ts304export async function getAllRuleIdsFromSchedules(CODE
LOW…loot-core/src/server/transactions/transaction-rules.ts1072export async function getRunningBalanceBeforeTransaction(CODE
LOW…loot-core/src/server/transactions/transaction-rules.ts1114export async function prefetchBalanceOfForTransaction(CODE
LOW…loot-core/src/server/transactions/transaction-rules.ts1158export async function prepareTransactionForRules(CODE
LOW…loot-core/src/server/transactions/transaction-rules.ts1239async function refreshCategoryGroupIfChanged(CODE
LOW…loot-core/src/server/transactions/transaction-rules.ts1258export async function finalizeTransactionForRules(CODE
LOWpackages/loot-core/src/server/transactions/merge.ts95async function mapAndValidateTransactions(CODE
LOWpackages/loot-core/src/server/transactions/merge.ts110export async function mergeTransactionsNoTransfer(CODE
LOW…core/src/server/transactions/transaction-rules.test.ts1573function countRunningBalanceQueries() {CODE
LOWpackages/loot-core/src/server/accounts/app.ts872async function stopGoCardlessWebTokenPolling() {CODE
LOWpackages/loot-core/src/server/accounts/app.ts1137async function enableBankingCompleteAuth({CODE
LOWpackages/loot-core/src/server/accounts/app.ts1202async function stopEnableBankingPollAuth({ state }: { state: string }) {CODE
LOWpackages/loot-core/src/server/accounts/app.ts1397function getBankSyncStatusFromError(CODE
LOWpackages/loot-core/src/server/accounts/sync.test.ts994 function mockSimpleFinTransactions(response) {CODE
LOWpackages/loot-core/src/server/accounts/sync.ts75async function getAccountOldestTransaction(id): Promise<TransactionEntity> {CODE
LOWpackages/loot-core/src/server/accounts/sync.ts130async function downloadGoCardlessTransactions(CODE
LOWpackages/loot-core/src/server/accounts/sync.ts189async function downloadSimpleFinTransactions(CODE
LOWpackages/loot-core/src/server/accounts/sync.ts280async function downloadPluggyAiTransactions(CODE
LOWpackages/loot-core/src/server/accounts/sync.ts321async function downloadAkahuTransactions(CODE
LOWpackages/loot-core/src/server/accounts/sync.ts360async function downloadEnableBankingTransactions(CODE
LOWpackages/loot-core/src/server/accounts/sync.ts514async function normalizeBankSyncTransactions(transactions, acctId) {CODE
LOWpackages/loot-core/src/server/accounts/sync.ts813export function compareFuzzyMatchCandidates(CODE
LOW…ges/loot-core/src/server/rules/customFunctions.test.ts12function createFormulaQueryContext(): Required<FormulaQueryContext> {CODE
LOWpackages/loot-core/src/server/rules/balanceOfFormula.ts4export function collectFormulasFromActions(CODE
LOWpackages/loot-core/src/server/rules/balanceOfFormula.ts18export function decodeBalanceOfQuotedLiteral(inner: string): string {CODE
LOWpackages/loot-core/src/server/rules/balanceOfFormula.ts43export function resolveAccountIdForBalanceOf(CODE
LOW…kages/loot-core/src/server/rules/handlebars-helpers.ts14export function registerHandlebarsHelpers() {CODE
LOWpackages/loot-core/src/server/sync/utils.ts19export function resetDeferredMessagesNotification() {CODE
319 more matches not shown…
Decorative Section Separators41 hits · 123 pts
SeverityFileLineSnippetContext
MEDIUM…src/platform/client/browser-server/coordinator.test.ts7// ── Types ───────────────────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts17// ── Test helpers ────────────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts88// ── Tests ───────────────────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts103 // ── Initialization ──────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts218 // ── Load budget ─────────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts330 // ── Close budget ────────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts421 // ── Tab disconnection & failover ────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts480 // ── Heartbeat ───────────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts632 // ── Worker message routing ──────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts731 // ── Budget-replacing operations ─────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts1107 // ── Delete budget ───────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts1161 // ── Track restore ───────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts1272 // ── Multiple budgets ────────────────────────────────────────────────COMMENT
MEDIUM…src/platform/client/browser-server/coordinator.test.ts1314 // ── Eviction ────────────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts9// ── Types ────────────────────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts35// ── Factory ──────────────────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts40 // ── State ──────────────────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts51 // ── Console forwarding ─────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts95 // ── Helpers ────────────────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts258 // ── Heartbeat ──────────────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts271 // ── Port removal & leader failover ────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts285 // ── Leader election ───────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts425 // ── Budget lifecycle helpers ──────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts544 // ── Connection handler ────────────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts558 // ── Tab lifecycle ──────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts587 // ── Initialization ─────────────────────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts611 // ── Leader tab forwarding Worker messages back ─────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts674 // ── Leader tab registering a budget restore ────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts689 // ── Request interception & routing ─────────────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts872 // ── Default: track and forward to leader ───────────────────COMMENT
MEDIUM…core/src/platform/client/browser-server/coordinator.ts914 // ── Public API ────────────────────────────────────────────────────────COMMENT
MEDIUM…-actual/lib/rules/__tests__/enforce-boundaries.test.js18 // ── Imports that are fine ───────────────────────────────────COMMENT
MEDIUM…-actual/lib/rules/__tests__/enforce-boundaries.test.js56 // ── Backtracked imports ─────────────────────────────────────COMMENT
MEDIUM…-actual/lib/rules/__tests__/enforce-boundaries.test.js124 // ── tsconfig compilerOptions.paths ──────────────────────────COMMENT
MEDIUM…-actual/lib/rules/__tests__/enforce-boundaries.test.js136 // ── Vite resolve.alias ──────────────────────────────────────COMMENT
MEDIUM…-actual/lib/rules/__tests__/enforce-boundaries.test.js148 // ── String-keyed config properties ─────────────────────────COMMENT
MEDIUM…-actual/lib/rules/__tests__/enforce-boundaries.test.js160 // ── Multiple violations in one file ─────────────────────────COMMENT
MEDIUMpackages/desktop-client/src/style/customThemes.ts218// ─── @font-face validation ──────────────────────────────────────────────────COMMENT
MEDIUMpackages/desktop-client/src/style/customThemes.ts345// ─── :root block validation ─────────────────────────────────────────────────COMMENT
MEDIUMpackages/desktop-client/src/style/customThemes.ts422// ─── Main validation entry point ────────────────────────────────────────────COMMENT
MEDIUMpackages/desktop-client/src/style/customThemes.ts487// ─── Font embedding (install-time) ─────────────────────────────────────────COMMENT
Over-Commented Block58 hits · 58 pts
SeverityFileLineSnippetContext
LOW.cursor/hooks/before-mcp-github.sh1#!/bin/shCOMMENT
LOW.codex/config.toml1# Codex project hooks for actualbudget/actual.COMMENT
LOW.codex/config.toml21# this whole file (hooks included), silently.COMMENT
LOWscripts/agent-hooks/github-comment-style.sh1#!/bin/shCOMMENT
LOWscripts/agent-hooks/no-issue-create.sh1#!/bin/shCOMMENT
LOWscripts/agent-hooks/pr-template-blank.sh1#!/bin/shCOMMENT
LOWscripts/agent-hooks/git-guard.sh1#!/bin/shCOMMENT
LOWpackages/crdt/src/crdt/merkle.ts101 // found. For the former case, we have to that because pruning isCOMMENT
LOWpackages/loot-core/src/platform/server/fs/index.ts321 const Module = _getModule();COMMENT
LOW…s/loot-core/src/server/spreadsheet/spreadsheet.test.ts41 date: '2017-01-15',COMMENT
LOW…s/loot-core/src/server/spreadsheet/spreadsheet.test.ts61 // spreadsheet.endTransaction();COMMENT
LOW…s/loot-core/src/server/spreadsheet/spreadsheet.test.ts81 // 'g!foo1',COMMENT
LOWpackages/loot-core/src/server/schedules/app.ts121 });COMMENT
LOWpackages/loot-core/src/server/accounts/sync.test.ts461 // if a rule sets the payee to an *old* payee, that it stillCOMMENT
LOWpackages/loot-core/src/server/db/mappings.ts1// @ts-strict-ignoreCOMMENT
LOWpackages/loot-core/src/server/sync/index.ts421 }COMMENT
LOWpackages/loot-core/src/server/aql/schema/index.ts1// @ts-strict-ignoreCOMMENT
LOWpackages/loot-core/src/server/aql/schema/index.ts21// requirements change, especially regarding split transactions.COMMENT
LOW…/loot-core/src/server/budget/schedule-template.test.ts201 expect(outflow[2]).toBe(15000); // March: 10000 schedule + 5000 unlinkedCOMMENT
LOW…/loot-core/src/server/budget/schedule-template.test.ts1201COMMENT
LOW…/loot-core/src/server/budget/schedule-template.test.ts1301 // covers month 30 and is the minimal such whole-cent amount.COMMENT
LOW…kages/loot-core/src/server/budget/schedule-template.ts661// contribution, and the last month of the catch-up (see below).COMMENT
LOW…kages/loot-core/src/server/budget/schedule-template.ts761 // A tracking budget doesn't carry a category's leftover into the nextCOMMENT
LOWpackages/loot-core/src/shared/schedules.ts421COMMENT
LOWpackages/loot-core/src/shared/months.ts21 // default. We could try to only work with UTC, but there's not anCOMMENT
LOWpackages/loot-core/src/shared/months.ts41 //COMMENT
LOWpackages/ci-actions/bin/check-migrations.ts1// overview: identify the migrations in packages/loot-core/migrations/* onCOMMENT
LOWpackages/ci-actions/bin/generate-news-feed.ts1// Generates `packages/desktop-client/src/data/news.json` — the feed the ActualCOMMENT
LOWpackages/desktop-client/playwright.config.ts21 trace: 'on-first-retry',COMMENT
LOWpackages/desktop-client/src/browser-preload.js21 reviewId: import.meta.env.REACT_APP_REVIEW_ID,COMMENT
LOW…t/src/components/autocomplete/CategoryAutocomplete.tsx281 // finishes executing. This is caused by content observation codeCOMMENT
LOW…nt/src/components/autocomplete/AccountAutocomplete.tsx261 // accidentally clicking content that changed as a result of codeCOMMENT
LOW…op-client/src/components/autocomplete/Autocomplete.tsx161 // in WebKit on touch-enabled devices, taps on this element endCOMMENT
LOW…op-client/src/components/autocomplete/Autocomplete.tsx361 // I AM NOT PROUD OF THIS OK??COMMENT
LOW…ient/src/components/autocomplete/PayeeAutocomplete.tsx741 );COMMENT
LOW…src/components/transactions/TransactionsTable.test.tsx1801 },COMMENT
LOW…client/src/components/transactions/TransactionList.tsx41import { TransactionTable } from './TransactionsTable';COMMENT
LOW…ktop-client/src/components/transactions/table/utils.ts121// An "empty" value from the perspective of rules: rules are only allowed toCOMMENT
LOW…top-client/src/components/mobile/budget/BudgetPage.tsx301 // {COMMENT
LOW…/reports/spreadsheets/age-of-money-spreadsheet.test.ts461 // Jan 20: Transfer -$500 to investment account (off-budget)COMMENT
LOW…/reports/spreadsheets/age-of-money-spreadsheet.test.ts521COMMENT
LOW…/reports/spreadsheets/age-of-money-spreadsheet.test.ts581 // The $1000 that went to investment on Jan 10 consumed from theCOMMENT
LOW…ts/reports/reports/monte-carlo/monteCarloSimulation.ts2101 const incomeTowardsSpending = Math.min(spendableIncome, totalPlanned);COMMENT
LOW…rts/reports/monte-carlo/monteCarloHistoricalReturns.ts1// Historical annual nominal returns for US asset classes, used by theCOMMENT
LOWpackages/desktop-client/src/hooks/useDragDrop.tsx21import { theme } from '@actual-app/components/theme';COMMENT
LOWpackages/desktop-client/src/hooks/useDragDrop.tsx41// | preview ref (useDrag) | renderDragPreview option |COMMENT
LOWpackages/desktop-client/src/hooks/useDragDrop.tsx61// Desktop Budget (currently uses react-dnd, should migrate to GridList):COMMENT
LOWpackages/desktop-client/src/hooks/useSelected.tsx161 }),COMMENT
LOWpackages/desktop-client/src/users/usersSlice.ts21COMMENT
LOWpackages/sync-server/docker-compose.yml1services:COMMENT
LOW.github/workflows/publish-ios.yml1name: Publish iOSCOMMENT
LOW.github/workflows/fork-pr-welcome.yml1name: Fork PR WelcomeCOMMENT
LOW.github/workflows/size-compare.yml1name: Compare SizesCOMMENT
LOW.github/workflows/publish-mac-app-store.yml1name: Publish Mac App StoreCOMMENT
LOW.github/workflows/issues-feature-implemented.yml1name: Handle completed feature requestsCOMMENT
LOW.github/workflows/migration-warnings-comment.yml1name: Migration warnings commentCOMMENT
LOW.github/workflows/docs-spelling.yml1name: Check Spelling (Docs)COMMENT
LOW.github/actions/docs-spelling/typos.toml1# Configuration for `crate-ci/typos`, used by the "Check Spelling (Docs)"COMMENT
Synthetic Comment Markers9 hits · 48 pts
SeverityFileLineSnippetContext
HIGHpackages/docs/docs/releases.md685- [#7817](https://github.com/actualbudget/actual/pull/7817) Add a GitHub Actions workflow that labels `[AI]`-prefixed puCODE
HIGHpackages/docs/docs/releases.md685- [#7817](https://github.com/actualbudget/actual/pull/7817) Add a GitHub Actions workflow that labels `[AI]`-prefixed puCODE
HIGHpackages/docs/docs/releases.md986- [#7107](https://github.com/actualbudget/actual/pull/7107) Skip AI-generated release notes for PRs originating from `reCODE
HIGHpackages/docs/docs/releases.md986- [#7107](https://github.com/actualbudget/actual/pull/7107) Skip AI-generated release notes for PRs originating from `reCODE
HIGHpackages/docs/blog/2026-04-06-release-26-4-0.md110- [#7107](https://github.com/actualbudget/actual/pull/7107) Skip AI-generated release notes for PRs originating from `reCODE
HIGHpackages/docs/blog/2026-04-06-release-26-4-0.md110- [#7107](https://github.com/actualbudget/actual/pull/7107) Skip AI-generated release notes for PRs originating from `reCODE
HIGHpackages/docs/blog/2026-06-01-release-26-6-0.md161- [#7817](https://github.com/actualbudget/actual/pull/7817) Add a GitHub Actions workflow that labels `[AI]`-prefixed puCODE
HIGHpackages/docs/blog/2026-06-01-release-26-6-0.md161- [#7817](https://github.com/actualbudget/actual/pull/7817) Add a GitHub Actions workflow that labels `[AI]`-prefixed puCODE
HIGH⚡packages/desktop-client/src/data/news.json98 "body": "Actual has started receiving what can only be described as _AI slop_ — pull requests and issues generatedCODE
Modern AI Meta-Vocabulary12 hits · 28 pts
SeverityFileLineSnippetContext
MEDIUMpackages/docs/docs/releases.md208- [#8684](https://github.com/actualbudget/actual/pull/8684) Remove the agentic stop-hook (turn-end typecheck + test) froCODE
MEDIUMpackages/docs/docs/releases.md208- [#8684](https://github.com/actualbudget/actual/pull/8684) Remove the agentic stop-hook (turn-end typecheck + test) froCODE
MEDIUMpackages/docs/docs/releases.md1671- [#5964](https://github.com/actualbudget/actual/pull/5964) Refactor test execution to use `lage` task runner for improvCODE
MEDIUMpackages/docs/blog/2025-11-03-release-25-11-0.md121- [#5964](https://github.com/actualbudget/actual/pull/5964) Refactor test execution to use `lage` task runner for improvCODE
MEDIUMpackages/docs/blog/2026-09-01-release-26-9-0.md115- [#8684](https://github.com/actualbudget/actual/pull/8684) Remove the agentic stop-hook (turn-end typecheck + test) froCODE
MEDIUMpackages/docs/blog/2026-09-01-release-26-9-0.md115- [#8684](https://github.com/actualbudget/actual/pull/8684) Remove the agentic stop-hook (turn-end typecheck + test) froCODE
MEDIUM…ports/reports/monte-carlo/monteCarloSimulation.test.ts883 // A crash pushes the withdrawal rate above the guardrails trigger, soCOMMENT
MEDIUM…ports/reports/monte-carlo/monteCarloSimulation.test.ts1162 // guardrails measures drift against the planned phase path, so theCOMMENT
MEDIUM…ports/reports/monte-carlo/monteCarloSimulation.test.ts1427 // A small pot under guardrails: repeated cuts would take the rule'sCOMMENT
MEDIUM…ports/reports/monte-carlo/monteCarloSimulation.test.ts3198 // guardrails cut the pot-funded 1,000 by 10% a year (900, 810, 729)COMMENT
MEDIUMpackages/desktop-client/src/data/news.json22 "details": "#### Features\n\n- [#8771](https://github.com/actualbudget/actual/pull/8771) Add the Palenight theme tCODE
MEDIUMpackages/desktop-client/src/data/news.json22 "details": "#### Features\n\n- [#8771](https://github.com/actualbudget/actual/pull/8771) Add the Palenight theme tCODE
AI Response Leakage5 hits · 25 pts
SeverityFileLineSnippetContext
HIGHpackages/docs/docs/releases.md4752- [#1311](https://github.com/actualbudget/actual/pull/1311) The cashflow report filters out transfers which makes the enCODE
HIGHpackages/docs/docs/releases.md4752- [#1311](https://github.com/actualbudget/actual/pull/1311) The cashflow report filters out transfers which makes the enCODE
HIGHpackages/docs/blog/2024-03-25-automate-twist.md21Priorities allow you to decide which goals are funded first. Check out our last [blog post](./2023-12-15-automate.md#howCODE
HIGHpackages/docs/blog/2023-08-02-release-23.8.0.md57- [#1311](https://github.com/actualbudget/actual/pull/1311) The cashflow report filters out transfers which makes the enCODE
HIGHpackages/docs/blog/2023-08-02-release-23.8.0.md57- [#1311](https://github.com/actualbudget/actual/pull/1311) The cashflow report filters out transfers which makes the enCODE
Structural Annotation Overuse13 hits · 24 pts
SeverityFileLineSnippetContext
LOW⚡packages/docs/docs/advanced/restart.md15### Step 1: Delete All TransactionsCOMMENT
LOW⚡packages/docs/docs/advanced/restart.md23### Step 2: Set Starting BalancesCOMMENT
LOW⚡packages/docs/docs/advanced/restart.md27### Step 3: Adjust Previous Months' Category BalancesCOMMENT
LOW⚡packages/docs/docs/advanced/restart.md36### Step 1: Address Uncategorized TransactionsCOMMENT
LOW⚡packages/docs/docs/advanced/restart.md42### Step 2: Reconcile Your AccountsCOMMENT
LOW⚡packages/docs/docs/advanced/restart.md46### Step 3: Adjust Previous Months' Category BalancesCOMMENT
LOWpackages/docs/docs/migration/nynab.md46#### Step 1: Get Your Plan IDCOMMENT
LOWpackages/docs/docs/migration/nynab.md59#### Step 2: Download Your PlanCOMMENT
LOWpackages/docs/docs/migration/nynab.md82#### Step 1: Download the ToolCOMMENT
LOWpackages/docs/docs/migration/nynab.md95#### Step 2: Run the ToolCOMMENT
LOWpackages/docs/docs/migration/nynab.md126#### Step 3: Follow the PromptsCOMMENT
LOWpackages/docs/docs/migration/nynab.md143#### Step 1: Get Your Plan IDCOMMENT
LOWpackages/docs/docs/migration/nynab.md163#### Step 2: Download Your PlanCOMMENT
Hallucination Indicators2 hits · 20 pts
SeverityFileLineSnippetContext
CRITICAL.github/actions/handle-feature-requests.js65 return res.data.repository.pullRequest.closingIssuesReferences.nodes.filter(CODE
CRITICAL.github/actions/handle-feature-requests.js130 const comments = commentRes.data.repository.issue.comments.nodes.filter(CODE
Fake / Example Data17 hits · 18 pts
SeverityFileLineSnippetContext
LOW…e/src/server/transactions/export/export-to-csv.test.ts52 const { row } = await payeeCell('Acme Corp');CODE
LOW…e/src/server/transactions/export/export-to-csv.test.ts53 expect(row.Payee).toBe('Acme Corp');CODE
LOWpackages/component-library/src/Paragraph.stories.tsx117 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magCODE
LOWpackages/component-library/src/Paragraph.stories.tsx117 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magCODE
LOWpackages/component-library/src/Label.stories.tsx40 <Input placeholder="user@example.com" style={{ width: 250 }} />CODE
LOWpackages/component-library/src/InlineField.stories.tsx41 children: <Input style={{ flex: 1 }} placeholder="user@example.com" />,CODE
LOW…int-plugin-actual/lib/rules/no-untranslated-strings.js119 'placeholder',CODE
LOWpackages/desktop-client/e2e/bank-sync.mobile.test.ts43 'placeholder',CODE
LOWpackages/desktop-client/e2e/rules.mobile.test.ts48 'placeholder',CODE
LOWpackages/desktop-client/e2e/schedules.mobile.test.ts50 'placeholder',CODE
LOWpackages/desktop-client/e2e/payees.mobile.test.ts45 'placeholder',CODE
LOW…ss/banks/util/extract-payeeName-from-remittanceInfo.ts17 * const payeeName = extractPayeeNameFromRemittanceInfo(remittanceInfo, patterns); // --> 'John Doe'COMMENT
LOW…er/src/app-gocardless/banks/tests/ing_ingddeff.spec.ts14 ownerName: 'Jane Doe',CODE
LOW…er/src/app-gocardless/banks/tests/ing_ingddeff.spec.ts21 owner_name: 'Jane Doe',CODE
LOW…gocardless/banks/tests/sandboxfinance_sfin0000.spec.ts14 ownerName: 'Jane Doe',CODE
LOW…gocardless/banks/tests/sandboxfinance_sfin0000.spec.ts23 owner_name: 'Jane Doe',CODE
LOW…kages/sync-server/src/app-pluggyai/pluggyai-service.js121 const sandboxAccount = account.owner === 'John Doe';CODE
AI Slop Vocabulary3 hits · 7 pts
SeverityFileLineSnippetContext
MEDIUMpackages/loot-core/src/server/budget/envelope.ts37 // This makes the app more robust by "fixing up" null budget values.COMMENT
MEDIUMpackages/loot-core/src/server/budget/tracking.ts14 // This makes the app more robust by "fixing up" null budget values.COMMENT
LOWpackages/desktop-client/src/data/news.json66 "body": "The sidenav is one of the most-used parts of Actual Budget. It's how you jump between your budget, reportCODE
Slop Phrases3 hits · 6 pts
SeverityFileLineSnippetContext
MEDIUM⚡packages/desktop-client/src/data/news.json90 "body": "Hello Actual Budgeters!\nAnother year has gone by with many fixes and upgrades to Actual.\nLet's look bacCODE
LOW⚡packages/desktop-client/src/data/news.json98 "body": "Actual has started receiving what can only be described as _AI slop_ — pull requests and issues generatedCODE
LOW.github/workflows/issues-close-feature-requests.yml35 Don't forget to upvote the top comment with 👍!CODE
Overly Generic Function Names3 hits · 3 pts
SeverityFileLineSnippetContext
LOWpackages/loot-core/src/server/accounts/app.ts808 async function getData(CODE
LOW…client/src/components/accounts/BalanceHistoryGraph.tsx135 function processData(CODE
LOWpackages/desktop-client/src/components/rules/Value.tsx59 function getData() {CODE