Pillar v0.4.0 — Production Hardening & Resilience
Pre-release
Pre-release
Pillar v0.4.0 — Production Hardening & Resilience
Iteration 4 closes the reliability gap. It transforms the system from a functioning MVP into a fault-tolerant mesh that degrades gracefully under fire. We've introduced explicit degraded modes, a self-healing background garbage collector for abandoned state, and local-first telemetry.
Telemetry & Diagnostics
- /pillar doctor command — New administrative subcommand exposing typed decision telemetry and anomaly-focused health checks. Built with a strictly local-first philosophy (zero-cost
AtomicLongcounters and ring buffers), it ensures diagnostic availability even when Redis is down.
Self-Healing & Resilience
- Orphan-inbox reaping — The proxy now runs a self-healing background service (
InboxReaper) that safely reaps abandoned inboxes and dead-letters from permanently dead nodes. It uses atomic Lua scripts (EXISTS+DEL) to prevent memory leaks over time. - Degraded modes — Introduced read-outcome-driven stale retention with bounded windows. Nodes now automatically fall back to their last-known-good state during transient Redis outages, explicitly documenting their degraded contracts rather than failing blindly.
Targeted Operations
- Targeted reloads — Added
/pillar reload <role>to allow signal-onlyRELOAD_CONFIGfan-out to specific server roles, replacing cluster-wide config blasts and reducing unnecessary I/O.
Internal Quality & Hot-path Optimizations
- Zero-allocation Routing — Refactored
DecisionBuffer(placement history) into a lock-free, zero-allocation Ring Buffer usingAtomicReferenceArray. - Sum Types — Rewrote
PlacementDecisiontypes using Java 21+ sealed interfaces and records, eliminatingOptionalheap allocation overheads in critical loops. - Failure Drills — Added automated Testcontainers assertions locking the degraded-mode contract and orphan reaping mechanisms, ensuring these resilience features are immune to future regressions.
Upgrading from 0.3.0
Drop-in replacement. No breaking configuration changes. Requirements remain unchanged: Paper 26.1.2 and/or Velocity 3.4.0, Java 25, Redis 7.
What's next (Iteration 5 — Public API Surface)
Iteration 5 will focus on extracting the stable public surface into a pillar-api module and enforcing strict package boundaries with ArchUnit tests, preparing the system for external adoption and the public documentation site (Iteration 6).