Releases & Versioning
Release and version attributes let you correlate trace data with specific deployments of your application. When you ship a new version, tag traces with the release identifier so you can compare quality metrics before and after a deployment.
Attributes
| Attribute | Purpose |
|---|---|
version | Semantic or arbitrary version string (e.g. 2.4.1, main-abc123) |
release | Release or deployment identifier (e.g. a Git SHA, PR number, or deploy ID) |
Both attributes can be set at the trace or observation level.
Setting Version and Release
Via environment variables (applies globally to all traces from this process):
XEROML_RELEASE="v2.4.1"Or in code using propagate_attributes():
from xeroml import observe, propagate_attributes
@observe()def handle_request(query: str) -> str: with propagate_attributes(version="2.4.1", release="sha-abc1234"): return run_pipeline(query)TypeScript:
import { propagateAttributes } from "@xeroml/tracing";
await propagateAttributes({ version: "2.4.1", release: "sha-abc1234" }, async () => { await runPipeline(query);});Regression Tracking
With consistent release tagging, you can filter the Traces view or Metrics API by version to compare:
- Average evaluation scores across releases
- Token usage and cost trends
- Error rates or latency regressions
This workflow integrates naturally with evaluation experiments: run your test dataset before and after a prompt or model change, tag each run with the relevant version, and compare scores in the dashboard.
Integration with CI/CD
In most CI/CD setups, set XEROML_RELEASE to the Git commit SHA or build ID at deploy time:
# GitHub Actions exampleXEROML_RELEASE=${{ github.sha }}This creates an automatic audit trail linking every trace to the exact code version that produced it.