Changelog
The format follows Keep a Changelog, and this project adheres to Semantic Versioning.
Unreleased
0.1.2 - 2026-09-11
Fixed
- Reject heartbeat files inherited from a previous container incarnation. A
Kubernetes
emptyDirsurvives container restarts, so a fresh mark left by a formerly healthy worker could make the next container passstartupProbebefore its consumers had subscribed. Cache files elsewhere in the sameemptyDirremain untouched and available to warm the next application boot. This protection assumes the default container-private PID namespace; pods usingshareProcessNamespaceorhostPIDretain the 0.1.1 freshness-only behavior (seedocs/LIMITATIONS.md). The marks directory now contains<dir>/generation, and eachworker-<slot>mark carries the same value; tooling that enumerates the directory should allow for this new metadata file.
0.1.1 - 2026-09-09
Added
- Add a repository-hosted social-preview asset for the project documentation.
Changed
- Rework the README into a shorter entry point while retaining the operational
detail in the focused guides under
docs/. - Reject initializer values where
tick >= max_age, and requirestartup_grace_ticksto be a positive integer. Initializers that previously supplied either invalid value now stop application boot withArgumentError. - Reject bundles that activate both
kicksandsneakerswithLoadErrorinstead of letting their sharedlib/sneakers.rbresolve silently by load-path order. Applications that still bundle both worker gems must remove one before upgrading. - Replace the contributor-only
AMQP_WORKER_GEMandAMQP_WORKER_GEM_VERSIONtest selection with Appraisal-generated dependency sets, including current and supported-floor targets for both worker gems.
Fixed
- Recover environment values where
tick >= max_agewith a warning and a safe interval, preventing a healthy heartbeat from becoming stale between normal monitor ticks. - Keep worker startup, heartbeat publication, and the monitor loop alive when a custom logger raises while handling an INFO or ERROR event.
- Correct the runtime-scaling documentation: live changes to
workersare not supported in either direction. During scale-up, old and new forks otherwise race to publish different expected counts; during scale-down, retired slots remain expected. - Strengthen the release gate with floor-version coverage, style checks, tag ancestry validation, and a packaged-executable smoke test.
- Include
.yardoptsin the gem so RubyDoc builds the intended README and public guide set from the packaged release.
0.1.0 - 2026-09-08
Added
-
First public release. A liveness probe for Kicks and Sneakers workers: the worker publishes a liveness mark to tmpfs, checking its consumers against the Bunny objects in the process's memory, while the probe reads nothing but the mtime — no Rails and no call to the broker.
What it does and why it is built this way is in docs/; start with
SETUP.md, and readLIMITATIONS.mdbefore relying on it.