6f3be2d4fa
The plan calls for relay switch state to remember when peers were last seen. Wrap room peers in a small entry that keeps PeerInfo alongside a monotonic Instant, and expose the timestamp through room snapshots for relay diagnostics. Joining initializes last_seen. Valid Ethernet frames with the peer's authorized source refresh the timestamp before safety filters or rate limits run, so filtered but well-formed traffic still proves the peer is active. Malformed frames and forged client source MACs do not refresh it. Room leave now removes the associated timestamp with the peer entry. That keeps membership, MAC indexes, rate-limit buckets, and diagnostics state aligned. Test Plan: - cargo fmt --check - cargo test -p lanparty-relay last_seen -- --nocapture - cargo test -p lanparty-relay - cargo clippy -p lanparty-relay --all-targets -- -D warnings - cargo test --workspace - cargo clippy --workspace --all-targets -- -D warnings - git diff --check Refs: PLAN.md