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

# Artifacts and storage

> Two stores, two purposes: small gated documents whose bytes are sealed as evidence, and heavy objects with pins and expiry.

Merv keeps two stores. Artifacts are small, typed documents whose bytes are sealed as evidence at each gate; object storage holds the heavy files — checkpoints, datasets, logs — with pins and expiry. This page says which is which and how each behaves.

| Store          | Artifacts                                                                    | Object storage                                                                                 |
| -------------- | ---------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
| Holds          | Plans, reports, graphs, lens docs, change specs, small metrics JSON, figures | Checkpoints, model weights, datasets and shards, caches, logs over \~10 MB                     |
| Size           | Gated roles and `result` metrics JSON ≤ 16,000 bytes each; figures alongside | Up to the project's limit (deployment ceiling 50 GiB; multipart above 5 GiB)                   |
| Lifetime       | Permanent; sealed at each workflow transition                                | 60 days by default, then expires unless **pinned** or **renewed**                              |
| Tool           | `artifact.submit` / `artifact.find`                                          | `storage.submit` / `storage.fetch` / `storage.find` / `storage.object`                         |
| Where bytes go | Straight from the agent to the blob store over a one-time URL (\~15 min)     | Straight from the agent to object storage over a presigned URL (24 h); never through the brain |
| Enabled        | Always                                                                       | When the deployment configures a provider — projects can turn it off                           |

## Artifacts

An artifact is a typed file submitted against a target — an experiment, reflection, claim, review, or attempt — with a **role**. The roles are `plan`, `report`, `graph`, `result` (metrics JSON), `project_graph`, `reflection_lens_doc`, `reflection_doc`, and `change_spec`.

Submitting a gated role pins the bytes, so gates and reviewers read immutable content. Resubmitting the same slot replaces it. Markdown with relative image links gets a follow-up upload command per figure.

One role is system-authored: `exhibit`, the metrics view generated from pinned result files at results submission — readable via `experiment.exhibit`, never replaceable.

Local edits don't count. Only submitted, uploaded bytes are evidence.

## Object storage

The agent registers an object with its sha256 and size, runs the upload command the brain returns, and the ledger entry becomes available. Objects carry a `kind` (`dataset`, `model`, or `other`), optional provenance (`producing_experiment_id`, `producing_run`, `source_uri`), and an expiry.

| Action   | Effect                          |
| -------- | ------------------------------- |
| `pin`    | Never expires                   |
| `unpin`  | Back to a 60-day clock from now |
| `renew`  | Fresh 60 days                   |
| `delete` | Gone                            |

The **Storage** page in the UI lists objects with status, expiry, and provenance; **Settings → Storage** sets the project's per-object limit and can disable storage. Candidates for the project champion point at artifacts or storage objects — never Git.

Nothing is copied off a sandbox for you — see [Sandboxes](/docs/merv/concepts/sandboxes). The submit-results step of a run is on [Running research](/docs/merv/guides/running-research#submit-results).
