--- numbering: title: true --- # `means.bank_sync`: Read-Only Bank Synchronization ```{py:currentmodule} means.bank_sync ``` The `bank_sync` subpackage treats the remote provider, reconciliation journal, and Ledger projection as distinct layers. Provider observations first enter an owner-only SQLite journal with a compare-and-swap cursor. A deterministic plan then binds posted transactions to known Ledger accounts, keeps categorization visibly under `Unknown`, and records every safety blocker. Only the local applier may replace the generated sidecar, after exact preview, hash, parser, and ledger-cli validation. The journal separates its append-only provider audit revision from plan-affecting transaction truth and explicit binding decisions. A checkpoint-only refetch updates freshness without changing the plan identity or generated bytes, while any transaction or binding change stales the reviewed plan before apply. The package intentionally exposes provider-neutral models and boundaries. The current Plaid adapter is an implementation detail behind that contract; access tokens remain injected secrets rather than model fields or command arguments. ```{eval-rst} .. automodule:: means.bank_sync :members: :imported-members: ```