localFabric

This peer's own Room.localFabric at the instant this event was emitted.

Precedence. When this is FabricAvailability.Unavailable, this event is not evidence about peerId — our own end of the fabric was down, so their silence says nothing about them. Read it off the event rather than correlating two streams by timestamp (#1712).

That inference holds where we observed the silence — our own detection or our own link tear. It does not hold for a host-relayed pause: that report is host-authoritative and arrived over a link working well enough to deliver it, so an Unavailable tag there says only that our own end was down when we processed the report, not that the report is unfounded. Either way Room.roster's liveness stays authoritative.

FabricAvailability.Unknown means the fabric has no path observer, so precedence cannot be determined — treat it as "no information", not as "we were fine". It is the normal value on every fabric without a live OS path observer (see SeamCapabilities.reportsLiveCapability), so a consumer must handle it as a first-class third answer rather than a gap.

Best-effort on a bonded multi-transport room (#1778). Over a CompositeSeam the rolled-up availability is an eventually-consistent fold of what each transport last announced, so when every transport drops within one dispatch window this tag can capture a briefly-stale value. It converges immediately after — but an event is a snapshot, so the captured value does not. A single-transport room has no such fold and no such window. Room.localFabric and Room.roster are the authoritative surfaces: re-read Room.localFabric at handling time if a decision must be certain.