changelog
What shipped, versioned honestly.
Semver means something here: majors break you (with a migration guide and a deprecation window), minors add, patches fix. Breaking changes are announced at least 90 days before the old surface turns off.
-
v2.3.0
minorGuardrail dry-run mode & policy diffs
- New `dry-run` enforcement mode: policies evaluate and log verdicts without blocking, separately from `observe` (which skips enforcement telemetry).
- Policy diff view: compare two policy versions and see which historical runs each would have blocked.
- Console: would-have-blocked report is exportable as CSV.
-
v2.2.0
minorEval gates in CI
- `trellis eval --gate` exits non-zero when a candidate regresses beyond per-suite thresholds — wire it into any CI as a test step.
- Per-suite regression thresholds in `trellis.yaml` (absolute or relative).
- GitHub Actions and Buildkite examples in the docs.
-
v2.1.1
patchTrace ingestion fixes
- Fixed a backpressure condition where bursty fleets (>2k spans/s from one workspace) could delay trace availability by up to 90 s.
- Span deduplication for at-least-once SDK delivery — replayed checkpoints no longer double-count tokens in rollups.
-
v2.1.0
minorForensic retention tier
- New observability tier: 90-day retention with full request/response payloads and eval snapshots.
- Payload encryption at rest with customer-managed keys (CMK) on the forensic tier.
- Retention is configured per workspace; changes are audit-logged.
-
v2.0.0
majorRuns API v2
- BREAKING: `step` objects are now `span` objects across the API and SDKs, aligning our trace model with OpenTelemetry semantics.
- BREAKING: `run.cost` moves from cents (integer) to a decimal-string USD amount with per-span breakdown.
- v1 endpoints continue to work until 2026-11-01; the migration guide maps every renamed field.
-
v1.9.0
minorHuman-approval steps
- Runs can pause on an `approval` span — parked runs hold no compute and cost nothing while waiting.
- Approvals via console, API, or Slack; the approver's identity and timestamp land in the trace.
- Configurable timeout with fallback branch (auto-reject, escalate, or continue).
-
v1.8.0
minorCost attribution rollups
- Tag runs with arbitrary metadata (`tenant`, `feature`, `experiment`) and get cost/latency/outcome rollups per key.
- Monthly invoice line items can be split by one metadata key — finance teams asked, we shipped.
-
v1.7.1
patchPython SDK retry fix
- Fixed a retry storm where a 429 on checkpoint write could trigger immediate un-backed-off retries in `trellis-python` 1.7.0.
- SDKs now honor `Retry-After` on all control-plane endpoints.
-
v1.7.0
minorOpenTelemetry export
- Native OTel export: every Trellis span forwards to your collector with standard GenAI semantic-convention attributes.
- Prebuilt dashboards for Datadog and Grafana in the integrations gallery.
-
v1.6.0
minorCache-aware token accounting
- Cache reads are now metered separately from fresh input tokens in traces and invoices — multi-step agents typically see 60–90% of input tokens served from provider prompt caches.
- Cost projections in the console use your workspace's actual trailing cache-hit rate.
Older releases (v1.0.0 – v1.5.x) live in the console's release archive.
$ trellis estimate --honest
Ship against a platform that tells you what changed.
Subscribe to release notes from the console, or watch the eval gate catch what the release notes missed.