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

# Publish, versions, and the test set

> Publishing snapshots an immutable version; test sets catch regressions.

A draft schema is only a working copy. **Publish** snapshots the current fields into an immutable **version** and makes that version available to batches and **Apply schema**.

The first publish also moves the schema from **Draft** to **Active**.

## Versions

Each publish increments the version number. Older versions stay on disk so a batch that pinned v3 does not silently pick up v4.

You can:

* Compare two versions in the builder.
* **Deprecate** a version so new jobs stop using it, without deleting history.
* Keep working on the draft after a publish — those edits are not live until the next publish.

<Note>
  Publish is blocked if the schema violates a hard contract: too many fields for the mode, a table with no columns, or an invalid field id. Fix the highlighted fields and try again.
</Note>

## Test set

Each schema can hold a curated **test set** of documents. Use it for files that used to fail, edge layouts, and the samples you care about most.

**Batch Full Test** runs the *draft* (not the last published version) against that set. It clones the files into a hidden test batch so your real library is untouched. Watch progress on the builder; the run is billed like any other extraction.

Before publish, the builder can also show a per-field **regression delta** against the previous version — a prompt, not a hard block.

## After you publish

* New batch jobs that pick this schema use the current version.
* Documents already processed keep their old fields until you **Reprocess** with the new version.
* Share the schema to the [Org Library](/sharing/org-library) if teammates should reuse it. Recipients can clone a copy into their own list.
