swbanga.com

By Super Washington BangaRetrospective

Ledger-Core v1.0

Ledger-Core Sprint 01 — first reconciliation pass

Retrospective on the first sprint of Ledger-Core: what shipped, what broke, and the three lessons that will shape Sprint 02.

What Worked

  • Daily commits with a single Conventional Commit per logical unit
  • Writing the integration test before the reconciliation engine
  • Keeping the database schema frozen for the whole sprint

What Failed

  • Import of the legacy CSV assumed one currency per account
  • Skipped the property-based test pass in favour of hand-written fixtures
  • Branch sat open for three days, growing merge debt

Key Lessons

  • Constrain input shape first; relax only when data proves otherwise
  • Property-based tests earn their cost on parser code
  • Land small diffs daily even when the feature is incomplete

What shipped

The first reconciliation pass runs end-to-end against real ledgers:

bash
swb-cli generate journal --input reconciliation-notes.txt

It matched 98.4% of transactions on the first run — the remaining 1.6% are all multi-currency imports.

What broke

The CSV importer assumed one currency per account. Three accounts in the legacy data violated that, and the failure surfaced only at the boundary tests. The fix was a schema guard — the same lesson as this site's content pipeline.