diff --git a/plan/roadmap.md b/plan/roadmap.md new file mode 100644 index 0000000..7677e48 --- /dev/null +++ b/plan/roadmap.md @@ -0,0 +1,52 @@ +# Roadmap + +## Phase 1 — Semantics core (now) + +The engine: money, accounts, journal, ledger commands, trial balance, P&L, +balance sheet, golden files, property tests, and the docs an agent needs to +work here (AGENTS.md, requirements, architecture, oracle, parity, glossary). +Done when the parity floor is 6+ and every `done` item is tested + +golden-covered. + +## Phase 2 — Close the accounting loop + +- Period close (fiscal periods, closing entries, locked periods) +- Cash flow statement, indirect method +- `proptest` with shrinking; properties for close and cash flow +- Parity floor moves; goldens grow + +## Phase 3 — Oracle harness + +- `ledger-import`: GnuCash XML read-only import +- `ledger-oracle`: fixture books through our engine and GnuCash headless, + automatic `snapshot()` diffing via `cargo xtask oracle` +- Parity catalog becomes machine-readable; CI enforces the non-regression + floor +- Done when: a fixture book produces byte-identical snapshots from both + engines with zero manual steps + +## Phase 4 — App shell (egui) + +- `books-app`: one Rust codebase, native desktop + WASM (the storytold + stack: egui/eframe, no Electron, no React) +- Command-driven UI: every UI action goes through the `Ledger` command + surface; the UI holds no accounting logic +- storytold's screenshot-in-the-loop returns: agents verify UI changes + visually, against reference screenshots of GnuCash/QuickBooks kept + maintainer-local (never committed) +- Workflow parity catalog starts (QuickBooks/Xero reference): invoices, + bills, bank rec, chart management + +## Phase 5 — Workflow parity + +- A/R and A/P workflows, bank reconciliation, budgets, scheduled transactions +- Multi-currency with FX translation +- The goal: a self-hosted bookkeeping app with a tested claim to + semantic parity with GnuCash and workflow parity with QuickBooks — + no SaaS subscription required + +## Explicitly not on the roadmap + +Bank feeds, payment processing, payroll, tax filing. Those are integrations +and regulated domains, not cloning targets. The engine gets clean seams for +them; someone else's API provides them.