Skip to content

v0.6.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 02:45
· 65 commits to main since this release

FRAM v0.6.0 makes the native, Bun, and Cloudflare paths independently reproducible release surfaces, and adds the application-level safety needed to build on them without changing FRAM’s neutral recursive-Triple kernel.

Highlights

  • Bun-first official client. @tompassarelli/framrpc 0.4.0 is a reproducible, zero-runtime-dependency package for Bun 1.3.13+. The root entry point provides TCP; @tompassarelli/framrpc/core provides the same thirteen-operation client over an injected exact-frame transport; generated TypeScript declarations ship with both.
  • Guarded application writes. The new @tompassarelli/framrpc/schema entry point provides single-value replacement, unique create/upsert, guarded single- and multi-subject updates, and combined create/update transactions. Every attempt reads one pinned snapshot, preflights the exact batch, and commits with expected-version OCC.
  • Deterministic ordered queries. Structured queries now support stable orderBy/:order-by and limit/:limit, with natural Term ordering, exact i64 behavior, a canonical full-row tie-breaker, and global top-K semantics. Bound-attribute text queries now build only the relevant text-index rows.
  • Native backup and restore. bin/fram-backup creates and verifies a checkpoint-bound backup of the authoritative FRAMLOG prefix, its SpaceId and served version, and the exact native artifact receipt. Restore is gated against fresh storage and the recorded artifact identity.
  • Cloudflare Durable Object release path. @tompassarelli/fram-cloudflare-do 0.2.0 shares the official portable FRAMRPC transport, ships typed adapter and seam declarations, and adds exact FRAMLOG export/restore with transactional publication and fail-closed recovery from interrupted replacement. The release also carries the matching deterministic Wasm envelope and a launch-blocking, wiki-shaped 128 MiB capacity gate.
  • Stronger mutation atomicity and native operation. Writes, batches, and successful lease mutations encode their predicted success response before append, so response depth or frame-size failure leaves state and version unchanged. Native storage/build-cache work reduces copying and preserves compiler/provenance closure across worktrees.
  • Reproducible supply chain. Native, Bun, Cloudflare adapter, and Wasm archives are normalized and paired with closed receipts binding SHA-256, source commit, annotated tag object, package/target identity, and—where applicable—the pinned Beagle compiler and third-party notices.

Upgrade and compatibility notes

  • The official checkout client moved from clients/node (Node 20+) to clients/bun (Bun 1.3.13+). Install the shipped @tompassarelli/framrpc 0.4.0 tarball, or use its runtime-neutral core entry point with an owned transport.
  • FRAMRPC remains the closed thirteen-operation v1 data surface, with checkpoint kept as a separately named native operator capability. Structured-query encoding expanded for ordering and limits, so upgrade v0.6 clients and servers together instead of assuming mixed-version query compatibility.
  • Schema constraints remain application-layer guarantees. Direct FRAMRPC writes can bypass uniqueness, cardinality, and reference guards.
  • Mutation batches are capped at 247 actions and may now refuse before commit when the exact predicted receipt exceeds the wire budget. Nontrivial reads should continue to paginate; the unpaged response ceiling is 248 rows.
  • The Cloudflare adapter requires Bun 1.3.13 for its package toolchain, a Worker compatibility date of 2026-03-15 or newer, a named Durable Object, and a SpaceId no longer than 1,024 UTF-8 bytes. Keep the raw namespace and export/restore behind a separately authorized backend/admin boundary; expose only the exchange service binding to applications.
  • FRAM remains pre-1.0 and has no engine access control. Keep the native socket private and isolate by process, network, SpaceId, and FRAMLOG.

Release assets

Each archive has a sibling receipt; verify the archive against the archive-sha256 recorded there.

  1. tompassarelli-framrpc-0.4.0.tgz — Bun FRAMRPC client, portable core, schema client, declarations, backup module, and licenses.
  2. tompassarelli-framrpc-0.4.0.receipt.txtfram-bun-release-receipt/v2 provenance and archive digest.
  3. tompassarelli-fram-cloudflare-do-0.2.0.tgz — typed Durable Object adapter and seam package.
  4. tompassarelli-fram-cloudflare-do-0.2.0.receipt.txtfram-cloudflare-do-release-receipt/v1 provenance and archive digest.
  5. fram-v0.6.0-wasm32-wasm-embed.tar.gz — deterministic Wasm engine, seam ledger, native provenance, licenses, and third-party notices.
  6. fram-v0.6.0-wasm32-wasm-embed.receipt.txtfram-cloudflare-wasm-release-receipt/v2 Wasm, seam, toolchain, provenance, and archive digests.
  7. fram-v0.6.0-x86_64-linux-musl.tar.gz — static native server executable and licenses.
  8. fram-v0.6.0-x86_64-linux-musl.receipt.txtfram-native-release-receipt/v2 executable/provenance and archive digests.

Full Changelog: v0.5.3...v0.6.0