Keep topic and envelope construction private
Typed publications and subscription helpers own the wire layout. The
public API exposes parsed addresses but no low-level topic or envelope
construction, which the driver framework does not need. Timing constants
have their own file, and batch fields and operation names use the normal
layout and words without changing the wire contract.
Issue:
8fa2f25
Build typed MQTT publications
Typed builders and parsers cover every wire operation, including ordered
command batches and expiring hub diagnostics. Publications carry their
delivery rules and command response metadata, so callers need no topic
or envelope construction. Strict closed payloads reject unsupported
fields while event objects keep complete application data.
Issue:
8fa2f25
Define wire addresses and envelopes
The protocol package validates versioned topics, message metadata, and
subscription filters. Canonical IDs and fixed publication intervals let
callers share one wire contract without a broker dependency. Tests use
testify, with its dependencies pinned in the Nix package.
Issue:
8fa2f25