You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+17-14Lines changed: 17 additions & 14 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,19 +7,23 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
7
7
8
8
## [Unreleased]
9
9
10
-
## [0.5.0] - 2026-04-21
10
+
### Fixed
11
+
- Control Center startup timeout cascades on large event histories by moving `/savings` out of startup-critical refresh fanout and loading it only when the Analytics panel is active.
12
+
- Daemon savings analytics lock contention by replacing full event-log Rust parsing with SQL-side aggregation and short-lived payload caching in `GET /savings`.
13
+
- App-managed startup timeout sensitivity by staggering heavy startup maintenance passes for Control Center ownership and accepting partial daemon probe responses when timeout/would-block happens after partial bytes are received.
14
+
- Control Center refresh overlap storms by introducing a single-flight refresh queue, so background timers/SSE/recovery retries coalesce instead of blasting concurrent protected IPC calls.
15
+
- Read-path lock contention on startup surfaces by routing key GET endpoints through `state.db_read` and removing write-side cleanup work from hot read paths.
11
16
12
17
### Performance
13
-
-Routed read-only daemon endpoints through the read pool (`state.db_read`) to reduce read/write lock contention on hot paths (`/storage`, `/crystals`, and `/export`).
14
-
-Pushed `source_prefix` filtering into SQL candidate scans and fallback scans for recall, reducing post-query filtering overhead.
15
-
-Reworked rate-limit sliding windows to a `VecDeque`-backed `try_record` path to avoid full-vector retain scans under load.
16
-
-Removed raw-baseline token-estimation string allocation by reusing the char-count token estimator.
17
-
-Control Center now precomputes session heartbeat timestamps for sorting and memoizes top savings-by-agent ranking.
18
-
-Centralized Cortex endpoint parsing for host/port UI defaults and host-label rendering in Control Center.
18
+
-Improved high-volume analytics behavior on large `events` tables, reducing shared read-lock occupancy and lowering cross-endpoint timeout risk during cold start.
19
+
-Added warmup-aware heavy-metrics caching in `/health` (cache/deferred source tagging) so startup fetches avoid repeated expensive metrics work.
20
+
-Added benchmark ingestion compaction caps (`CORTEX_BENCHMARK_STORE_MAX_CHARS`, tighter fact/context matrix caps) to bound benchmark-side payload growth and token pressure.
21
+
-Added targeted DB indexes for startup-critical queries (`sessions`, `locks`, `tasks`, `feed`, `messages`, `activity`, `events`) including owner-scoped variants to cut first-load scan pressure.
22
+
-Added event-pressure compaction controls (per-event-type caps + global non-boot cap with hard/soft thresholds) to prevent unbounded event growth from degrading startup.
23
+
-Scoped `/savings` analytics rollups to the recent window (`30d`) to bound heavy aggregates for large long-lived histories.
19
24
20
-
### Reliability
21
-
- Added regression coverage for fallback recall source-prefix scoping (memories and decisions).
22
-
- Added regression coverage for sliding-window prune/record semantics and token-estimator parity.
25
+
### Changed
26
+
- Benchmark fair-run posture is now fail-closed for both single-run and matrix modes: gate-bypass shortcuts (`no_enforce_gate`, `allow_missing_recall_metrics`) are rejected in preflight, and matrix-requested shortcut flags are explicitly surfaced/rejected before execution.
23
27
24
28
## [0.4.1] - 2026-04-06
25
29
@@ -82,8 +86,7 @@ and this project follows [Semantic Versioning](https://semver.org/spec/v2.0.0.ht
0 commit comments