setLocalFabric

suspend fun setLocalFabric(availability: FabricAvailability, at: Instant)

Drive this fake's own self-reachability (Room.localFabric), emitting the matching edge.

Starts at FabricAvailability.Available so existing tests are unaffected — a fake is exactly the thing that can tell, so it does not sit at FabricAvailability.Unknown the way a real fabric with no path observer does.

Mirrors the real room's rule: an edge only on a transition into FabricAvailability.Available or FabricAvailability.Unavailable; FabricAvailability.Unknown is level-only, because "we stopped being able to tell" is neither a loss nor a recovery. Recovery through Unknown still restores — the last decided level is what a Restored is measured against, not the immediately preceding one.

No-op when availability already equals the current level.