The seven Books families
Books is the native accounting workspace behind/books.
It reads the records that each business process actually owns, then attaches the related accounting event, complete journal entries, source clock, approval evidence, and Assurance findings without making a second ledger.
Select a family from the Books overview, then open a structure to see its bounded native register.
Five approval-sensitive families also show exact durable maker-checker evidence rather than inferring approval from a status label.
Read state is separate from freshness
Freshness is another contract over each family’s source clocks.
fresh means the newest relevant clock is within the 35-day window, stale means it is older, inconclusive means the clock is unknown or the family has no authoritative as-of field, and error means freshness could not be evaluated.
A stale family can still have a complete read, and a fresh timestamp cannot turn a partial read into a complete one.
Several families legitimately render Inconclusive or Freshness unavailable when native source facts, journal lineage, book-currency history, or an authoritative as-of clock are absent.
Those labels are the intended result of a bounded read, not a degraded substitute for green.
Coverage is the published subset
Family accounting-link coverage includes structures that actually publish accounting links. Master and reference structures remain authoritative family members, but their absence from the accounting-link subset is not a failed link. The UI reconciles every structure the endpoint published and separately verifies the complete family catalogue, so it neither demands a fabricated journal link from a master table nor lets an unknown structure disappear. A control-account tie-out may publish no control account only when that control discovers its accounts from its own rows and the same response establishes a zero-row population. A populated control with no named account is still unreadable.What this surface refuses
Books is read-only. It does not edit native rows, post a journal, waive a finding, convert an unreadable response into zero, call an unknown clock stale, or hide rows because their journal lineage is missing.When the answer is unknown
Unknown coverage remainspartial or inconclusive, unknown freshness remains inconclusive, and a failed source remains error.
The UI withholds totals that require a complete answer and shows the backend detail instead of painting an empty state.
Verified at source
backend/app/logics/finance/books.pydefines the seven-family catalogue, register projection, four read states, 35-day freshness contract, approval-sensitive families, and read-only behavior.backend/app/logics/finance/gl_lineage.pyowns the shared event/source resolver used by Books and Transactions.- The GreatBook web repository’s
src/lib/books-workspace.tsrejects malformed or internally inconsistent complete responses before the UI may show their counts and distinguishes the published accounting-link subset from the full family catalogue. - The release fixtures under
tests/fixtures/real-api/books-family-*-summary.jsonrecord all seven family responses from the running demo backend at the pinned release head; they include complete, partial, inconclusive, fresh, and inconclusive-freshness states rather than one universal green result.