From ae61f02eb868e157713155a124e5e4182a2be208 Mon Sep 17 00:00:00 2001 From: Stephen Waits <1+swaits@noreply.git.swaits.com> Date: Sun, 11 Oct 2026 01:07:47 +0000 Subject: [PATCH] Spec: AI-first MCP interface phase (ledger-mcp, receipt store, capability parity) --- plan/roadmap.md | 48 +++++++++++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/plan/roadmap.md b/plan/roadmap.md index 7677e48..f358122 100644 --- a/plan/roadmap.md +++ b/plan/roadmap.md @@ -1,19 +1,27 @@ # Roadmap -## Phase 1 — Semantics core (now) +## Phase 1 — Semantics core (done) 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. +Parity floor: 6 done. -## Phase 2 — Close the accounting loop +## Phase 2 — AI-first interface (now) -- 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 +The primary interface is MCP, not a cloned GUI (Stephen's call, 2026-10-10). + +- `ledger-store`: SQLite persistence, append-only triggers, amounts as TEXT, + event log, migrations, rebuild-from-log verify. Spec: `docs/receipt-store.md`. +- Blob store: content-addressed receipts and documents, attachment metadata, + Drive backfill script. +- `ledger-mcp`: stdio transport first, Streamable HTTP later; narrow tools, + preview-before-post, digest, read-only resources, the agent operating + contract in the tool descriptions. Spec: `docs/mcp-interface.md`. +- Capability parity vs the GSheet+GDrive system: `docs/capability-parity.md`. +- Parallel run with the sheet; cutover per the cutover rule. +- Done when: every specced capability-parity row is covered, a month of + parallel run diffs clean, Stephen approves the cutover. ## Phase 3 — Oracle harness @@ -25,25 +33,23 @@ golden-covered. - Done when: a fixture book produces byte-identical snapshots from both engines with zero manual steps -## Phase 4 — App shell (egui) +## Phase 4 — Read-only GUI -- `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 +- Consumes the `ledger-store` event log: live updates via tail/SSE — the + answer to "watch its files to update live." +- egui or web; a dumb client holding no accounting logic. +- This is the trust layer for humans (Stephen, Kat, the CPA), not the + primary interface. Read-only at first; editing stays with the agent. ## 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 +- Period close and cash flow (engine R-FUTURE items) land as their phases + demand, not before +- The goal: a self-hosted bookkeeping system with a tested claim to + semantic parity with GnuCash and capability parity with the old + GSheet+GDrive workflow — no SaaS subscription required ## Explicitly not on the roadmap