FaultInjection

sealed interface FaultInjection

Whether this harness can break and heal the links under the rooms it builds — and, when it cannot, where that is written down.

Two arms rather than a nullable FaultyLoom?, because the two carry different claims and only one of them is a limitation anybody has to justify. null said "no fault injection" in a value that costs nothing to write and that no reader has to defend; the second arm below cannot be constructed without naming an issue. That is the difference between a gap that is declared and a gap that is merely taken — and the whole of #2306, whose four silent returns had never once been exercised because the only subclass is the reference, which takes the first arm.

Modelled on BoltConformanceSuite's DurabilityFixture, with one deliberate difference: there, both arms are correct states a backend may legitimately be in, so both assert behaviour. Here the second arm is a shortfall, so what it asserts is its own accountability (injectorOrDeclaredGap fails a blank URL) and the obligation stays unproven. That is the honest shape — inventing an assertion for a state the harness cannot reach would be the vacuity this fixture exists to remove, one level down.

Inheritors

Types

Link copied to clipboard

The harness can partition and heal: loom wraps the fabric both factories weave over, so setFaultProfileOnAll breaks every link atomically and links reaches one side at a time — index 0 is the host's seam (created by the first host() call), index 1 the joiner's (created by join()).

Link copied to clipboard

The harness cannot reach the links under its rooms, so this suite's partition, resume and host-loss obligations are unproven on it.