correlated_loss

Signature

faultcore.correlated_loss(*, p_good_to_bad: str, p_bad_to_good: str, loss_good: str, loss_bad: str)

Purpose

Models loss with GOOD/BAD state transitions (clustered failures instead of purely random drops).

Defaults and validation

  • All probability fields use % or ppm parser.

Example (stateful transport degradation)

import faultcore


@faultcore.correlated_loss(p_good_to_bad="1%", p_bad_to_good="25%", loss_good="0.1%", loss_bad="15%")
def unstable_stream() -> list[bool]:
    return [True, True, False, False, True]


def test_retry_behavior_under_clustered_loss() -> None:
    sequence = unstable_stream()
    assert sequence.count(False) >= 1