Kuatia is presented as a double-entry-style ledger, but it does not have a
"journal" or "journal entry" type, and it has a Book type whose name invites
confusion with an accounting book or journal. Users ask whether the ledger
supports journaling, in particular compound entries that touch more than two
accounts. The mechanics exist already (a Transfer is a list of Movements
committed atomically, and TransferStore is an append-only log), so the open
question is naming and framing: what, in Kuatia's model, is a journal entry,
what is the journal, and what is Book?
Book, the transfer log, and the event log are all easy to conflate.Σ debits = Σ credits.Transfer / Envelope /
TransferStore.Declare that a committed Transfer (resolved into an Envelope) is a journal
entry, that a Transfer with multiple Movements is a compound journal entry,
and that the transfer log (TransferStore of EnvelopeRecords) is the
accounting journal. Enforce balance through the existing per-asset conservation
check. Capture the terminology in accounting-mapping.md and journaling.md.
Pros:
Cons:
Book keeps a name that suggests "accounting book"; the docs must repeatedly
disclaim it.Journal and JournalEntry typesIntroduce dedicated types that wrap the transfer log and a committed transfer.
Pros:
Cons:
JournalEntry would be a Transfer/Envelope, Journal
would be TransferStore. Two names for one concept invites drift.Book to something journal-adjacentRename Book to reduce the accounting-book confusion.
Pros:
Cons:
Book is a transfer policy scope, not a journal; a journal-adjacent name
would make the confusion worse, not better. The fix is documentation, not a
rename.Chosen option: Option 1. Model journaling with the existing types and document
the mapping. A committed Transfer resolved into an Envelope is a journal
entry; a Transfer with multiple Movements is a compound journal entry; the
transfer log is the accounting journal. Per-asset conservation
(sum(consumed) == sum(created), enforced in validate_and_plan) is the
equivalent of Σ debits = Σ credits. Book is a transfer policy scope, not the
journal, not a journal entry, and not a balance partition. The event log
(ADR-0010) is for lifecycle notifications and is not the journal.
Book vs. journal, posting-noun vs. posting-verb,
transfer log vs. event log) are documented in one place.journaling.md and accounting-mapping.md staying accurate.Book retains a name that needs a standing disclaimer.Transfer
is intent resolved into an Envelope)