# Release identity

A release has to be one exact thing before anyone can approve it. Vraelis Contour names it by digest.

## What a release names

In the experiment, every release carries six identity fields, and the evidence app compares all six.

| Field | What it identifies | Status |
| --- | --- | --- |
| `releaseId` | A readable name for the release, such as `cpu-2`. | In the experiment |
| `generation` | The release's place in sequence. `cpu-2` is generation 2. | In the experiment |
| `modelSha256` | The SHA-256 digest of the model artifact. | In the experiment |
| `configurationSha256` | The SHA-256 digest of the configuration. | In the experiment |
| `releaseSha256` | The SHA-256 digest that identifies the release record. | In the experiment |
| `receiptSha256` | The SHA-256 digest of the receipt recorded for the release. | In the experiment |
| Preprocessing | The preprocessing the model expects. | Proposed. Not recorded in this trace. |

![Release identity for cpu-2: model, configuration, release and receipt digests; preprocessing not recorded.](https://vraelis.com/v8/contour/crop-release-identity.webp)

*Read-only evidence app, inside the controlled ONNX reference experiment.*

## The release unit

Define the complete unit the recipient accepts. It may include the model, preprocessing, configuration, calibration and runtime dependencies, or form part of an application, container or firmware release. Checking a model alone cannot show that the whole system is compatible.

The experiment's release unit is small: one synthetic ONNX model and its configuration. A real release unit is larger, and defining it is part of the work Vraelis Contour is meant to support.

## What a digest establishes

- A digest identifies bytes. Two releases with the same model digest carry the same model bytes.
- A signature authenticates an endorsement of particular bytes. It does not establish how a model behaves or that it has no backdoor.
- A matching digest at the runtime means the runtime reports the same bytes. In the experiment that report is a worker self-report, not attestation.

## In the recorded trace

Each observation stores the approved identity under `desired`. This is observation 2 from the captured run, unchanged.

observation 02, approved identity:

```json
"desired": {
  "generation": 2,
  "releaseSha256": "375de916f3f9128dd8284a9dae474c1fe5edcf253c8a7ab69a1c5f720f31ea12",
  "releaseId": "cpu-2",
  "modelSha256": "444602040ca9aaa4b1a990799fbe6b697763d1a08144ee1f9711eb12adc49d2d",
  "configurationSha256": "6289dfd4c088e75fa4725c3269d9ba6316e0d9e11d863c17af0b2955315bd382",
  "receiptSha256": "d621d4c70a127586002f1261b79ff6cf1e48f258cf819b184f0ff8a68a819e33"
}
```

> **Not built yet.** Preprocessing identity. The trace records the model and configuration digests, and the evidence app shows preprocessing as not recorded.

---

Vraelis documentation, Products. https://docs.vraelis.com/release-identity
