feat(bookspec): GnuCash as the second engine, its differences settled (P13 step 5)

bookspec-gnucash implements the Engine trait over the oracle container
(oracle/gnucash/books.py) and claims the rules whose examples ask only
for balances. It passes BS-entry-3, BS-ledger-3, BS-statement-1 and
BS-statement-2 and differs from three examples, each adjudicated from the
sources and pinned by tests: GnuCash accepts an unbalanced entry and
parks the difference in an Imbalance account (BS-entry-1 refuses it); it
reads a credit of minus 100 as a debit (BS-entry-2 is a convention that
removes the ambiguity); it rounds 10.005 to 10.01 silently (BS-ledger-1
is the owner's choice not to). The example stands in each case: GnuCash
is a cross-check, not the authority.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HS8WZziDnyxunC23MUxrLp
This commit is contained in:
swaitsandClaude Fable 5.1 committed 2026-10-29 12:51:30 -06:00
1 parent 40eb606bf3
commit f8cd4abbce
6 files changed
+488 -1

No files matched your search

+18
View File
@@ -0,0 +1,18 @@
[package]
name = "bookspec-gnucash"
version = "0.1.0"
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "A second engine for bookspec: GnuCash, driven through the oracle container's files."
[dependencies]
bookspec-checker = { path = "../checker" }
serde_json = "1"
rust_decimal = "1"
[dev-dependencies]
bookspec-runner = { path = "../runner" }
[lints]
workspace = true