# Implementation Checklist Target protocol version: `0.1` ## Protocol Core - [ ] Generated protobuf bindings from the canonical schema. - [ ] Parser map registers application messages by protocol-compatible `typeName`. - [ ] Built-in `HeartBeat` registration is owned by the framework. - [ ] `PacketBase.typeName`, `nonce`, `data`, and `responseNonce` semantics match `PROTOCOL.md`. - [ ] Same `typeName` cannot be registered for both normal listener and request listener on one connection. ## Transport - [ ] `Transport` abstraction exposes only packet write and close operations. - [ ] `Communicator` does not know whether the connection is TCP, TLS+TCP, WS, or WSS. - [ ] TCP framing writes a 4-byte big-endian length followed by one `PacketBase` protobuf payload. - [ ] TCP reader rejects zero-length packets as no-op and closes on invalid or oversized lengths. - [ ] WebSocket reader/writer uses one binary frame per `PacketBase` payload. - [ ] TLS+TCP and WSS are supported or explicitly marked unsupported with a reason. ## Lifecycle - [ ] Close is idempotent. - [ ] Pending requests complete with an error when the connection closes. - [ ] Writes are serialized so packet bytes cannot interleave. - [ ] Read, write, heartbeat, and close errors converge on the same disconnect path. ## Features - [ ] Fire-and-forget send. - [ ] Request-response send with timeout or cancellation. - [ ] Concurrent requests route by `responseNonce`. - [ ] Heartbeat sends after inactivity and closes after missing response. - [ ] Server broadcast, if the language package exposes server helpers. ## Verification - [ ] Formatter/linter passes. - [ ] Same-language TCP tests pass. - [ ] Same-language WS tests pass. - [ ] TLS/WSS tests pass where supported. - [ ] Cross-language tests pass in both server/client directions.