Integration walkthrough
Take one warehouse autonomy candidate from simulator evidence to a release decision.
This walkthrough answers three separate questions about observation latency, visibility degradation, and sim-to-real braking behavior—then combines them with a noncompensatory release policy.
Where the SDK fits
Adapt evidence from the systems you already run.
Reliability Studio does not dictate the simulator, policy framework, or trial store. The integration seam is a narrow adapter that translates records you already produce into typed SDK evidence.
End-to-end path
One candidate, three studies, one bounded decision.
- 01Instrument
Record the state and metrics that operationally define a failure.
- 02Adapt
Convert existing trial records into paired perturbations, boundary anchors, and physical/simulator pairs.
- 03Predeclare
Fix thresholds, estimands, sample design, error allocation, and limitations before inspecting results.
- 04Run
Execute causal, boundary, and transport studies independently.
- 05Persist
Write every scientific report as canonical content-addressed JSON.
- 06Decide
Apply a noncompensatory policy in which any critical blocker stops readiness.
- 07Gate
Require readiness in CI while retaining the evidence directory when the build is blocked.
- 08Submit
Send the same immutable reports to Reliability Studio idempotently.
- 09Regress
Turn independently supported failures into replay capsules and regression packs.
Integration seam
Replace fixture builders with narrow domain adapters.
The executable studies expose build_observations as the seam. Preserve matching identity rather than inferring it: a pair must truly share its declared initial state and random context, and a physical anchor must correspond to its simulator anchor.
def build_observations(plan):
records = trial_store.load(study_id=plan.plan_id)
return tuple(
PairedPerturbationObservation(
plan_content_digest=plan.content_digest(),
contrast_id=record.intervention_id,
pair_id=record.pair_id,
matched_context_digest=record.initial_state_digest,
baseline_evidence_digest=record.baseline_digest,
perturbed_evidence_digest=record.perturbed_digest,
baseline_failed=record.baseline.minimum_margin_m < 0.0,
perturbed_failed=record.perturbed.minimum_margin_m < 0.0,
)
for record in records
)PairedPerturbationObservationInitial state, seed, random stream
BoundaryObservationDeclared coordinate, sample index
PairedAnchorObservationCommanded state, anchor ID
Run the workflow
Produce four reviewable artifacts.
The repository fixtures are deterministic, so the full workflow runs locally and in CI without a simulator. Replace their domain values and builders when adapting the workflow to a real system.
uv sync --package iso-obs
uv run python \
packages/python-sdk/examples/warehouse_release_workflow.py \
--output-dir evidenceThe included candidate is not release-ready. It demonstrates that a serious reliability workflow exposes unsupported claims and the experiments needed next instead of arranging a passing demo.
Read the result
The common condition cannot hide the rare critical one.
Latency harm
120 ms observation latency has a supported material harmful effect.
Boundary unresolved
The visibility map retains an unresolved band and a certified unreliable region.
Transfer limited
The rare low-friction stratum exceeds its sim-to-real discrepancy limit.
The next work is explicit: reduce latency sensitivity, collect fixed-design samples in the unresolved band, resolve or exclude the blackout region, and improve low-friction physics or narrow the supported envelope.
Operationalize
Use readiness in CI and retain the explanation.
With --require-ready, the example exits with status 2 whenever a critical requirement blocks release. Upload the evidence directory even on failure so the exact reports remain reviewable.
uv run python \
packages/python-sdk/examples/warehouse_release_workflow.py \
--output-dir "evidence-${GITHUB_SHA}" \
--require-readyiso evidence submit evidence/causal-perturbation-report.json \
--project-id YOUR_PROJECT_ID
iso evidence submit evidence/failure-boundary-report.json \
--project-id YOUR_PROJECT_ID
iso evidence submit evidence/transportability-report.json \
--project-id YOUR_PROJECT_IDiso evidence submit uses report content identity, so retrying the same submission does not create duplicate evidence.
Before adapting
Protect the assumptions that make the evidence meaningful.
- System, model, simulator, and environment versions are immutable.
- Failure definitions and thresholds are chosen before analysis.
- Matched comparisons truly share their declared context.
- Critical operating strata cannot compensate for one another.
- Real anchors cover the operating envelope being claimed.
- Learned labels retain prediction and calibration provenance.
- Discovery and confirmation datasets remain separate.
- Reports, replay artifacts, and CI outputs are retained by digest.
Relevant API
The classes connecting this workflow.
| Class or function | Import from | Use it to |
|---|---|---|
ReliabilityClient | iso_obs | Instrument the existing evaluation loop without replacing its simulator or policy. |
PairedPerturbationObservation | iso_obs.causal_perturbations | Adapt matched baseline and intervention outcomes. |
CausalPerturbationReport | iso_obs.causal_perturbations | Carry simultaneous effect intervals and campaign disposition. |
BoundaryObservation | iso_obs.failure_boundaries | Adapt a fixed trial at one predeclared operating anchor. |
FailureBoundaryMap | iso_obs.failure_boundaries | Partition the envelope into reliable, unresolved, and unreliable regions. |
PairedAnchorObservation | iso_obs.transportability | Bind matching simulator and physical evidence at one anchor. |
TransportValidationReport | iso_obs.transportability | Carry local and overall discrepancy bounds plus limiting strata. |