From e930369e5741278f1cf7e118484929bff07b36ba Mon Sep 17 00:00:00 2001 From: Renn F Date: Thu, 15 Oct 2026 20:48:15 +0200 Subject: [PATCH] docs(changelog): add the Python agent parity fixes to 3.2.4 (#47) The version is already 3.2.4 and no v3.2.4 tag exists, so the fixes merged in #46 go into the same section. --- CHANGELOG.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d4a10b3..b66033e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,12 +6,16 @@ ___ v3.2.4 (2026-10-15) ------------------- -Redis persistence off the request path (v3.2.4) ------------------------------------------------ +Redis persistence off the request path and Python agent parity (v3.2.4) +----------------------------------------------------------------------- ### Fixed - `addEvent` and `addMetric` no longer await Redis, so a slow or failing Redis no longer delays requests that emit events. A Redis failure that reported through `sendEvent` used to re-enter persistence through unbounded async recursion; persists are now tracked background promises scoped by `AsyncLocalStorage` and drained on stop. In-flight persists are capped at `bufferSize` (shared by events and metrics): past the cap the item stays in memory only, counts toward `redisPersistFailures`, and one warning is logged per degradation episode. The startup encryption error now includes the cause. Lockstep release with the agent family at 3.2.4. +- The rules loop starts only when `projectId` is set, like the Python agent. Without a project id there is nothing to fetch rules for. +- Redis keys use a wall-clock epoch nanosecond stamp at microsecond resolution (`performance.timeOrigin + performance.now()`), like `time.time_ns()` in the Python agent. Reload keeps the reference semantics: keys are walked in the order Redis returns them. +- `SecurityEvent` keeps unknown fields as `extra` and `eventToWire` sends them, like the reference `extra="allow"`. They survive metadata redaction and a Redis round trip and never override a known field. +- `getStats()` keeps the reference key set (pinned by a test). The code comment on `signing.ts` now states that the signature covers the uncompressed body. v3.2.3 (2026-10-12) -------------------