Skip to content

Releases: faustbrian/go-idempotency

github.com/faustbrian/go-idempotency v1.0.0

Choose a tag to compare

@faustbrian faustbrian released this 26 Aug 06:14

1.0.0 - 2026-08-25

Compatibility

  • Regenerate the exported API baseline with the repository's Go 1.26
    toolchain so JSON-backed contracts retain their intended stable identity.

Changed

  • Exclude intentional nested modules from root local-proxy archives so local,
    bootstrap, CI, and public module checksums describe the same source
    boundary.

  • Track the pinned documentation-tool lockfile so clean CI checkouts install
    the exact validated cspell dependency.

  • Reconcile standalone dependency checksums against deterministic current
    module archives so CI, local verification, and release consumers resolve
    identical content.

  • Harden standalone documentation validation with deterministic spelling and
    link checks, package-specific documentation gates, and repository-local
    contributor guidance.

Documentation

  • Replace obsolete standalone-repository links and workflow claims with
    monorepo-canonical targets and current release guidance.

  • Link the package README to the repository-wide Golib documentation portal.

Compatibility

  • Added a pinned module export baseline so incompatible public API changes
    fail the canonical repository gate.

Changed

  • Publish the module from its standalone github.com/faustbrian/go-idempotency identity while preserving its documented API and behavior.
  • Refresh local v0.0.0 owned-module checksums after dependency manifests and
    release notes were normalized; runtime behavior and public APIs are
    unchanged.
  • Update the webhook ecosystem contract and adoption guide to the canonical
    webhook/adapters/idempotency package path.
  • Refresh the ecosystem compatibility dependency graph for the patched gRPC
    release selected by telemetry.
  • Pinned unpublished owned clock and migrations dependencies to resolvable
    main-branch pseudo-versions so external consumers can install this module.
  • Refresh owned-module checksums against the final consolidated archives.
  • Kept the ecosystem compile-contract assertion explicit without redundantly
    spelling a generic function type that strict static analysis can infer.
  • Kept typed-wrapper and fault-injection tests compatible with the canonical
    strict static-analysis configuration without weakening their assertions.
  • Normalized standalone module metadata against the canonical owned dependency
    graph, including complete checksums for clean consumer resolution.

Added

  • Public PostgreSQL record-key digest derivation for business transactions that
    must lock and validate the same idempotency row before fenced side effects.
  • Durable semantic core with namespaced keys, canonical fingerprints, owner and
    fencing tokens, leases, heartbeats, attempts, terminal results, typed errors,
    and explicit acquisition outcomes.
  • Deterministic in-memory adapter and shared store conformance suite.
  • PostgreSQL adapter with advisory and row locking, server-clock leases,
    versioned JSONB records, bounded cleanup, transaction-bound completion, native
    fault tests, and PostgreSQL 16 and 17 integration coverage.
  • Valkey 9 adapter with native valkey-go, atomic scripts, opaque cluster-safe
    keys, server-clock leases, explicit TTLs, startup safety checks, unknown-result
    recovery tests, and standalone and three-primary cluster coverage.
  • Deterministic Valkey response-loss injection that targets the scripted write
    boundary after script warm-up, proving unknown-result recovery without
    accidentally dropping setup or discovery traffic.
  • Bounded JSON canonicalization and byte fingerprint helpers.
  • HTTP response replay, method-aware JSON-RPC result and error replay, queue and
    webhook delivery deduplication, and named command and import execution.
  • Bounded, cancellation-independent panic cleanup across HTTP, JSON-RPC, queue,
    command, and webhook handler integrations.
  • Fencing ownership propagation through handler contexts.
  • Bounded service observations and keyed HMAC correlation without raw logical
    key exposure or high-cardinality metric fields.
  • Typed log/slog and telemetry/OpenTelemetry observers for bounded
    transition logs and metrics.
  • outbox transaction coordination that inserts an envelope and completes
    idempotency through the same caller-owned PostgreSQL transaction.
  • Direct migrations schema binding and compatibility coverage for the
    webhook durable replay-store adapter.
  • A pinned compatibility module covering the published log,
    migrations, outbox, queue, telemetry, and webhook
    contracts.
  • Frozen PostgreSQL and Valkey version-1 record fixtures that lock retained
    reader and writer compatibility across rolling releases.
  • Race, fuzz smoke, vulnerability, exact coverage, benchmark, and backend matrix
    automation.
  • Exhaustive illegal-transition, stale-owner, duplicate-completion, crash-point,
    and fenced-resource proof suites shared by every backend.
  • PostgreSQL failure injection for deadlocks, serializable aborts, pool
    saturation, rollback, response loss, and cleanup contention.
  • Valkey 9 replica-promotion failure injection in local, CI, and release gates.
  • Bounds for fingerprint policy versions and owner tokens, plus configurable
    bounded memory-store retention with a safe default.
  • Hostile-input fuzz coverage for canonical JSON, duplicate object keys,
    Unicode forms, numeric forms, binary encodings, oversized input, and
    cross-version fingerprint identity.
  • Formal threat model, hardening findings, resource budgets, crash and
    transition evidence, recovery obligations, and benchmark baselines.
  • Five-minute adoption, concepts, operations, capacity, troubleshooting,
    migration, compatibility, security, contribution, and FAQ documentation.
  • Semantic-version tag verification and least-privilege GitHub release
    automation.

Known limitations

  • The public API follows stable v1 semantic-versioning compatibility.

Release integrity

Verify the checksum attestation with:

ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS