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-idempotencyidentity while preserving its documented API and behavior. - Refresh local
v0.0.0owned-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/idempotencypackage path. - Refresh the ecosystem compatibility dependency graph for the patched gRPC
release selected by telemetry. - Pinned unpublished owned
clockandmigrationsdependencies 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/slogandtelemetry/OpenTelemetry observers for bounded
transition logs and metrics. outboxtransaction coordination that inserts an envelope and completes
idempotency through the same caller-owned PostgreSQL transaction.- Direct
migrationsschema binding and compatibility coverage for the
webhookdurable replay-store adapter. - A pinned compatibility module covering the published
log,
migrations,outbox,queue,telemetry, andwebhook
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
- Source commit:
475486c03befcede0ee1a43fd44915ea7675570a - Exact-head CI: https://github.com/faustbrian/go-idempotency/actions/runs/32918210171
- Release dry-run: urn:sha256:eb73c9605221adfaf90a69c649790c82ea2d1ce3d4848614e6d89e6f2b99a991
- Assets include a CycloneDX SBOM, SLSA v1 in-toto provenance, and SSH-signed checksums.
Verify the checksum attestation with:
ssh-keygen -Y verify -f ALLOWED_SIGNERS -I brian@cline.sh -n golib-release -s SHA256SUMS.sig < SHA256SUMS