Skip to content

v0.12.0 — crash-safety: loss-proof replies across every type

Latest

Choose a tag to compare

@jeremylongshore jeremylongshore released this 25 Jun 06:07
27bada9

The crash-safety epic lands: a Claude Code Slack session now survives a process crash, and no reply is silently lost — across single-message, chunked, streaming, and file-upload replies.

Highlights

Crash-safety & loss-proof delivery (epic ccsc-o7x)

  • Lease-fenced sessions — monotonic-token + heartbeat lease so exactly one process owns a turn; a superseded owner is quarantined (no split-brain).
  • Boot-time recovery sweep — requeues work whose lease lapsed, quarantines anything it can't prove safe (fail-closed), both journaled.
  • Transactional reply outbox — replies are recorded as durable obligations before the send, drained by a leased poller that retries transient Slack errors with backoff and dead-letters permanent ones (always recording why).
  • Exactly-once delivery via idempotency keys — a redelivery after a lost ack never double-posts. Live for single, chunked, streaming, and file replies. File uploads re-run the outbound exfil guard on the exact bytes sent (TOCTOU-safe) and dedup within the obligation's delivery window.

Usability & multi-agent

  • Mention-to-engage channels — mention the bot once in a thread, then converse without re-mentioning (human-only; peer agents must mention each time).
  • Multi-agent hardening — channel-wide circuit breaker for 3+-bot rings, optional per-user session isolation, global maxConcurrentSessions backpressure, and read-only !agents / !mute-status / !rate-limit operator verbs.

Project

  • Greptile AI-reviewer config (.greptile/); ROADMAP.md with explicit Non-Goals.

Operator knobs: SLACK_SESSION_LEASE_TTL_MS, SLACK_DELIVERY_POLL_MS, SLACK_MAX_CONCURRENT_SESSIONS.

Full detail: CHANGELOG.md.