Skip to content

v0.26.0

Choose a tag to compare

@KIvanow KIvanow released this 08 Jul 16:59
2b838b7

Anomaly-detection expansion (three new Valkey-issue-backed detectors), a P99 latency regression guard, client-side bulk delete-by-pattern, and faster webhook retries.

✨ Added

Anomaly detection

  • Split-brain - duplicate primaries in a shard (#305, valkey#2261 (valkey-io/valkey#2261)) - flags a hash-slot range claimed by more than one master-flagged node and names the phantom primary (lower configEpoch). Emits a CRITICAL CLUSTER_TOPOLOGY anomaly, deduped per conflict signature and re-armed once resolved.
  • Stalled BGSAVE / AOF persistence forks (#294, valkey#2322 (valkey-io/valkey#2322)) - tracks RDB/AOF fork children from INFO persistence. CRITICAL when progress freezes (MONITOR_PERSISTENCE_STALL_SEC, 60s), elapsed exceeds the ceiling (MONITOR_PERSISTENCE_CRIT_SEC, 600s), or last-save status flips ok → err; WARNING past MONITOR_PERSISTENCE_WARN_SEC (120s) while still advancing.
  • Data-loss guard for empty-primary full resync (#302, valkey#579 (valkey-io/valkey#579), Pro) - Rule A alerts when a persistence-less primary restarts empty with restart evidence (replid change / uptime reset / offset regression); Rule B confirms a replica whose keyspace collapsed ≥90% after a replid change. Same-replid FLUSHALL is not flagged. Adds the data.loss.detected webhook + dashboard banner.

Latency

  • P99 regression guard for version upgrades (#304, valkey#3527 (valkey-io/valkey#3527), Pro) - a version change opens a 24h window; when a command's P99 stays ≥1.5× its pre-upgrade baseline (and ≥1ms above) for 5 consecutive samples, fires one aggregated command_p99 anomaly + the latency.regression.detected webhook. Adds a latencystats poller (60s/7d), the latency_stats_samples store across all adapters, and GET /metrics/latencystats/summary + /history (Community).

Data management

  • Bulk delete-by-pattern (client-side SCANDEL) (#308, valkey#2623 (valkey-io/valkey#2623), Pro) - client-driven SCAN + per-key UNLINK with dry-run preview, maxKeys cap + truncation reporting, pacing, cooperative cancel, and cluster fan-out (per-key UNLINK avoids CROSSSLOT). Catch-all * requires explicit confirmation. Gated behind the bulkDelete feature.

🔧 Changed

  • Adaptive webhook retry polling (#157) - self-scheduling loop: 2s while retries pend, 10s when idle (same DB load), with a shutdown guard. Backoff retries (1s/2s/4s) now picked up in ~2s instead of up to 10s.
  • Centralized ENV_DEFAULT_ID (#156) - replaces 28+ hardcoded 'env-default' literals with one constant.

🐛 Fixed

  • MCP info endpoint (#280) - passes the section parameter through to the underlying INFO call.

Full changelog: v0.25.0...v0.26.0

What's Changed

  • fix(telemetry-py): reliable event delivery and per-install identity by @KIvanow in #292
  • fix(telemetry): reliable delivery + per-install identity in TS packages by @KIvanow in #293
  • fix(telemetry): serverless-aware event delivery for TS SDKs by @KIvanow in #301
  • feat(retrieval): LongMemEval lever ablation foundation by @jamby77 in #284
  • feat(retrieval): structured context assembly (Issue 1) by @jamby77 in #285
  • feat(retrieval): query-time temporal resolver (Issue 2, slim) by @jamby77 in #287
  • fix(mcp): pass section param through to info endpoint by @AruneshDwivedi in #280
  • fix(mcp): report package version from metadata by @RitwijParmar in #222
  • feat(agent-cache/ai): cache streaming LLM responses via wrapStream by @amitkojha05 in #262
  • chore(agent-cache): release v0.11.0 (streaming cache) + fix TS build by @KIvanow in #306
  • feat(anomaly): detect duplicate primaries in a shard (split-brain) by @KIvanow in #305
  • feat(anomaly): detect stalled BGSAVE/AOF persistence forks by @KIvanow in #294
  • feat(retrieval): LongMemEval question-type filter + stratified slice by @KIvanow in #300
  • refactor: replace hardcoded 'env-default' strings with ENV_DEFAULT_ID by @Vswaroop04 in #156
  • feat(webhooks): implement adaptive polling in WebhookProcessorService by @Vswaroop04 in #157
  • feat(agent-memory): opt-in write-time fact consolidation by @KIvanow in #299
  • feat(anomaly): data-loss guard for empty-primary full resync (valkey#579) by @KIvanow in #302
  • feat(bulk-delete): incremental delete-by-pattern (client-side SCANDEL) by @KIvanow in #308
  • feat(latency): P99 latency regression guard for version upgrades (valkey#3527) by @KIvanow in #304

New Contributors

Full Changelog: v0.25.0...v0.26.0