Add a ClusterRegistry that maps human-readable names to (ActorAddress, NodeId) pairs, replicated across the cluster via SWIM gossip piggyback. Uses last-writer-wins semantics with timestamp > generation > node_id tie-breaking, and tombstone-based unregistration with configurable GC. Key design: DistributedNode intercepts piggyback bytes on all outgoing/incoming SWIM messages, wrapping them in a PiggybackPayload that carries both membership updates and registry entries. SwimNode and DisseminationQueue remain untouched. - New: crates/distribution/src/registry.rs (ClusterRegistry, pack/unpack helpers) - Modified: node.rs (register_name/unregister_name/resolve_name API, piggyback interception, node death tombstoning) - Modified: snapshot.rs (RegistryEntryInfo in DistributionNodeSnapshot) - 12 behavioral tests in crates/distribution/tests/registry.rs - Remove CLAUDE/ from git tracking, add to .gitignore Authored by Claude, lovingly guided by Zachery Aaron Shores-Chmielewski |
||
|---|---|---|
| .. | ||
| kademlia | ||
| swim | ||
| cache.rs | ||
| codec.rs | ||
| crypto.rs | ||
| lib.rs | ||
| messages.rs | ||
| node.rs | ||
| registry.rs | ||
| snapshot.rs | ||
| transport.rs | ||
| types.rs | ||