Skip to content

v0.4.0 — The write-verdict taxonomy

Choose a tag to compare

@github-actions github-actions released this 19 Jul 05:42
a33d52a

The adjudication release: rejected writes now carry a classification the client can act on. The node keys every mutation error to permanent or transient, names the four codes that settle a write for good, and states the health/connection and expiry contracts as the reference the client side builds against.

Features

  • Mutation-error taxonomy (#11): every write rejection is classified permanent — the store's final verdict, safe for the client to roll back and compensate — or transient, keyed by the error code. Unknown codes default to transient, so a new server code never falsely retires a pending write. A deterministic write-rejection harness proves verdict correlation to the originating write and re-derivation across reconnects, and GET /health is exercised in open, ticket, and peer modes.
  • The four permanent codes (#13): permission_denied, transaction_conflict, permissions_head_missing, and expired are registered permanent. expired is groundwork: the classification ships now so clients written today handle it correctly when server-enforced write expiry lands.

Contracts and documentation

  • The write-verdicts page states the four-code taxonomy and the health/connection contract as the node actually answers them (#11, #13)
  • The expiry contract is specified mechanism-neutral — what an expired write means, who may retire it, and why the client never does — and the design record now serves as the reference spec for the client-side work tracked in lofi#145, with the upstream ask drafted (#13)

Full Changelog: v0.3.0...v0.4.0