All notable changes to StreamHive are documented here. This project follows Semantic Versioning for the public Go API (p2p, storage, and stable CLI flags). Until v1.0.0, minor releases may include API adjustments; see entries below.
p2p:PeerSnapshotsexposes connected peer metadata for operational tooling.- Docs: protocol reference for SHV1 frames, replication messages, limits, and repair behavior.
- Docs: TLS/mTLS peer identity guidance and remaining application-level auth gaps.
- Ops:
/peersnow includes local address, connection timestamp, and connection age.
- Ops:
/peersJSON endpoint for inspecting active peer addresses and connection direction. - Demo:
make demo-statusprints each Compose node's peers, metrics, and durable keys. - Demo:
make demo-failureproves reconnect plus anti-entropy repair after a node restart. - CI: Docker Compose reconnect/failure demo verification.
- Metrics: duplicate blob counters for idempotent replication receives.
- CLI:
-sync-intervalfor periodic anti-entropy inventory after peer startup. - Demo: 3-node corruption repair demo for deleted durable blobs.
- CI: Docker Compose corruption repair demo verification.
- CLI:
blob.puthandling now skips exact duplicate key/data writes while still allowing opaque-key replacement. - CLI: SHA-256-shaped blob keys are verified against received data before storage.
storage: SHA-256 content key helpers for content-addressed blob IDs.storage:BlobKeyListerinterface plus deterministicListKeyssupport for memory and file stores.replication:blob.has,blob.get, andblob.missingmessage types for anti-entropy sync.- CLI: startup anti-entropy sync for
-replicatepeers usingblob.has/blob.missing/blob.put. - CLI:
-put-content-keyfor sending blobs underSHA-256(-put-data)content keys. - CLI:
-list-keysfor inspecting durable-store-dirkeys as hex. - Demo: 3-node Docker Compose demo with durable stores and node restart rehydration.
- Metrics: Prometheus text endpoint at
/metrics/prometheus. - CI: Docker Compose rehydration demo verification.
replication: typed blob replication protocol withblob.putencoding, decoding, validation limits, andBlobStoreapply helper.storage:FileStoredirectory-backedBlobStorewith hex-encoded keys and restart persistence.p2p:TCPPeer.WriteFrameconvenience method for framed peer writes.- CLI:
-replicate,-store-dir,-put-key,-put-data,-exit-after-put,-peers,-peer-reconnect,-peer-reconnect-min,-peer-reconnect-max, and-max-blob-bytesfor static replication demos and long-lived static-peer nodes. - Metrics: replication counters for stored/sent blobs, stored/sent bytes, and replication errors.
- Demo:
make demo-replicationstarts a receiver, sends one blob, waits for metrics, and prints the evidence.
- Semver
Versionconstant and this changelog. storage:BlobStoreinterface and in-memory implementation for content-keyed blobs.p2p: length-prefixed wire framing (SHV1magic), metrics,context.ContextonListenAndAccept/Dial, graceful accept-loop shutdown, peer removal on disconnect, optional max peers, dial / read idle deadlines, optional TLS, optional framedFrameHandler.- CLI:
-version,-max-peers,-dial-timeout,-read-idle-timeout, optional-health(live/ready/metrics), optional TLS flags. - Ops docs: deployment (Docker/K8s sketch), governance (branch protection checklist), SBOM artifact in CI, pinned GitHub Actions by commit SHA.
- Breaking:
Transport.ListenAndAcceptandDialnow takecontext.Contextas the first argument.
- Initial public foundation: TCP transport, tests, CI, documentation.