- Add Transport class for unified communication layer - Implement new communicator patterns - Add VERSIONING.md for version management - Add crosstest files for Dart/Go integration testing - Update protocol documentation - Add new skills and templates for AI-assisted development - Various bug fixes and improvements to Dart implementation
1.8 KiB
1.8 KiB
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
HeartBeatregistration is owned by the framework. PacketBase.typeName,nonce,data, andresponseNoncesemantics matchPROTOCOL.md.- Same
typeNamecannot be registered for both normal listener and request listener on one connection.
Transport
Transportabstraction exposes only packet write and close operations.Communicatordoes not know whether the connection is TCP, TLS+TCP, WS, or WSS.- TCP framing writes a 4-byte big-endian length followed by one
PacketBaseprotobuf 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
PacketBasepayload. - 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.