Skip to content

github.com/faustbrian/go-queue/queueservice v1.0.0

Choose a tag to compare

@faustbrian faustbrian released this 26 Aug 06:12
· 31 commits to main since this release

1.0.0 - 2026-08-25

Documentation

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

Changed

  • Publish the module from its standalone github.com/faustbrian/go-queue/queueservice 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.
  • Publish the service lifecycle adapter as an independently versioned optional
    module so core queue consumers do not inherit service or correlation runtime
    dependencies.
  • Classify producer results as accepted, not accepted, or unknown so canceled
    and ambiguous publishes cannot be retried as if they were equivalent.
  • Share and cache owned-resource cleanup results so repeated and concurrent
    stop calls never close the resource more than once.
  • Close producer and typed-worker admission during service drain so readiness
    and new intake become unavailable before supervised work is canceled.
  • Close concrete *queue.Queue admission during service drain without
    releasing its backend before admitted handlers settle.
  • Classify contained concrete queue release panics as secret-safe shutdown
    callback panics with a deterministic terminal result.
  • Preserve callback error causes behind operation-specific diagnostics that do
    not disclose backend endpoints, credentials, or task payloads.
  • Report an unexpected successful worker-run exit as a supervised failure while
    treating exit after cancellation as normal shutdown.
  • Reject concurrent or repeated typed-worker run calls so exactly one backend
    intake loop owns deliveries and settlement.
  • Stabilize durable recovery verification by keeping replacement-worker test
    leases beyond the active handler and settlement window.

Added

  • Correlation-aware producer, delivery-handler, and worker lifecycle adapters
    for the owned queue and service modules.
  • Hostile-input fuzz and deterministic lifecycle coverage proving transport
    metadata never aliases caller-owned state and asynchronous failures cannot
    hang the verification suite.
  • Optional producer startup and readiness callbacks with rollback-safe owned
    cleanup and secret-safe panic recovery.
  • Typed supervised worker plans that bind startup, readiness, run, handler,
    drain, and shutdown callbacks to one stable service identity.
  • Service drain admission hooks that reject new producer and worker work before
    shutdown cancellation begins.
  • Module lifecycle, Kubernetes, scaling, duplicate-window, backend, adoption,
    migration, security, and FAQ documentation plus a package-scoped backend
    integration gate.
  • An explicit lifecycle transition model and adversarial drain campaign that
    races readiness, cancellation, duplicate signals, and shutdown ownership.
  • Lifecycle-aware HTTP liveness and readiness coverage during concurrent
    worker drain, cancellation, repeated signals, and backend failure.
  • Independent producer, handler, and typed-worker adapter benchmarks that keep
    broker and application work outside the measured lifecycle overhead.
  • Redis Streams and Valkey Streams composition coverage through the concrete
    queue worker adapter before the full durable-backend recovery suite runs.
  • Abrupt process-termination coverage before handler effects, after effects,
    and after settlement, including expired-lease recovery by competing workers.
  • Real Redis Streams and Valkey Streams adapter coverage for disconnect and
    reconnect, handler timeout, lease-expiry redelivery, dead-letter outage,
    shutdown, scale-up/down, and rolling replacement without lost settlement.
  • An isolated Kind end-to-end gate that force-deletes Redis- and Valkey-backed
    worker pods at each effect/settlement boundary and verifies competing pod
    recovery against durable backend state.

Release integrity

  • Source commit: e46589667d1adf44fbcc75287ca5327d7cf8b030
  • Exact-head CI: https://github.com/faustbrian/go-queue/actions/runs/32918210335
  • Release dry-run: urn:sha256:e567af04e378fa63c6f9c531b5e8bcb4c7044bafbd18b1dd2ca16192535dcd4c
  • 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