partitionedAndRecoveredFireOnLivenessTransitions

Faults only the host's FaultySeam (0) with FaultProfile.DropAll in both directions. The joiner's seam (1) stays Healthy, mirroring us.tractat.kuilt.session.PartitionRoleTest's proven partition/recovery pattern.

With only the host's seam faulted, neither side can exchange ping/pong:

  • Host can't send pings (outbound dropped).

  • Joiner's pings to host are dropped at host's inbound. Both detectors fire MembershipEvent.Partitioned within the timeout.

After healing, both sides exchange ping/pong again. Both detectors fire MembershipEvent.Recovered before the reconnect window expires.

Tick pattern (mirrored from us.tractat.kuilt.session.PartitionRoleTest):

  1. 4 ticks → MembershipEvent.Partitioned fires.

  2. Heal host seam.

  3. 1 tick (allow ping/pong exchange to update lastSeenEpochMs).

  4. Start recovered collector to avoid missing the event on the hot flow.

  5. 5 ticks → MembershipEvent.Recovered fires.