# Versions and publishing

> Publishing moves a pointer. Rolling back and rolling forward are the same operation.

Kind: concept · ~2 min · Verified v0.66.0 · Next: [MCP tools](https://pr-764-stg.superartifacts.app/docs/reference/mcp.md)

A version is a server-assigned positive integer, rendered `v1`, `v2`, and so on. The client
does not choose it: the server reads the current record and increments.

Versions are **immutable once written**. A correction is a new version, never an edit of an
old one.

## One version is live at a time

An artifact serves exactly one version — its published version. A new deploy publishes
itself, so deploying feels like deploying. Publishing any *other* version is a separate,
deliberate act.

Publishing is a pointer move rather than a rebuild, so rolling back and rolling forward are
the same operation. The version's data policy moves with the pointer: only the owner may
publish a version that collects under a different policy from the live one.

## Previewing an unpublished version

`GET /{id}/_v/{n}/` serves version `n` directly. For the owner that works for any version;
for anybody else it only works when `n` is the published one — otherwise unpublished drafts
would be readable by URL, which would defeat the point of publishing being a choice.

## What this buys you

- A deploy that went wrong is undone by publishing the version before it, in one action.
- A superseded version stays until you delete it. Any version but the published one can be
  deleted from the Versions tab, for good; its number is never reused.
- The history says which agent wrote each version and when, and the activity ledger records
  which version a reader opened.
