> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.nvidia.com/docsfab/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.nvidia.com/docsfab/_mcp/server.

# Artifact and Run-Record Size Limits in DocsFab

> Look up artifact, retention-graph, and saved-record byte bounds.

Look up artifact, retention-graph, and saved-record byte bounds.

## Artifact and Run-Record Sizes

The durable artifact store, hosted editorial evidence retention, and every
reader of a saved run record use these settings. Each one accepts a higher
value up to its catalog maximum, set through its environment variable or by
name in the host limits file. The following table lists these settings.

| Setting | Default | Behavior |
| --- | --- | --- |
| `DOCSFAB_ARTIFACTS_MAX_OBJECT_BYTES` | 134,217,728 bytes (128 MiB) | Largest single object the durable artifact store writes or reads, locally and in hosted editorial evidence retention. A larger content index is stored in parts instead of being refused. |
| `DOCSFAB_RUNS_RECORD_MAX_BYTES` | 67,108,864 bytes (64 MiB) | Largest saved run record any DocsFab reader loads, such as `docsfab runs list`, `docsfab why`, publication preflight, and the live agent's saved-run tool. |
| `DOCSFAB_ARTIFACTS_HOSTED_RETENTION_MAX_OBJECTS` | 16,384 objects | Objects one hosted editorial attempt may retain in project CAS. |
| `DOCSFAB_ARTIFACTS_HOSTED_RETENTION_MAX_TOTAL_BYTES` | 1,073,741,824 bytes (1 GiB) | Bytes one hosted editorial attempt may retain in project CAS, summed over its objects. |
| `DOCSFAB_ARTIFACTS_HOSTED_RETENTION_MANIFEST_MAX_BYTES` | 8,388,608 bytes (8 MiB) | Manifest that lists one hosted editorial attempt's retained objects. |


The artifact store refuses an object larger than `artifacts.maxObjectBytes`
with the code `artifacts-max-object-bytes-bound`. The message names the
observed size, the limit, and the setting to raise. The store never truncates
an object, and every object keeps its digest checks.

Repository size alone does not reach this limit. When a whole content index is
larger than the limit, DocsFab stores the index as content-addressed parts
listed by a manifest. Replay checks every part against its digest and
recomputes the index digest from the reassembled index. A repository of about
10,000 tracked files produces an index of about 17 MB, which the default stores
in one object.

Hosted editorial evidence retention copies every object in the attempt's
artifact store into project CAS. It applies `artifacts.maxObjectBytes` to each
object and the three `artifacts.hostedRetention*` settings to the whole graph,
and it checks the object count and sizes before it copies anything. A crossed
setting refuses with that setting's own code, such as
`artifacts-hosted-retention-max-total-bytes-bound`. An object larger than one
dispatcher CAS object, 16 MiB, is stored as ordered segments, so the CAS object
size does not limit retention.

The hosted runtime runs in a sandbox that does not read the host limits file.
Inside a hosted attempt, `artifacts.maxObjectBytes` and `runs.recordMaxBytes`
keep their catalog defaults, and a host override does not reach a refusal
raised there. Dispatcher retention, outside the sandbox, applies the host value
of `artifacts.maxObjectBytes`, so a host value below the default can refuse an
object that a hosted attempt wrote.

`runs.recordMaxBytes` is the one bound for every reader of a saved run record:
`docsfab runs list`, `docsfab runs import`, `docsfab why`, local publication
preflight, delivery acceptance, the live agent's saved-run tool, the
open-InputAsk lookup that `docsfab do` and the live agent run, and the hosted
dispatcher's review continuation plan. `docsfab runs show` does not apply it. A
record over the bound is reported as too large, never as malformed, as the following list shows:

- `docsfab runs list` shows the run as unavailable with reason
  `record-too-large`, the observed size, the limit, and the setting to raise.
- `docsfab runs import` refuses that record with `runs-record-max-bytes-bound`
  and imports the rest.
- Local publication preflight stops with `runs-record-max-bytes-bound`. The
  record and its patch are unchanged.
- The open-InputAsk lookup prints a `WARNING runs-record-max-bytes-bound` line
  for that record and checks the remaining records.

`runs.recordMaxBytes` replaces `runs.indexRecordMaxBytes`, and DocsFab no
longer reads the old name. When a host limits file still sets it, DocsFab
ignores the value and prints a `WARNING retired-limit-name` line to standard
error that names the file and the replacement. The line appears once per
process wherever DocsFab reads its limits, including `docsfab doctor --limits`.
Set `runs.recordMaxBytes` or `DOCSFAB_RUNS_RECORD_MAX_BYTES` instead.