# Changelog

> What changed in each version of OCP.

0.3 is a strict superset of 0.2: every field 0.3 adds is optional, so a valid 0.2 document stays valid when its `ocp` value is changed to `0.3`, unless it uses a name that 0.3 defines as an unknown field of its own (for example a string in `run.task`, which 0.3 defines as an object). 0.2 is not a superset of 0.1: 0.2 requires `tier` on every edge, so 0.1 documents need `loopmath ocp migrate`, which writes the 0.3 form and fills what it can infer; see [Versioning](https://orchestrationcontextprotocol.io/specification/0.3/versioning#migration).

## 0.3 (2026-09-23)

Adds the whole observation a learner needs to compare runs. Every new field is optional.

- **Run:** `task` (what the run attempted, with features and a group chain), `configuration` (what ran: a workflow shape and a setting per piece, with a [canonical id](https://orchestrationcontextprotocol.io/specification/0.3/configuration#configuration-id)), `provenance` (how the configuration was chosen), `acceptance_rule` and `signals` (verdicts, scores and late events), `slate` and `preferences` (runs compared on one task), `rescue` (the fallback used when a run ended without acceptance) and `receipt` (predicted against actual, written by loopmath).
- **Node:** `vertex` (the workflow piece it executes) and `gate`.
- **Attempt:** `vertex`, `round` (repair round, from 1), `setting` (only when it differs from the configuration) and `cwd`.
- **Cost:** `tariff`, the dated price table used to compute `usd`.
- **Artifact:** `vertex`, `version`, `supersedes` and `transfer_tokens`.
- **Vocabularies:** event types `signal_observed`, `receipt_written` and `run_finished`; artifact kinds `commit`, `merge`, `issue`, `repo`, `diff`, `verdict` and `test_record`; producer capabilities `task`, `configuration`, `signals`, `slate` and `receipt`.
- **Rules:** [E190](https://orchestrationcontextprotocol.io/specification/0.3/conformance#e190) to [E195](https://orchestrationcontextprotocol.io/specification/0.3/conformance#e195), [W196](https://orchestrationcontextprotocol.io/specification/0.3/conformance#w196) and [W182](https://orchestrationcontextprotocol.io/specification/0.3/conformance#w182), each with a pass and a fail file.
- **Namespace:** loopmath's extension namespace becomes `dev.loopmath.`. The earlier `dev.dagr.` stays readable, with a warning, through 0.4.

## 0.2 (2026-09-01)

Records how work flowed between agents and how each fact is known.

- **Artifacts:** files one attempt wrote and others read, with `artifact` edges from the producing attempt to each consumer.
- **Edges:** the `launch` kind (one harness starting another through its command line, distinct from an in-harness `spawn`), and a required evidence `tier` on every edge.
- **Attempts:** `origin`, `role` and `phase` records, each with an evidence tier.
- **Cost:** the 5-minute and 1-hour cache-creation buckets.
- **Producer:** `capabilities`, so a consumer can tell an element the producer does not support from one that is absent.

## 0.1 (2026-08-30)

The first version: one JSON document per run with nodes and typed edges (`dep`, `fan_in`, `spawn`), a flat list of attempts with model and effort labels and a cause, per-attempt token cost split into uncached input, cached input and output with an optional `basis`, outcomes with evidence tiers, events, producer identity and a declared privacy profile.
