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

# Contract is the atom

> Why every number a finance operator reports — ARR, renewals, churn, expansion, forecast, GRR/NRR — derives from one contract record, with nothing to reconcile.

You need ARR, renewals, churn, expansion, the forecast, GRR/NRR, the waterfalls, and the board numbers to agree. Today they don't — not because anyone did the math wrong, but because each one is assembled from a different source and stitched together by hand. The contract is how HarborOS makes them agree.

## The spreadsheet is an architecture problem

Between your CRM, your ERP, your board deck, your renewal forecast, and your ARR reporting sits a spreadsheet. It exists because no system upstream of it holds the whole picture, so someone exports from each, reconciles the differences, and publishes the result. Every reporting cycle, that reconciliation runs again.

The spreadsheet is not a tooling gap you can close by buying a better reporting tool. It is an architecture problem: the systems you already own model the wrong thing.

* **CRM tracks intent.** A deal is a forecast of what sales believes will close. It is not a record of what was agreed.
* **ERP tracks history.** It records what has been invoiced and collected. It does not model the contract lifecycle — renewals, expansions, and the term boundaries that decide what counts as ARR today.
* **HarborOS tracks truth.** It models the contract itself, on its own lifecycle, as the thing every number derives from.

Neither CRM nor ERP models the contract lifecycle correctly. That is why the spreadsheet exists — and why a different primitive is the only thing that removes it.

## One record, many views

The contract is the canonical primitive. There is one contract record, and every downstream number is a lens on contracts — not a separate dataset that has to be reconciled back to them.

ARR is contracts, classified and summed as of a date. A renewal is a contract approaching its term boundary. Churn, expansion, and contraction are differences between contract positions across two dates. The forecast is the same contracts projected forward. None of these is a parallel system of record; each is a query over the one record.

This is what removes the reconciliation. When ARR and the renewal forecast and the board waterfall all read from the same contracts, there is no second source to disagree with — and nothing to stitch together by hand.

## What the numbers mean

Because every figure derives from contracts, every figure is traceable to the specific contracts behind it. A contract resolves to exactly one recognition bucket on any given date — active, assumed renewal, grace-expired, churned, or not-yet-active — and a contract that contributes to an ARR total always carries the label explaining *why* it counts. A number is never a figure without a derivation; it is a set of contracts you can open and inspect.

<Warning>
  **The determinism boundary — where truth is computed, and where AI assists.**

  ARR, the forecast math, recognition buckets, and contract lifecycle transitions are computed deterministically. The same engine produces the number every time, with no separate path for automated runs versus manual ones, and the result is explainable and reconstructable from the contracts behind it.

  AI assists ingestion, extraction, and narrative — reading documents, proposing field values, and writing the prose around a snapshot. It never computes or mutates ARR, forecast truth, or lifecycle state. The boundary is firm: AI proposes, the deterministic engine decides, and an operator confirms. Trust is the product, and this is where it lives.
</Warning>

## A contract counts only after it's confirmed

A newly extracted contract does not contribute to ARR on arrival. It contributes only after it passes the confirmation gate: an operator has reviewed and confirmed the extraction (or the deal is a won-but-not-yet-papered contract that already counts today). Until then it is held out of every total. A contract flagged as churn is always excluded — no grace window rescues it.

This is the seam between AI-assisted ingestion and deterministic truth: extraction is assisted, but nothing reaches an ARR number until a human confirms it.

For how a contract moves through its lifecycle — and the states that decide when it counts — see [Lifecycle model](/concepts/lifecycle-model).

## Related

<CardGroup cols={2}>
  <Card title="Lifecycle model" href="/concepts/lifecycle-model">
    The states a contract moves through, and how each one affects what counts.
  </Card>

  <Card title="Lenses" href="/concepts/lenses">
    How ARR, renewals, and waterfalls are each a view over the same contracts.
  </Card>

  <Card title="Glossary" href="/concepts/glossary">
    Definitions for ARR, GRR/NRR, expansion, contraction, and churn.
  </Card>
</CardGroup>
