Parties, attachment links, statements, reconciliations (store), TIN vault crate
check / check (push) Canceled after 0s

Parties: one directory for vendors, contractors, customers, employees,
members, platforms, agencies, banks, landlords (ledger-core parties.rs).
W-9/W-4 facts without the number (last four only; any nine-digit run in a
party field is refused, Treas. Reg. 301.6109-4). Vendor and customer
records link to parties on replay; core tags every bill, invoice, payment,
and reversal with its counterparty. Journal events party.*,
entry.party_set; payroll lines name the employee party.

MCP: books.add_party, update_party, set_party_roles, set_w9, set_w4,
parties, party, set_entry_party; draft_entry party; run_payroll employee;
show party. Viewer: Parties directory and party pages, search, journal
text, W-9 attention, demo data.

One definition of a party's money (ledger_core::parties::activity) for
MCP and viewer. 1099 amounts count payments from cash and financing
accounts (a member paying for the company counts; a card doesn't; a
prepayment counts when made): vendor_1099_report_with, B-19.

Store: attachment links to any subject, statements, reconciliations
(schema v11), with replay and projection. ledger-vault: encrypted TIN and
W-9 records (ChaCha20-Poly1305, key file outside the books).

Spec-blind tests for parties (core, store, MCP, viewer) and attachments.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01GWVo7x3UHw5kwCUaWxiejX
This commit is contained in:
swaitsandClaude Opus 5.5 committed 2026-10-15 14:43:40 -06:00
1 parent 0a62353767
commit e265ed4339
54 files changed
+10961 -178

No files matched your search

+9
View File
@@ -322,6 +322,13 @@ receipt_threshold = "25.00"
# by books.roles. Until assigned, each uses its default code (1200, 2000,
# 4000, 6999, 3999, 6100, 6110, 2110-2150).
[vault]
# The TIN vault (full taxpayer identification numbers and W-9s, encrypted,
# in vault/ beside the books, which git ignores) is opened with this key
# file, kept OUTSIDE the books. Keep a copy in your password manager:
# without it the vault can't be read. Unset: ~/.config/wanderbooks/vault.key
# key_file = "~/.config/wanderbooks/vault.key"
[viewer]
# When a session starts and the viewer isn't open (`just gui-status`), the
# agent: "ask" offers to open it, "always" opens it (`just gui`), "never"
@@ -332,6 +339,8 @@ open_at_start = "ask"
const GITIGNORE: &str = r#"# The SQLite projection is disposable — it rebuilds from journal.jsonl.
books-data/wanderbooks.db
books-data/wanderbooks.db-*
# The TIN vault: encrypted, but never in git (it must be purgeable).
vault/
# Copies of a database that disagreed with the journal, kept when it is
# rebuilt; disposable like the database itself.
books-data/wanderbooks.mismatch.*