# Snapshots: freezing data so numbers stay meaningful

A score is a statement about a specific set of rows. If the rows can change underneath it, the score stops meaning anything.

## Three words

- **Connection.** Where the data comes from, registered once.
- **Dataset.** A table ingested or registered from that connection.
- **Snapshot.** An immutable version of a dataset, created by each ingest or sync.

## Why immutable

Reports and endpoints reference the exact snapshot they ran on. Nothing about that snapshot changes after creation, so a report can always be reproduced and compared.

## Pinning and refreshing

An endpoint keeps serving its current snapshot until you refresh it, even after a newer one exists. Changes in the source system do not leak in unannounced. Refresh is also the only operation that removes deleted rows from what the endpoint knows.

## A guard worth having

A dataset used by a live endpoint cannot be unpinned or deleted. The system refuses and names the endpoint that depends on it, so nobody breaks production by cleaning up.

## Sources

Uploads (CSV, Excel, JSON), databases, cloud storage, and APIs can all feed the same model, and every sync produces a new snapshot the same way.
