{
  "schema": "OPS011_SYNTHETIC_FAILURE_EXPERIMENT_FIXTURES_v1",
  "cases": [
    {
      "id": "baseline_supported",
      "baseline_present": true,
      "baseline_success": 99.6,
      "baseline_latency_ms": 85,
      "baseline_queue": 12,
      "hypothesis": "success>=98 and queue<40 under dependency-B delay",
      "hypothesis_falsifiable": true,
      "fault": "dependency_delay",
      "target": "dependency-B",
      "allowed_targets": [
        "dependency-B"
      ],
      "blast_radius": "local_graph_A",
      "scope_allowed": true,
      "guardrail_metric": "queue",
      "guardrail_threshold": 40,
      "observed_guardrail": 31,
      "stop_triggered": false,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "latency",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 99.5,
      "recovery_latency_ms": 88,
      "recovery_queue": 13,
      "recovery_within_baseline": true,
      "transfer": false
    },
    {
      "id": "stop_threshold_crossed",
      "baseline_present": true,
      "baseline_success": 99.5,
      "baseline_latency_ms": 90,
      "baseline_queue": 11,
      "hypothesis": "queue<45 under dependency-B delay",
      "hypothesis_falsifiable": true,
      "fault": "dependency_delay",
      "target": "dependency-B",
      "allowed_targets": [
        "dependency-B"
      ],
      "blast_radius": "local_graph_A",
      "scope_allowed": true,
      "guardrail_metric": "queue",
      "guardrail_threshold": 45,
      "observed_guardrail": 57,
      "stop_triggered": true,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "latency",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 98.7,
      "recovery_latency_ms": 112,
      "recovery_queue": 49,
      "recovery_within_baseline": false,
      "transfer": false
    },
    {
      "id": "liveness_false_recovery",
      "baseline_present": true,
      "baseline_success": 99.7,
      "baseline_latency_ms": 80,
      "baseline_queue": 10,
      "hypothesis": "latency<=120 under bounded delay",
      "hypothesis_falsifiable": true,
      "fault": "dependency_delay",
      "target": "dependency-B",
      "allowed_targets": [
        "dependency-B"
      ],
      "blast_radius": "local_graph_A",
      "scope_allowed": true,
      "guardrail_metric": "latency",
      "guardrail_threshold": 120,
      "observed_guardrail": 119,
      "stop_triggered": false,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "latency",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 99.0,
      "recovery_latency_ms": 155,
      "recovery_queue": 27,
      "recovery_within_baseline": false,
      "transfer": false
    },
    {
      "id": "missing_observability",
      "baseline_present": true,
      "baseline_success": 99.4,
      "baseline_latency_ms": 92,
      "baseline_queue": 14,
      "hypothesis": "success>=98 and queue<40 under bounded delay",
      "hypothesis_falsifiable": true,
      "fault": "dependency_delay",
      "target": "dependency-B",
      "allowed_targets": [
        "dependency-B"
      ],
      "blast_radius": "local_graph_A",
      "scope_allowed": true,
      "guardrail_metric": "queue",
      "guardrail_threshold": 40,
      "observed_guardrail": 29,
      "stop_triggered": false,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 99.3,
      "recovery_latency_ms": null,
      "recovery_queue": 15,
      "recovery_within_baseline": null,
      "transfer": false
    },
    {
      "id": "scope_target_violation",
      "baseline_present": true,
      "baseline_success": 99.6,
      "baseline_latency_ms": 86,
      "baseline_queue": 12,
      "hypothesis": "dependency-B delay is tolerated",
      "hypothesis_falsifiable": true,
      "fault": "dependency_delay",
      "target": "dependency-C",
      "allowed_targets": [
        "dependency-B"
      ],
      "blast_radius": "outside_declared_target",
      "scope_allowed": false,
      "guardrail_metric": "queue",
      "guardrail_threshold": 40,
      "observed_guardrail": 20,
      "stop_triggered": false,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "latency",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 99.6,
      "recovery_latency_ms": 87,
      "recovery_queue": 12,
      "recovery_within_baseline": true,
      "transfer": false
    },
    {
      "id": "baseline_missing",
      "baseline_present": false,
      "baseline_success": null,
      "baseline_latency_ms": null,
      "baseline_queue": null,
      "hypothesis": "service remains acceptable under delay",
      "hypothesis_falsifiable": false,
      "fault": "dependency_delay",
      "target": "dependency-B",
      "allowed_targets": [
        "dependency-B"
      ],
      "blast_radius": "local_graph_A",
      "scope_allowed": true,
      "guardrail_metric": "queue",
      "guardrail_threshold": 40,
      "observed_guardrail": 22,
      "stop_triggered": false,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "latency",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 99.0,
      "recovery_latency_ms": 100,
      "recovery_queue": 18,
      "recovery_within_baseline": null,
      "transfer": false
    },
    {
      "id": "rollback_recovered_after_abort",
      "baseline_present": true,
      "baseline_success": 99.8,
      "baseline_latency_ms": 78,
      "baseline_queue": 9,
      "hypothesis": "success>=99 under packet-loss fault",
      "hypothesis_falsifiable": true,
      "fault": "synthetic_packet_loss",
      "target": "dependency-B",
      "allowed_targets": [
        "dependency-B"
      ],
      "blast_radius": "local_graph_A",
      "scope_allowed": true,
      "guardrail_metric": "success",
      "guardrail_threshold": 99.0,
      "observed_guardrail": 96.2,
      "stop_triggered": true,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "latency",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 99.8,
      "recovery_latency_ms": 81,
      "recovery_queue": 10,
      "recovery_within_baseline": true,
      "transfer": false
    },
    {
      "id": "transfer_graph_B",
      "baseline_present": true,
      "baseline_success": 99.2,
      "baseline_latency_ms": 105,
      "baseline_queue": 7,
      "hypothesis": "cache-C latency<=180 while queue<25 under cache delay",
      "hypothesis_falsifiable": true,
      "fault": "cache_delay",
      "target": "cache-C",
      "allowed_targets": [
        "cache-C"
      ],
      "blast_radius": "local_graph_B",
      "scope_allowed": true,
      "guardrail_metric": "queue",
      "guardrail_threshold": 25,
      "observed_guardrail": 21,
      "stop_triggered": false,
      "required_signals": [
        "success",
        "latency",
        "queue"
      ],
      "observed_signals": [
        "success",
        "latency",
        "queue"
      ],
      "process_alive_after": true,
      "recovery_success": 99.3,
      "recovery_latency_ms": 108,
      "recovery_queue": 8,
      "recovery_within_baseline": true,
      "transfer": true
    }
  ]
}
