From 49c4a34da7227011b3d97d71fa4836820c80d7d8 Mon Sep 17 00:00:00 2001 From: zzstoatzz Date: Mon, 17 Aug 2026 02:39:32 +0000 Subject: [PATCH] release: recut v0.1.0 with record parity folded in zero consumers existed; the first release should simply be correct. Co-Authored-By: Claude Fable 5 --- CHANGELOG.md | 32 ++++++++++---------------------- build.zig.zon | 2 +- 2 file(s) changed, 11 insertion(s)(+), 23 deletion(s)(-) diff --git a/CHANGELOG.md b/CHANGELOG.md --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,25 +1,5 @@ # changelog -## 0.2.0 - -closes the recorded record-format divergence from the upstream Go client — -which turned out to rest on a false premise (zat.cbor has always had a -canonical DAG-CBOR encoder; only the JSON->CBOR conversion was missing, -added as zat 0.4.2's `cbor.fromJson`). - -- **`Event.commit.record_cbor`** (upstream `Event.RecordCBOR` parity): - the record's canonical DAG-CBOR. live records are canonicalized from - the wire JSON exactly like upstream `decodeLiveRecord` (whole numbers - to integers, `$bytes`/`$link` sentinels, finite f64 floats); archive - records alias the stored payload verbatim (block-buffer lifetime, the - upstream aliasing contract). empty on deletes. -- **`Event.commit.record`** is now derived from the canonical bytes, not - the wire JSON — same normalization upstream applies. -- new decode error `MalformedRecord` for create/update records that - cannot canonicalize; classified like other malformed data frames (one - bad frame never drops the tail). -- deps: zat v0.4.2. - ## 0.1.0 first tagged release of the zig jetstream service SDK — the service half @@ -34,6 +14,14 @@ frames, `kinds`/`collections`/`dids`, dict-zstd negotiation with rotation recovery, typed pre-upgrade errors matched by xrpc error name, reconnect backoff resuming at the highest delivered seq. +- **records match upstream `Event` exactly**: `commit.record_cbor` is the + canonical DAG-CBOR (live records canonicalized from the wire JSON like + upstream `decodeLiveRecord` — whole numbers to integers, `$bytes`/ + `$link` sentinels, finite f64 floats via zat 0.4.2's `cbor.fromJson`; + archive records alias the stored payload verbatim, block-buffer + lifetime). `commit.record` is the generic form derived from the + canonical bytes. `MalformedRecord` classifies records that cannot + canonicalize, kept non-fatal like other malformed data frames. - **multi-host failover** (extension beyond the upstream Go client; see docs/failover.md): `fallback_hosts` rotates on error threshold or opt-in event-stall detection (`failover_stall_ns`, catches @@ -46,6 +34,6 @@ bounds. - loopback e2e suite: fake v2 instances (real wire: JSON endpoints, raw-block zstd frames, websocket upgrade) drive the real client through - failover, stall rotation, and clean stop. + failover, stall rotation, and clean stop; live failover smoke example. - pinned upstream: bluesky-social/jetstream 289b032 (v0.2.0); deps: - zat v0.4.1, websocket.zig v0.1.12. + zat v0.4.2, websocket.zig v0.1.12. diff --git a/build.zig.zon b/build.zig.zon --- a/build.zig.zon +++ b/build.zig.zon @@ -1,6 +1,6 @@ .{ .name = .jetstream, - .version = "0.2.0", + .version = "0.1.0", .minimum_zig_version = "0.16.0-dev.3070+b22eb176b", .fingerprint = 0xee435acce6d720e8, .dependencies = .{ -- tangled.sh