The Beancount Philosophy vs Reality: When Does Plain Text Become a Liability?

I’ve been preaching plain text accounting for years—“Git history is your audit trail,” “future-proof,” “human readable.” But last month I got bit hard. A bad import script corrupted three days of transactions. Rolled back via Git, sure, but it got messy. Then I realized: I keep encrypted backups of my ledger in case something breaks, which kinda defeats the “plain text is transparent” thing. And larger datasets? My queries get sluggish.

So here’s the honest question: at what scale does plain text accounting stop working? Is the philosophy sound but reality-constrained? Or am I just not scaling it right? Has anyone hit a wall where plain text became a genuine liability?

Plain text philosophy breaks at scale. You’ll eventually encrypt anyway—might as well use a real database from day one.

I managed four clients on Beancount last year. One had a merge conflict that lasted six hours—both of us edited the ledger simultaneously, Git exploded, nobody knew what was authoritative. We lost two transactions and didn’t notice until reconciliation. The “audit trail” made it worse: we knew exactly who broke it, but couldn’t trust the history. Switched that client to QuickBooks. Sometimes the simplicity of plain text isn’t worth the debugging cost when things go wrong.