# Local controlled-failure exercise

This exercise uses synthetic local evidence only. No production system, credential, customer data, live endpoint, cloud resource, or external target is required.

1. Run `python run_checks.py` to verify fixture structure.
2. Implement `analyze_experiment(case)` in `starter.py`.
3. Return these eight keys: `baseline_state`, `hypothesis_state`, `scope_state`, `guardrail_state`, `stop_state`, `observability_state`, `recovery_state`, `experiment_decision`.
4. Keep baseline, hypothesis, target/scope, guardrail, stop branch, observability, and recovery evidence separate.
5. Crossing a stop threshold requires a stop decision even if the synthetic process remains alive.
6. Missing required signals keeps the resilience claim open.
7. Recovery requires steady-state evidence; liveness alone is insufficient.
8. Rebuild the transfer case from graph-B evidence; do not copy graph-A thresholds or hypothesis.

The structural checker never reveals expected classifications.
