Released4 May 2026Commit854aeb30Line0.1.x
v0.1.4
v0.1.4 — registration-timeout resilience for enclave restarts
Notes
Closes the production gap where enclave-server restarts crashed apiary's main event loop. The keepalive work in v0.1.2 covered connection-level drops; this release covers the registration-handshake-timeout path.
Changed:
- do-reconnect! no longer raises on registration-timeout; returns 'ok / 'retry symbols. Per-step inline guards convert any raise to retry. No more crash when the registration handshake hangs against a server that's up but not yet accepting registrations.
- +reconnect-handshake-timeout+ tightened 30s → 10s. Server-restart windows are typically <10s, so a tighter timeout cycles failed attempts faster.
- New helpers: cleanup-partial-irc! (closes fds on retry paths) and await-registration! (extracted for clarity).
Validation:
- Smoke harness (test/smoke-keepalive-integration.sh) phase 3 extended to span ≥3 reconnect attempts. All 12 cross-repo smoke assertions pass.
- 18s outage trace shows clean exponential backoff (attempts 1→5, delays 1s/2s/4s/8s/16s) with channel rejoin, no crash.
Brief: folio tasks/apiary-resilient-to-server-restarts (archived at ship) Knowledge: folio topics/apiary-reconnect-resilience
Commit
854aeb30eb6ab8b7ee8a53302846f3aa5f0b2ebf
This commit is older than the 20 that keep a page here, so it has none. It is in the clone.
Releases