> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vinmake.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Accounting desk

> Close, attribution, allocations, costing, and adjustments with exact-money lineage and explicit partial states.

# 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.

| Tab          | What it answers                                                                                            |
| ------------ | ---------------------------------------------------------------------------------------------------------- |
| Close        | Can this period close, which checklist step blocks it, and what evidence supports the answer?              |
| Close binder | What one dated, machine-readable period package establishes and which evidence it declines to establish.   |
| Analysis     | What each journal line belongs to across dimensions and workpapers.                                        |
| Allocations  | What each settlement or advance settles and how much remains.                                              |
| Costing      | What production, period, and sample cost objects absorbed.                                                 |
| Adjustments  | Which staged, awaiting-approval, approved-unposted, posted, rejected, error, or unknown adjustments exist. |
| Statements   | The separate Books statements route for P\&L, balance sheet, cash flow, and cash position.                 |

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.

<Warning>
  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.
</Warning>

<Frame caption="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.">
  <img src="https://mintcdn.com/vinmake/Ehp92UnJ3VTrIHXb/images/greatbook/features/accounting-close.png?fit=max&auto=format&n=Ehp92UnJ3VTrIHXb&q=85&s=e89f4597b7104ab7e34afa72ba76a4c9" alt="The GreatBook Accounting Close desk showing an open period, no stored close run, and no ready or blocked verdict" width="1440" height="1080" data-path="images/greatbook/features/accounting-close.png" />
</Frame>

<Frame caption="Adjustments exposes its full truth vocabulary even when the durable workpaper register was read successfully with zero matching rows.">
  <img src="https://mintcdn.com/vinmake/Ehp92UnJ3VTrIHXb/images/greatbook/features/accounting-adjustments.png?fit=max&auto=format&n=Ehp92UnJ3VTrIHXb&q=85&s=7c97cbdef6e01383a0a1b0aabb502497" alt="The GreatBook Accounting Adjustments desk with truth-status filters including approved unposted and unknown, and a measured zero-row result" width="1440" height="1080" data-path="images/greatbook/features/accounting-adjustments.png" />
</Frame>

## 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.
