Skip to content

Stop importing balances from writing a net-worth snapshot - #39

Merged
ShichengRao merged 1 commit into
mainfrom
claude/no-auto-snapshots
Aug 13, 2026
Merged

ShichengRao merged 1 commit into
mainfrom
claude/no-auto-snapshots

Conversation

@ShichengRao

Copy link
Copy Markdown
Owner

Summary

Importing balances no longer writes a net-worth snapshot unless you ask for it.

A snapshot says what every account was worth on a date. Net worth is the sum of the balance rows in one, so a snapshot holding only the accounts that happened to be fetched renders as a cliff. Pulling a single institution made net worth appear to collapse — which is an alarming thing for a finance app to do on its own initiative.

Type of Change

  • Importer support
  • Bug fix
  • Tests
  • Documentation
  • Frontend
  • Backend
  • Refactor / cleanup

Details

Neither import path writes balances by default now.

  • CLI: --apply-balances opts in. --apply alone imports transactions and previews balances without writing them, so the numbers are still visible in the run output.
  • Import page: a balances file you select by name still applies, because naming a file is a choice about that file. "Import all new" leaves balances out — sweeping up everything importable is not a statement about your net worth. The skipped file reports skipped_balances with a line saying where to build the snapshot instead.

Staged balances remain available either way, and nothing about the fetch changes. The snapshot editor's fill-from-connections prefill already reads them, which is the right place to build a snapshot: every account is in view, so a gap is visible before it is saved rather than after.

Privacy Checklist

  • I used only synthetic test/sample data.
  • I did not include real account numbers, balances, merchants, names, addresses, or other personal details.
  • This change does not add or expand outbound network access.

Testing

make test (133 passed), make api-contract-check.

The existing staged-import test asserted the old behavior and now covers both sides of the rule: a sweep imports the statement, reports skipped_balances, and leaves zero snapshots behind; naming that same balances file then applies it and creates the snapshot.

Screenshots

n/a — no UI changes; the Import page reports the new status through the existing outcome list.

Related Issue

n/a

A snapshot says what every account was worth on a date. Writing one as a
side effect of importing whichever connections happened to run produces
a snapshot holding only those accounts — and since net worth is the sum
of the balance rows in a snapshot, that renders as a cliff. Fetching one
institution made net worth appear to collapse.

Balances are no longer written by either import path unless asked for:
the CLI takes --apply-balances, and the Import page still applies a
balances file you pick by name, but leaves them out of "import all new".
Sweeping up everything importable is not a statement about your net
worth; naming a file is.

The staged balances remain available either way. The snapshot editor's
fill-from-connections prefill already reads them, which is the right
place to build a snapshot: every account is in view, so what is missing
is visible before it is saved rather than after.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ShichengRao
ShichengRao merged commit 0e2f01d into main Aug 13, 2026
5 checks passed
@ShichengRao
ShichengRao deleted the claude/no-auto-snapshots branch August 13, 2026 07:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant