diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index d7db4f6..fa99f5e 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -19,16 +19,16 @@ Phases below are sized to land as discrete commits. Each phase ends with - Round-trip tests for the encoder - Generator script committed at `docs/etf_vectors.erl` -## Phase 2 — EPMD client +## Phase 2 — EPMD client ✅ EPMD (Erlang Port Mapper Daemon) maps node names to TCP ports. -Tiny synchronous TCP client. -- Connect `epmd_host:4369` (configurable) -- `PORT_PLEASE2_REQ` (113) → port + dist version range -- Return `EpmdNodeInfo(port, lo_ver, hi_ver, node_type, proto)` -- Tests: live EPMD on localhost (skip if not running), unit tests - against a recorded byte stream +- Synchronous TCP client +- `PORT_PLEASE2_REQ` (122) → `EpmdInfo(name, port, node_type, protocol, hi_ver, lo_ver, extra)` +- Returns `None` cleanly on unregistered node, raises `EpmdError` on + socket failures +- Tests: recorded byte streams from real EPMD + live integration that + spawns its own `erl -sname` and tears it down ## Phase 3 — Distribution handshake