Release Intelligence
Technical reference. This page is for integrations, advanced configuration, or platform operations. For portal tasks, start with the user guide.
Release Intelligence gives you structured answers to two questions before you promote or roll back a release:
- How does this release differ from another? — binding changes, evaluation regressions, and execution metrics across three structured dimensions.
- What else does this asset touch? — which releases and workloads reference a given asset, and which of those are currently active.
Release cockpit
The cockpit is the single read that answers “is this release clear to promote?”. It aggregates the release’s bindings, evaluation results, evidence summary, rollout lane health, rollback recommendation, cost delta versus the superseded release, blast radius, and open recommendations into one response.
GET /v1/releases/{release_id}/cockpitEvery section carries an available flag and an unavailable_reason. Sections
you lack permission for (for example cost without cost.view) degrade to
available: false with unavailable_reason: "permission_denied" rather than
failing the whole read, and the cockpit itself requires release.view on the
release’s workspace, so it can never expose another tenant’s release.
Read it from the portal (the cockpit summary above the release detail tabs), the SDK, or the CLI:
cockpit = await client.releases.get_cockpit(release_id)
if not cockpit["cost"]["available"]:
print("cost section:", cockpit["cost"]["unavailable_reason"])orqestractl release cockpit <release_id>Promotion stays a governed lifecycle action: the cockpit informs the decision,
but a release still advances through review_ready → approved → active via
orqestractl release transition (or the portal), never directly from the
cockpit read.
Release evidence proof-pack export
After a release evidence bundle has been enriched, operators can export a bounded JSON proof pack for review or procurement workflows.
POST /v1/releases/{release_id}/evidence-bundle/exportThe export resolves the owning workspace from the release, requires
release.view there, and returns schema-versioned JSON with release metadata,
approval timeline, evaluation outcomes, execution cohort metrics, decision
provenance, supersession chain, bounded run manifests, and a manifest of section
counts. Run manifests give each exported experiment or evaluation run a compact
reproducibility record: run/outcome identifiers, release and workload target,
suite version, role attributions, config references, caveat flags, and linked
evidence refs. Raw judge payloads, prompt/response transcripts, and broad trace
exhaust are not exported. Timestamped section records and nested execution
samples outside --window-days are omitted before the per-section cap is
applied; the manifest reports top-level section omissions and nested
execution-sample omissions separately. Aggregate cohort metrics keep the source
window from the enriched evidence bundle. It uses the same DSAR-grade redaction
contract as subject-rights exports: token-like values and secret-keyed fields
are masked before they leave the API.
CLI and SDK surfaces expose the same export:
orqestractl release evidence-bundle-export <release_id> --window-days 30proof_pack = await client.releases.export_evidence_bundle(release_id, window_days=30)
print(proof_pack["manifest"]["totalRecords"])Release comparison
Compare any two releases to understand the impact of moving between them.
POST /v1/releases/compareRequest body:
{
"release_a_id": "r1a2b3c4-0000-0000-0000-000000000009",
"release_b_id": "r1a2b3c4-0000-0000-0000-000000000010"
}The response is structured across three dimensions.
Binding diff
Which asset-version bindings were added, removed, or changed between the two releases.
{
"binding_diff": [
{
"role": "prompt_template",
"asset_slug": "support-prompt",
"from_version": "v1",
"to_version": "v2",
"change_type": "changed"
},
{
"role": "guardrail",
"asset_slug": "pii-guardrail",
"from_version": null,
"to_version": "v1",
"change_type": "added"
}
]
}Evaluation diff
Pass-rate delta across evaluation gate results linked to each release. A negative delta is a regression; a positive value is an improvement.
{
"eval_diff": [
{
"suite_slug": "content-safety",
"pass_rate_a": 0.97,
"pass_rate_b": 0.94,
"delta": -0.03
},
{
"suite_slug": "latency-p95",
"pass_rate_a": 0.88,
"pass_rate_b": 0.93,
"delta": 0.05
}
]
}Execution metrics
Aggregate runtime metrics for each release.
{
"metrics_a": {
"execution_count": 14200,
"error_rate": 0.012,
"avg_latency_ms": 320,
"total_cost_usd": 142.5
},
"metrics_b": {
"execution_count": 0,
"error_rate": 0.0,
"avg_latency_ms": null,
"total_cost_usd": null
}
}metrics_b fields are null until the release accumulates execution history. Both metrics_a and metrics_b may be null if no execution data exists for that release.
Blast radius
Understand the downstream impact before updating or deprecating an asset.
GET /v1/assets/{id}/blast-radiusThe response lists every release that references the asset (through any binding role) and groups them by workload, with active releases sorted first.
{
"asset_id": "a1a2b3c4-0000-0000-0000-000000000001",
"asset_slug": "support-prompt",
"asset_kind": "prompt_template",
"total_affected_releases": 4,
"total_affected_workloads": 2,
"affected_releases": [
{
"release_id": "r1a2b3c4-0000-0000-0000-000000000010",
"workload_id": "w1a2b3c4-0000-0000-0000-000000000001",
"workload_slug": "customer-support-bot",
"environment": "production",
"state": "active",
"role": "prompt_template",
"version_label": "v2"
},
{
"release_id": "r1a2b3c4-0000-0000-0000-000000000009",
"workload_id": "w1a2b3c4-0000-0000-0000-000000000001",
"workload_slug": "customer-support-bot",
"environment": "production",
"state": "superseded",
"role": "prompt_template",
"version_label": "v1"
}
],
"affected_workloads": [
{
"workload_id": "w1a2b3c4-0000-0000-0000-000000000001",
"slug": "customer-support-bot",
"active_release_count": 1,
"total_release_count": 2
},
{
"workload_id": "w2a2b3c4-0000-0000-0000-000000000002",
"slug": "internal-knowledge-bot",
"active_release_count": 1,
"total_release_count": 2
}
]
}affected_releases is sorted: active releases appear first within each workload group, then by lifecycle state recency.
Portal
Compare tab on release detail
The Compare tab on the release detail view includes:
- A release selector to choose the counterpart for comparison (defaults to the predecessor release).
- A binding diff panel grouped by role, with added/removed/changed entries and version labels.
- An evaluation diff table sorted by magnitude of
delta, with color coding for regressions (red) and improvements (green). - An execution metrics panel with side-by-side values for each release.
Impact tab on asset detail
The Impact tab on the asset detail view shows the blast radius response as:
- A summary banner: “This asset is referenced by N releases across M workloads, including X active releases.”
- A grouped list of affected releases with lifecycle state badges, sorted active-first.
- A workload summary table with active release counts.
SDK
from orqestra_sdk import OrqestraClient
async with OrqestraClient() as client:
# Compare two releases
comparison = await client.releases.compare(
"r1a2b3c4-0000-0000-0000-000000000009",
"r1a2b3c4-0000-0000-0000-000000000010",
)
for entry in comparison["binding_diff"]:
print(entry["role"], entry["change_type"], entry["from_version"], "->", entry["to_version"])
for entry in comparison["eval_diff"]:
print(entry["suite_slug"], entry["delta"])
print(comparison["metrics_a"]["error_rate"])
print(comparison["metrics_b"]["error_rate"])
# Check blast radius before updating an asset
blast = await client.assets.blast_radius("a1a2b3c4-0000-0000-0000-000000000001")
print(f"Affected: {blast['total_affected_releases']} releases")
for workload in blast["affected_workloads"]:
print(workload["slug"], workload["active_release_count"], "active")
# Export the minimized release evidence proof pack.
proof_pack = await client.releases.export_evidence_bundle(
"r1a2b3c4-0000-0000-0000-000000000010",
window_days=30,
)
print(proof_pack["packType"], proof_pack["manifest"]["totalRecords"])
# Persist an operator proof pack and verify/fetch it later.
receipt = await client.releases.persist_evidence_bundle_proof_pack(
"r1a2b3c4-0000-0000-0000-000000000010",
window_days=30,
)
print(receipt["proofPackId"], receipt["objectSha256"], receipt["retentionMode"])
page = await client.releases.list_evidence_bundle_proof_packs(
"r1a2b3c4-0000-0000-0000-000000000010",
)
fetched = await client.releases.get_evidence_bundle_proof_pack(
"r1a2b3c4-0000-0000-0000-000000000010",
page["items"][0]["proofPackId"],
)
print(fetched["proofPack"]["packType"])CLI
Compare two releases
orqestractl release compare <release-a-id> <release-b-id>Output sections:
BINDING DIFF
changed: prompt_template (v1 -> v2)
added: guardrail (v1)
EVALUATION DIFF
content-safety 0.97 -> 0.94 -0.03 regression
latency-p95 0.88 -> 0.93 +0.05 improvement
EXECUTION METRICS
release_a: 14200 executions, 1.2% errors, avg 320ms, $142.50
release_b: no execution history yetAdd --json for structured output.
Asset blast radius
orqestractl asset blast-radius <asset-id>Output:
AFFECTED RELEASES: 4 across 2 workloads
customer-support-bot
r1a2b3c4 production active prompt_template v2
r1a2b3c4 production superseded prompt_template v1
internal-knowledge-bot
r2a2b3c4 staging active prompt_template v2
r3a2b3c4 development draft prompt_template v2Add --json for machine-readable output.
Persist and fetch a proof pack
orqestractl release evidence-bundle-persist <release-id> --window-days 30
orqestractl release evidence-bundle-list <release-id>
orqestractl release evidence-bundle-fetch <release-id> <proof-pack-id>Custody for reviewed documentation
Documentation snapshot receipts preserve a reviewed file supplied by an
external estate workflow. The receipt records an opaque systemRef, server
computed byte digest and size, the release’s asset, connection, and runtime
version-pin hashes, and the storage retention acknowledgement. It does not
fetch the reference, model the external system, or attest that a review or a
particular retention mode was completed. Each submission creates a new receipt;
later release or source changes do not rewrite its pins or bytes.
Save the exact version context reviewed with the documentation file. Persist submits those saved pins unchanged; if a release or source changed after review, the server rejects the request rather than replacing the reviewed context with newer pins. The saved context is also bound to the file’s SHA-256 so the CLI refuses to submit file bytes changed after that context was saved:
orqestractl release documentation-snapshot-context <release-id> \
--input-file reviewed.md \
--output-file reviewed-context.json
orqestractl release documentation-snapshot-persist <release-id> \
--system-ref 'estate:opaque-system-id' --input-file reviewed.md \
--review-context-file reviewed-context.json
orqestractl release documentation-snapshot-list <release-id>
orqestractl release documentation-snapshot-fetch <release-id> <snapshot-id> \\
--output-file restored.mdThe SDK exposes the same context, persist, list, and verified fetch operations. The fetch command writes the original bytes to the requested file after the server verifies the stored digest and size. Keep the returned receipt with the external review record; it is separate from execution evidence proof packs.
An approved AI Estate documentation revision can be stored through this
custody path: orqestractl estate docs snapshot <doc-id> --revision <n> fetches the
deterministic payload, creates the receipt above with your own release
permissions, and then links the receipt to the revision after Estate verifies
its digest, systemRef and version pins. Estate never writes to the release
record itself. The documentation screen shows when the release or a bound source
has changed since the latest linked snapshot.