Skip to main content

Accounting desk

Accounting at /accounting is the analytical desk beside Books and Audit. It is screen-first and read-oriented; there is no Accountant chat route in the browser. All money crosses the API as exact decimal strings. Each row retains the native reference and journal-link state instead of flattening the desk into a second reporting database.

Canonical line attribution

Analysis reads the canonical accounting-event detail rather than inferring attribution from labels in a summary row. Each journal line reports activity, party, cost object, flow, and cost-centre attribution as complete, partial, missing, inconclusive, or error. An omitted attribution object means the response did not answer the question; it is not evidence that the line has no attribution. Contradictory stored fields and source records make the affected attribution unavailable instead of being merged into a plausible label.

Close binder

The binder route accepts one YYYY-MM period. Organization and access are derived from the verified server session, and the browser cannot choose an actor, organization, table, or query. A successful response is shown only after the complete package validates; download returns the exact response bytes rather than a client-side reconstruction. Unavailable source claims remain in the package’s declined-evidence index.
The reader exists in the shipped web and backend source, but registry 1.14.1 classifies greatbook.close.binder.read as experimental and blocked. This page does not treat the reader code as proof that a production binder has been completed successfully.
The GreatBook Accounting Close desk showing an open period, no stored close run, and no ready or blocked verdict

Close keeps coverage separate from cleanliness. The selected open demo period has no stored run, so the desk withholds both ready and blocked verdicts until the live checks run.

The GreatBook Accounting Adjustments desk with truth-status filters including approved unposted and unknown, and a measured zero-row result

Adjustments exposes its full truth vocabulary even when the durable workpaper register was read successfully with zero matching rows.

What this surface refuses

The desk does not allow the model to post, close a period, approve an adjustment, or choose an organization. Close and adjustment mutations, where offered through a review workspace, re-read canonical state and require exact revision, named-human authority, maker-checker separation, and a durable receipt. An unsupported or incomplete link stays incomplete; the UI does not join records by a similar-looking label.

When the answer is unknown

Journal links report linked, unlinked, not_recorded, or unknown. Allocation, costing, and adjustment responses carry explicit partial or unavailable rows, and a malformed successful response is treated as unreadable rather than as no accounting activity. Adjustment commit outcomes remain unknown until a canonical reread or receipt proves them.

Verified at source

  • The GreatBook web repository’s src/lib/accounting-nav.ts defines the seven desk destinations and confirms that the workspace is not a browser chat agent.
  • Its src/lib/accounting-reads.ts, accounting-analysis.ts, and accounting-close.ts define strict exact-money, paging, partial, unavailable, and link-state contracts.
  • Its src/lib/close-binder.ts and src/app/accounting/binder/page.tsx validate one complete period package, keep declined evidence visible, and download the exact server bytes.
  • langgraph_chat/devcenter/gl_api.py is the canonical attribution source consumed by Analysis; summary omission, factual absence, incomplete sources, and endpoint failure are separate states.
  • langgraph_chat/devcenter/accounting_api.py owns the corresponding server reads.
  • langgraph_chat/agents/accountant/ owns the close and adjustment proposal logic; canonical mutation still passes through named domain services and the ledger writer.