Releases
Put a release label on your traces, then read how each release differs from the one before it.
A release is a label on your traces, for example 2.4.0 or the short hash of a commit. Risicare does not create releases. It reads the label from your spans and groups the traces by it.
The Releases page of the dashboard lists your releases. It shows how the behaviour of each release differs from the release before it. It also shows the runs from your code that name the release.
Releases are a dashboard feature
You open the Releases page as a signed-in person. The routes behind the trend, the table, the release page and the behaviour numbers are not in the list of REST routes that an API key can reach in this release. The MCP server lists releases and behaviour detections with any API key. Runs are different: your code creates them with an API key. See Evaluations and the REST API reference.
Give your traces a release
You have two ways. Both need Python 0.8.0 or npm 0.11.0, or later. See the Changelog.
| Way | Python | npm | Span attribute |
|---|---|---|---|
| One trace | risicare.set_release("2.4.0") | setRelease('2.4.0') | risicare.release |
| Every span | risicare.init(service_version="2.4.0") or RISICARE_SERVICE_VERSION | init({ serviceVersion: '2.4.0' }) or RISICARE_SERVICE_VERSION | service.version |
import risicare
risicare.init(service_version="2.4.0") # your other init arguments stay as they areimport { init } from 'risicare';
init({ serviceVersion: '2.4.0' });set_releasewrites the attribute on the current span. It also writes it on each other span of the same trace that ends after the call, unless that span has the attribute already. A span of another trace never gets it.- Call
set_releaseinside a span. Outside a span it sets nothing, returnsFalse(npm:false) and writes one warning. It takes a non-empty string or a whole number. - Risicare reads the first value that is not empty, in this order:
risicare.release.service.version: first the OTLP resource attribute, then the span attribute.- The deployment id of a fix. Fix deployment is held for the beta.
- The first 12 characters of a commit sha in
vcs.ref.head.revisionorvcs.repository.ref.revision.
- The release of a trace is the release of its earliest span that has one. A trace whose root span has release A and whose child spans have release B is a trace of A only. If you use both ways with different values, the earliest span decides.
- A trace with no release belongs to no release. The Releases page counts these traces in a note.
- A run from your code that passes
release=toevals.runputs the label on its trial traces. Risicare does not count these traces in release numbers. A release that is only under test shows its runs and no traces. See Evaluations.
For the full signatures, see the Python SDK and the JavaScript SDK.
The Releases page
The Releases item in the side navigation opens the page. Two tabs sit under the title: Releases and Runs. The Runs tab lists the runs from your code. It has no range control. See Evaluations.
The Releases tab has two views, Trend and Table. Trend opens first.
The range control
The range control has four choices: Last hour, Last 24 hours (the default), Last 7 days and Last 30 days. It sets the window of the Table and of the page of one release.
It does not set the window of the Trend. The trend measures each release over its own last 7 days of traces, and a note under the first sentence says so. Only the chart Live score (all traffic) follows the range.
Trend
The trend puts the newest releases side by side, oldest first, with one column for each release.
| Control | Choices |
|---|---|
| Releases | Last 5, Last 10 (the default) or Last 20 |
| Pass rate from | A dataset that has a completed dev run. The entries read Runs on and the dataset name |
| Choose a live score | Adds a chart of the pass rate of one score (a number or a true or false score) over all traffic in the range. It has no band. A number score has a pass rate only when you set Pass at |
The charts:
- Pass rate is the newest completed dev run of each release on the chosen dataset. The mark follows the verdict of that run against the nearest earlier release that has a run.
- Cost per run and Time per run are the mean for each trace over the last 7 days of the release. Each is set against a band made from the release before. A release with a cost of 0 shows a dash and the reason Cost 0 or unpriced. A release with more than 10,000 traces in those 7 days is measured over its newest 10,000 traces. A note on the two charts says how many days that covers, for example "Numbers from the last 2.6 days of 7 (2.4.0)".
- Live score (all traffic) shows only when you choose a live score.
A release with no value shows a dash and its reason, never 0. Under the charts, the row Behaviour shows a chip for each release, and the row Detections shows a count that links to the release page.
The first sentence sums up the releases. For example: "Over the last 10 releases the pass rate went from 72 % to 64 %, and 2 releases changed: 2.4.0 and 2.3.1." A release changed when it has one of these:
- a verdict Regressed or Improved on its run,
- a cost or time per run outside its band,
- a behaviour outside its band,
- a stored detection.
The list under the charts names each changed release, newest first, with the reasons. Show the numbers as a table opens every number as text. A trend needs two releases. With one release, the page says so and names it.
The trend checks the behaviour of the five newest releases only. An older release in the chart shows the chip Open to check, and the first sentence counts it apart: "5 of the last 10 releases stayed inside their bands. 5 releases are open to check." Such a release can show as changed by its verdict, by its cost or time per run, or by its stored detections, but never by a behaviour outside its band. Open its page to see its bands.
The trend lists the newest releases that have traffic. When the project has more, a note says so, with the link Open the table to see every release.
Table
The Table view has one row for each release in the range, up to 50 releases (the 50 with the most cost in the range). A note under the table names the rest: "Other (3 groups) are not listed. Narrow the range to see them."
| Column | What it shows |
|---|---|
| Release | The label. A click opens the release page. A release with runs and no traces reads No traces in this range |
| First seen, Last seen | The start of the first and of the last bucket with a trace in the range |
| Traces, With errors, Cost | Counts and cost in the range |
| Behaviour | A chip: Inside bands, 3 outside, Cost or time outside, No baseline, Below minimum, Open to check or No settled traces |
| Detections | The stored detections of the release |
| Runs, Newest run | The runs from your code that started in the range, and the newest one |
Choose a score adds the mean, the pass rate and the count of one score for each release.
Notes under the table: traces with no release are not listed, and traces of an experiment run are not counted in release numbers. The list checks only the five newest releases in full. An older release reads Open to check: open its page to see its bands. If the behaviour read fails, the two columns show a dash and a link to retry.
Where else a release shows
- Traces: the column Release is off by default. Choose it in the column chooser. A click on a value adds
release:and the value to the filter. The header of a trace page shows a chip Release that opens the trace list for that release. See Filtering and Search. - Sessions: the column Release is off by default. It shows the release that most spans of the session carry, so a session that spans two releases shows one of them. The filter key
releasekeeps a session that has a trace of that release, even when the column shows another one. See Sessions. - Cost: the Cost by card can group by Release. See Cost Tracking.
- Home: the Behaviour card names the newest release. See Behaviour and detections.