Skip to main content

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 remains partial 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.py defines 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.py owns the shared event/source resolver used by Books and Transactions.
  • The GreatBook web repository’s src/lib/books-workspace.ts rejects 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.json record 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.