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):
4 ticks → MembershipEvent.Partitioned fires.
Heal host seam.
1 tick (allow ping/pong exchange to update lastSeenEpochMs).
Start recovered collector to avoid missing the event on the hot flow.
5 ticks → MembershipEvent.Recovered fires.