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

# The GL pipeline

> What shipped around the ledger and what remains: scheduled assurance, the Auditor associate, realised FX, and analytics.

# The GL pipeline

Everything on this page is **roadmap**, except where a section says it shipped.
It is written here because each item is a known gap with a decided or half-decided answer, and a reader who finds a gap in the product should find it named in the documentation first.

**Legend:** 🟢 Live · 🟡 In Development · ⚪ Planned · 🔵 Future

<Warning>
  Everything on this page is roadmap unless a section says otherwise.
  For what runs today, read [What is live](/greatbook/status); for what refuses a bad entry today, read [What guards the engine](/greatbook/gl/guards).
</Warning>

## The reconciliation knowledge graph 🟢 over the GL and intake

**This one shipped.**
The graph, the generated concept ontology behind it and the `recon` check family are live over the GL and intake sources, and they have their own page: [the reconciliation ontology](/greatbook/capabilities/reconciliation-ontology).

What is live is the header grain: nodes for every entry, obligation, settlement, allocation, tax register line, account, period and rail, plus the documents in intake and the Typewriter, and the asserted edges between them.
The `recon` family joins hash chain, the GL invariant sweep and the orphan scan as a **fourth** family - not as a Close checksum, and not as a GL invariant.

Three things about it are still roadmap:

| Still open                                | What it needs                                                                                                                                                                                                                                                                                                                 |
| ----------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **the line grain, and 3-way matching** 🟡 | document, obligation and journal-entry *lines* as nodes, so a bill whose lines do not foot to its header, or whose quantities do not match the goods receipt, becomes visible. Line-level `matches` is the one relation that can never be an asserted edge - no system commits a line match - so it exists only as a proposal |
| **Teable as a source of its own** 🟡      | today a Teable record enters the graph only as a shadow node built from the intake row that staged it. Reading Teable directly is what makes a record with no intake row at all visible                                                                                                                                       |
| **the external registers** ⚪              | the tax authority's VAT register line and the bank statement line - the `ExternalRecord` concept is declared and not yet projected                                                                                                                                                                                            |

## Scheduled and triggered reviews 🟢

**This one shipped.**
The Auditor job system runs scheduled and event-triggered reviews, persists each occurrence and keeps durable findings in the exception register.
The seeded catalogue includes nightly chain and family sweeps, an hourly orphan scan, period-close coverage, and bounded arrival triggers; [Assurance](/greatbook/agents/assurance#what-is-scheduled-today) is the generated current inventory.

Two properties matter more than the schedule:

* **Idempotency.** A job that fires twice produces one review, keyed on an occurrence rather than on a timestamp.
* **Stable finding identity.** The same exception is one item that ages, not a new item every night - and an exception is marked resolved because the book was re-read, not because a run said so.

Findings live in their own table, and a repeat occurrence ages one stable fingerprint rather than appending a duplicate.

## The Auditor associate ⚪

For an open-ended question - why a supplier's July invoices do not tie, whether a vendor has been paid twice - the Auditor would work like an associate: write a to-do list, choose from a **fixed** set of read-only steps, work through the list, and produce a report.

The containment rules are the interesting part, and they are decided:

| Rule                                      | Decision                                                                                                                                             |
| ----------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------- |
| does the model produce findings?          | **no** - it plans, selects and narrates; every number comes from a deterministic step result                                                         |
| does it get web access?                   | **no** in v1 - deep research means the org's own data, deeply. A fetch is untrusted-text ingress into a turn that reads the book                     |
| can it propose a correcting entry?        | **no** - it names the Bookkeeper's gate and stops                                                                                                    |
| does it write anything?                   | **no** - the DevCenter persists on its behalf, from the report the Auditor returns                                                                   |
| is the loop model-driven or graph-driven? | **graph-driven**; the model returns a validated JSON decision, because an SDK tool loop hides steps and an incomplete step log is not an audit trail |

Every step is logged with what it ran, what it got back, and a fingerprint of the result, so any conclusion can be re-checked by re-running the same query.
An investigation that stops early - a budget, a dead end - says so and names the questions it did not answer.

## Remaining multi-currency work ⚪

<Note>
  A foreign obligation **partly settled at a different rate** is a realised FX difference the book has no machinery to book, so the control tie shows it.
  See [Adjustments, FX and consolidation](/greatbook/gl/rules-adjustments-and-fx).
</Note>

The schema-owned 307-code currency enum, Typewriter controls, operator FX rate-load path, VAT register native/base evidence and replay-safe obligation creation are built.
Automatic realised-FX booking remains open.

## Analytics and reporting 🔵

The direction is **read-only analytics over the dimensioned ledger**, not a second book.

| Piece                                           | Shape                                                                                               |
| ----------------------------------------------- | --------------------------------------------------------------------------------------------------- |
| Metabase dashboards                             | read the canonical database directly; no database views are GreatBook's own                         |
| the budget-versus-actual and forecast endpoints | already portable Postgres queries over the dimensioned GL, deliberately not tied to one cube engine |
| the EPM / analytics line                        | the longer-term direction, and a product decision rather than an engineering one                    |

The constraint that will not move: analytics reads the book.
It never becomes a place where a number is *computed differently* from how the ledger computes it, because two answers to the same question is the failure mode the single writer exists to prevent.

## Known engineering gaps, named ⚪

| Gap                                                      | Consequence                                                                                                                                                                                                                                                                              |
| -------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| the hash-chain recompute issues one line query per entry | fine at today's volume; the first thing to hurt when a nightly job runs it over a real book                                                                                                                                                                                              |
| `langgraph_chat/` has no lint gate                       | the type checker covers the backend only; new agent modules land ungated, so they are linted by hand                                                                                                                                                                                     |
| durable business workflows                               | workflow records and guarded resume are durable, but resuming currently advances metadata rather than executing a full accounting step                                                                                                                                                   |
| broader staged-domain coverage                           | workflow resume, W3 Matching decisions, Typewriter approve/submit, adjustment decisions, fiscal close/reopen and typed business reversal are merged; intake/posting decisions, payments, W6 evidence import after review, audit waiver and generic actions remain outside the closed set |
| ChatGPT and Claude MCP acceptance                        | public OAuth/MCP ingress is current on registry `1.14.1`; real provider identity, scope, discovery, fallback, confirmation and safety exercises remain open                                                                                                                              |

## Related

* [What is live](/greatbook/status) - the current status board
* [What guards the engine](/greatbook/gl/guards) - what already holds
* [The Auditor](/greatbook/agents/auditor) - the seven runnable families and explicit close-gated scope
* [The API reference](/greatbook/api/index) - the surface these would be reached through
