- NPX
- Docker
🐞 Fixed
- GIN Index Migration — Rewrote metadata GIN index migration to run non-transactionally with CREATE INDEX CONCURRENTLY in a background goroutine, preventing pod startup deadlocks during rolling upgrades on large tables
- Advisory Lock Refactor — Generalized advisory lock into reusable
acquireAdvisoryLockwith dedicated GIN index lock key to serialize index builds across cluster nodes - Metadata Pointer Safety — Changed
Log.Metadatafromstringto*stringto properly represent nullable metadata and prevent serialization errors from aborting log writes - Distributed Lock Nil Safety — Added nil-store guards to
DistributedLockmethods to prevent panics when config store is unavailable - PostgreSQL 16 Requirement — Added minimum PostgreSQL 16 version check at logstore startup, leveraging
IS NOT JSON OBJECTfor server-side metadata validation
- fix: deterministic JSON serialization across all providers — replaced map[string]interface round-trips with json.RawMessage and sjson/gjson to preserve original key ordering for prompt caching
- fix: ResponsesTool MarshalJSON rewritten to use sjson for incremental byte-level JSON construction, ensuring stable key order critical for OpenAI prompt caching
- fix: Anthropic tool call arguments preserved as json.RawMessage instead of parsing into map, preventing key reordering on re-serialization
- fix: Bedrock tool use input and extra params preserved as json.RawMessage for consistent prompt caching behavior
- fix: Gemini FunctionCall.Args changed from map[string]interface to json.RawMessage, eliminating key order randomization
- fix: Cohere response format serialization switched to sjson for deterministic output
- fix: HuggingFace model field update uses sjson SetJSONField instead of unmarshal/marshal round-trip
- fix: Replicate prediction request input merges extra params using sjson to preserve key ordering
- feat: added comprehensive prompt caching tests for Anthropic, Azure, Bedrock, Gemini, and Vertex providers
- feat: added serialization tests for ResponsesTool to verify deterministic JSON output
- fix: rewrote GIN index migration to use CREATE INDEX CONCURRENTLY in background goroutine, preventing deadlocks during rolling upgrades
- fix: generalized advisory lock into acquireAdvisoryLock with dedicated ginIndexAdvisoryLockKey for serialized index builds
- fix: changed Log.Metadata from string to *string with graceful serialization error handling
- fix: added nil-store guards to DistributedLock methods (Lock, TryLock, Extend, IsHeld, cleanupExpiredLock)
- feat: added PostgreSQL 16 minimum version requirement with server-side IS NOT JSON OBJECT validation
- chore: upgraded framework to v1.2.30
- chore: upgraded framework to v1.2.30
- chore: upgraded framework to v1.2.30
- fix: adapted log size estimation for Metadata *string change
- chore: upgraded framework to v1.2.30
- chore: upgraded framework to v1.2.30
- chore: upgraded framework to v1.2.30
- chore: upgraded framework to v1.2.30
- chore: upgraded framework to v1.2.30

