---
title: "Versions and changelog"
description: "What a pipeline version is, how builds, changes and repairs create one, the version chip, restoring an earlier version, and the changelog."
url: "https://www.jsonify.com/docs/pipelines/versions"
---

[Documentation](https://www.jsonify.com/docs/) Filter pages

## Getting started

*   [What is Jsonify?](https://www.jsonify.com/docs/)
*   [How pipelines work](https://www.jsonify.com/docs/how-jsonify-works)
*   [Your first pipeline](https://www.jsonify.com/docs/getting-started/first-pipeline)
*   [Workspaces](https://www.jsonify.com/docs/getting-started/workspaces)
*   [Glossary](https://www.jsonify.com/docs/getting-started/glossary)

## Tutorials

*   [Track the Hacker News front page](https://www.jsonify.com/docs/tutorials/hacker-news)
*   [Monitor prices across retailers](https://www.jsonify.com/docs/tutorials/price-monitoring)
*   [Get a Slack alert when a price drops](https://www.jsonify.com/docs/tutorials/slack-price-alert)
*   [Use a dataset from your agent](https://www.jsonify.com/docs/tutorials/agent-query)

## Jason

*   [Chatting with Jason](https://www.jsonify.com/docs/jason/chat)
*   [Changing a pipeline](https://www.jsonify.com/docs/jason/changing-a-pipeline)
*   [Agents, workers and repairs](https://www.jsonify.com/docs/data-agents)

## Pipelines

*   [The pipeline page](https://www.jsonify.com/docs/pipelines/overview)
*   [Statement of work and steps](https://www.jsonify.com/docs/pipelines/statement-of-work)
*   [Inputs and parameters](https://www.jsonify.com/docs/pipelines/inputs)
*   [Settings reference](https://www.jsonify.com/docs/pipelines/settings)
*   [Versions and changelog](https://www.jsonify.com/docs/pipelines/versions)

## Runs

*   [Running a pipeline](https://www.jsonify.com/docs/runs/running)
*   [Scheduling](https://www.jsonify.com/docs/runs/scheduling)
*   [Run detail](https://www.jsonify.com/docs/runs/run-detail)
*   [Run lifecycle](https://www.jsonify.com/docs/runs/lifecycle)
*   [Verification and repair](https://www.jsonify.com/docs/runs/verification-and-repair)

## Datasets

*   [Dataset pages](https://www.jsonify.com/docs/datasets/overview)
*   [Versions](https://www.jsonify.com/docs/datasets/versions)
*   [Query and export](https://www.jsonify.com/docs/datasets/query-and-export)
*   [Row detail and provenance](https://www.jsonify.com/docs/datasets/provenance)
*   [Sharing](https://www.jsonify.com/docs/datasets/sharing)

## Analytics

*   [Dashboards](https://www.jsonify.com/docs/analytics/dashboards)
*   [Newsletters](https://www.jsonify.com/docs/analytics/newsletters)

## Alerts

*   [Alert rules](https://www.jsonify.com/docs/alerts/rules)
*   [Alert history and notifications](https://www.jsonify.com/docs/alerts/history)

## Integrations

*   [Integrations overview](https://www.jsonify.com/docs/integrations/overview)
*   [Slack and email](https://www.jsonify.com/docs/integrations/slack-and-email)
*   [Sheets, warehouses and webhooks](https://www.jsonify.com/docs/integrations/destinations)
*   [Ingest and serve API](https://www.jsonify.com/docs/integrations/api)
*   [Connect your agent (MCP)](https://www.jsonify.com/docs/integrations/mcp)
*   [Command line](https://www.jsonify.com/docs/integrations/cli)

## Workspace and account

*   [Workspace settings](https://www.jsonify.com/docs/workspace/settings)
*   [Team](https://www.jsonify.com/docs/workspace/team)
*   [Billing and usage](https://www.jsonify.com/docs/workspace/billing)
*   [Data retention](https://www.jsonify.com/docs/workspace/data-retention)

## Plans

*   [Radar or Benchmark? Enterprise](https://www.jsonify.com/docs/radar-vs-benchmark)
*   [Row pricing and managed service](https://www.jsonify.com/docs/pricing-model)

## More

*   [Connect your agent](https://www.jsonify.com/connect)
*   [Pricing](https://www.jsonify.com/pricing)
*   [Contact support](https://www.jsonify.com/contact)

[Docs](https://www.jsonify.com/docs/)/Pipelines

# Versions and changelog

What a pipeline version is, how builds, changes and repairs create one, the version chip, restoring an earlier version, and the changelog.

A **version** is an immutable revision of the pipeline: its steps, rules, outputs and statement of work as they were at one moment. Every build, every change you ask for and every repair creates a new one. Earlier versions are kept. Runs record which version they used, so any row in any dataset can be traced to the exact definition that produced it.

A change request or repair produces a candidate version that is built and tested, then independently reviewed. Only an approved candidate is activated; earlier versions are kept and later runs use the new one.

How a change becomes a version. A candidate is built and tested, then independently reviewed; only an approved candidate becomes the active version. Earlier versions stay.

## How versions are created

| Source badge | Created by | What happened |
| --- | --- | --- |
| build | The first build | Jason built the pipeline from your brief and the reviewer accepted it. v1 is always a build. |
| edit | A change request | You asked for a change with Edit pipeline, in a chat, or by committing comments on the statement of work; Jason made it and the reviewer accepted it. A restore is also an edit. |
| Auto-heal | Automatic repair | A scheduled or webhook-triggered run failed, Jason repaired the pipeline without being asked, and the reviewer accepted the repair. |
| Manual heal | A repair you asked for | You pressed Fix with Jason on a failed run (or asked in chat) and Jason recorded the change as a repair. |

Whatever the source, the path is the same: Jason produces a **candidate**, tests it with one or more **Test run**s (visible in the runs rail, never published), and submits it for independent review. Only a review that passes activates the candidate as the next version. A rejected candidate goes back to Jason; the current version stays active throughout. See [Agents, workers and repairs](https://www.jsonify.com/docs/data-agents).

> The version number only advances when something is activated. A change that Jason decides is not justified, or a repair that cannot be verified, leaves the pipeline where it was and is explained in the chat.

## The version chip

The hero shows the active version as a chip: `v2` with a history icon. Click it to open the version list.

![The version chip dropdown listing v2 marked current with an Auto-heal badge and v1 with a build badge](/assets/images/product/pipelines-version-chip.png)

The version chip. Click a row to view that version; the current one is marked.

*   **One row per version.** `v2`, its source badge, a **current** pill on the active version, and how long ago it was created.
*   **Click a row** to view that version. The statement of work and the step diagram switch together, and the chip turns amber to show you are not looking at the active version. Click the current row, or **Back to current**, to return.
*   **Viewing v1** banner with **Restore** and **Back to current** sits at the top of the list while you are on an older version.

A run’s **Summary** links its version (`v1`) straight to this view, so you can read the definition that produced that run even after the pipeline has moved on.

## Viewing an older version

While viewing an older version, the statement of work shows a sticky amber bar: **Viewing v1 · current is v2**, with **Restore v1** and **Back to current**. Everything below the bar describes v1: its objective, rules, outputs and steps. Runs, outputs, sources and settings are not affected; they always show the live pipeline.

> A rule that changed between versions keeps its id. Compare `R3` in v1 and v2 to see what a change actually did to the behaviour you rely on.

## Restoring a version

Restoring never rewinds history. It asks Jason to make the _current_ pipeline behave like the older version again, as a new version that goes through review like any other.

1.  **Open the version chip** and click the version you want back.
2.  **Press Restore** (in the chip, or **Restore v1** in the amber bar). The Jason sidebar opens and the request is sent: restore the behaviour and configuration of that version as a new current version, validate it with realistic inputs, and require review before activation. The toast reads **Jason is restoring version v1**.
3.  **Follow the chat.** Jason rebuilds the behaviour, runs its tests and submits for review. If Jason is already busy with this pipeline you are told **Jason is already working. Ask to restore this version when the current turn finishes.**
4.  **Check the new version.** When the review passes, the chip advances (for example to `v3`) with an **edit** badge and a changelog line naming the version it restored.

> Restoring v1 after a v2 that dropped a retailer produces v3, which has the retailer back. v2 stays in the list, so the decision to drop and the decision to restore are both on record.

## The changelog

**How it works** › **Changelog & Notes** › **Changelog** lists every version with the note Jason wrote when it was created.

![The Changelog tab showing v2 with an Auto-heal badge and its changelog line, and v1 with a build badge](/assets/images/product/pipelines-changelog.png)

The changelog. Every version has a line explaining why it exists.

Each row shows the version, its source badge, the **current** pill, how long ago it was created (hover for the exact time), and the changelog text. A version created before changelog notes were recorded reads **No changelog recorded.** Hover a row for **View**, which opens that version’s statement of work.

> **v2 · Auto-heal · 3 days ago** — Handle Amazon AggregateOffer price payloads while preserving the existing Offer extraction fallback.
> 
> **v1 · build · 5 days ago** — Built the price and promotion tracker from the brief: three retailers, daily at 06:00 Europe/London.

A changelog line is written by Jason and says what changed and why, in the same terms as the statement of work. It is not a summary of the conversation; if you want the reasoning, open the chat that produced the version from [Chat history](https://www.jsonify.com/docs/jason/chat).

A pipeline with no versions yet shows **No versions yet · Versions will appear here as the pipeline is built and edited.**

## What is not versioned

Some things belong to the pipeline rather than to a version, so changing them never creates one:

*   The **schedule**, **cache** and **Enable Auto Heal** settings.
*   **Notes**.
*   **Value inputs** and **parameter defaults** you set on the Inputs page.
*   The pipeline’s **name**, **description** and **icon**.

Runs record the parameter values and dataset revisions they used, so a run remains reproducible even though those values are not part of the version. See [Run detail](https://www.jsonify.com/docs/runs/run-detail).

## What’s next

[**Changing a pipeline**

Ask for a change and follow it to the version that lands.

](https://www.jsonify.com/docs/jason/changing-a-pipeline)[**Verification and repair**

Where Auto-heal versions come from.

](https://www.jsonify.com/docs/runs/verification-and-repair)[**Dataset versions**

Dataset revisions are versioned too, one per publish.

](https://www.jsonify.com/docs/datasets/versions)

[PreviousSettings reference](https://www.jsonify.com/docs/pipelines/settings) [NextRunning a pipeline](https://www.jsonify.com/docs/runs/running)

Something missing or wrong? [Tell us](https://www.jsonify.com/contact).[Build it →](https://factory.jsonify.com/setup)

## On this page
