rcourtman
518a5e2294
Cache mock unified snapshots instead of rebuilding registries per read
...
In mock mode every unified read-state access built two throwaway
registries: mock.UnifiedResourceSnapshot constructed one to derive the
resource list, and the monitor's currentUnifiedStateView ingested that
list into another, deep-cloning all resources both ways. Chart requests,
broadcasts, alert evaluation, and API reads each repaid that full cost —
the dominant share of the demo's 76TB/9.5d allocation churn, since every
one of those reads runs against a world that only changes on the 2-second
mock tick.
Introduce fixtureDataVersion, a token that advances on every observable
mock-graph change (metric ticks and the structural changes that bump
fixtureRevision, which stays structural-only so seeded trend history
remains reusable). Memoize the package-level UnifiedResourceSnapshot and
the monitor's mock-branch state view against it, so consumers between
ticks share one immutable build. Sharing mirrors the semantics the
persistent-store ReadState path has always had in real mode: all
consumers were audited — they ingest (which clones), copy before
top-level writes, or build fresh outputs. Real-mode paths are untouched.
Contract-Neutral: mock snapshot memoization: identical data served from cache, no contract delta
2026-08-05 17:17:45 +01:00
..
2026-03-18 16:06:30 +00:00
2026-07-20 22:41:19 +01:00
2026-08-01 21:00:42 +01:00
2026-08-01 21:00:42 +01:00
2026-07-17 16:09:06 +01:00
2026-08-02 20:30:38 +01:00
2026-07-27 11:13:04 +01:00
2026-07-27 11:13:04 +01:00
2026-07-29 21:28:26 +01:00
2026-07-29 21:28:26 +01:00
2026-07-29 21:28:26 +01:00
2026-07-29 20:09:23 +01:00
2026-07-29 21:28:26 +01:00
2025-11-26 23:44:36 +00:00
2025-10-20 15:13:37 +00:00
2026-02-07 22:05:55 +00:00
2026-03-18 16:06:30 +00:00
2026-07-27 18:36:50 +01:00
2026-06-02 14:52:47 +01:00
2026-07-24 12:40:05 +01:00
2026-07-26 19:31:15 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-07-22 06:42:33 +01:00
2026-07-11 18:25:17 +01:00
2026-07-11 18:25:17 +01:00
2025-12-01 17:33:36 +00:00
2026-03-18 16:06:30 +00:00
2026-06-26 11:35:12 +01:00
2026-06-26 11:35:12 +01:00
2026-04-01 19:14:12 +01:00
2026-07-27 18:36:50 +01:00
2026-07-10 00:05:22 +01:00
2026-07-10 00:05:22 +01:00
2026-06-25 20:30:38 +01:00
2026-07-23 22:19:35 +01:00
2026-06-04 10:35:35 +01:00
2026-06-04 10:35:35 +01:00
2026-07-19 09:13:14 +01:00
2026-08-03 01:01:20 +01:00
2026-08-03 01:01:20 +01:00
2026-07-23 22:33:07 +01:00
2026-01-01 22:29:15 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2025-10-14 16:13:53 +00:00
2025-11-12 09:47:02 +00:00
2026-07-02 23:52:02 +01:00
2026-07-02 23:52:02 +01:00
2026-07-10 00:14:01 +01:00
2026-05-19 22:37:55 +01:00
2026-01-28 16:52:35 +00:00
2026-07-13 09:41:11 +01:00
2026-05-05 14:59:29 +01:00
2026-04-22 09:22:46 +01:00
2026-07-27 18:36:50 +01:00
2026-07-24 00:19:40 +01:00
2026-06-27 17:41:00 +01:00
2026-07-27 18:36:50 +01:00
2026-07-27 18:36:50 +01:00
2026-07-27 18:36:50 +01:00
2026-04-01 18:38:42 +01:00
2026-06-04 14:07:14 +01:00
2026-07-27 18:36:50 +01:00
2026-07-24 15:46:56 +01:00
2026-07-03 10:43:28 +01:00
2026-07-07 09:46:51 +01:00
2026-08-03 01:01:20 +01:00
2026-08-03 01:01:20 +01:00
2026-08-03 01:01:20 +01:00
2026-08-03 01:01:20 +01:00
2025-11-26 23:44:36 +00:00
2026-07-23 22:17:25 +01:00
2026-07-20 16:03:29 +01:00
2026-07-21 20:30:54 +01:00
2026-07-23 22:19:35 +01:00
2026-08-02 19:07:38 +01:00
2026-07-26 19:31:15 +01:00
2026-07-28 13:28:55 +01:00
2026-08-02 18:56:05 +01:00
2026-03-18 16:06:30 +00:00
2026-07-28 12:08:10 +01:00
2026-07-14 17:03:14 +01:00
2026-08-05 00:32:24 +01:00
2026-07-23 22:33:07 +01:00
2026-04-11 22:46:34 +01:00
2026-02-04 19:49:52 +00:00
2026-02-04 19:49:52 +00:00
2026-04-12 09:41:29 +01:00
2026-06-11 19:42:40 +01:00
2026-06-11 19:42:40 +01:00
2026-07-24 10:26:50 +01:00
2026-07-24 00:19:40 +01:00
2026-08-02 19:07:38 +01:00
2026-07-23 22:05:09 +01:00
2026-07-23 22:33:07 +01:00
2025-12-01 21:18:33 +00:00
2025-11-27 09:16:53 +00:00
2026-02-04 19:35:19 +00:00
2026-07-30 16:58:52 +01:00
2026-08-02 19:07:38 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-06-03 12:29:37 +01:00
2026-07-23 14:03:44 +01:00
2026-08-05 14:04:18 +01:00
2026-07-20 06:30:55 +01:00
2026-06-09 21:42:21 +01:00
2026-06-09 21:42:21 +01:00
2026-08-05 17:17:45 +01:00
2026-01-22 13:39:06 +00:00
2026-07-29 11:45:56 +01:00
2026-07-30 22:42:04 +01:00
2026-08-05 00:32:24 +01:00
2026-07-29 20:09:23 +01:00
2026-07-26 20:03:46 +01:00
2026-07-20 20:27:39 +01:00
2026-08-02 20:30:38 +01:00
2026-08-02 20:30:38 +01:00
2026-07-29 20:09:23 +01:00
2026-07-26 20:03:46 +01:00
2026-05-05 14:19:50 +01:00
2026-07-28 12:02:46 +01:00
2026-07-28 12:02:46 +01:00
2026-08-04 15:07:18 +01:00
2026-05-05 16:25:00 +01:00
2026-07-24 09:45:05 +01:00
2026-07-24 09:45:05 +01:00
2026-07-28 11:24:01 +01:00
2026-07-28 12:08:10 +01:00
2025-11-18 22:57:20 +00:00
2026-06-11 10:23:49 +01:00
2026-07-24 22:34:54 +01:00
2026-07-24 12:42:16 +01:00
2026-07-27 18:36:50 +01:00
2026-07-26 20:03:46 +01:00
2025-10-20 15:13:38 +00:00
2026-06-14 11:07:47 +01:00
2026-07-30 19:08:28 +01:00
2026-08-05 00:32:24 +01:00
2026-07-30 22:42:04 +01:00
2026-07-24 15:46:56 +01:00
2026-07-30 20:22:47 +01:00
2026-07-30 20:22:47 +01:00
2026-07-26 20:03:46 +01:00
2026-05-01 20:28:12 +01:00
2026-04-11 14:51:10 +01:00
2026-06-09 21:42:21 +01:00
2026-06-11 13:12:59 +01:00
2026-05-25 20:35:58 +01:00
2026-07-27 10:00:33 +01:00
2026-07-12 02:53:01 +01:00
2026-08-01 22:12:46 +01:00
2026-07-24 10:26:50 +01:00
2026-07-24 09:45:05 +01:00
2026-08-01 22:12:46 +01:00
2026-05-08 19:53:03 +01:00
2026-08-02 19:07:38 +01:00
2026-07-27 10:00:33 +01:00
2026-07-27 10:00:33 +01:00
2026-07-16 09:26:53 +01:00
2026-03-18 16:06:30 +00:00
2026-07-30 16:45:13 +01:00
2026-06-10 16:19:24 +01:00
2026-08-02 19:07:38 +01:00
2026-07-24 10:11:56 +01:00
2026-05-13 19:00:02 +01:00
2026-04-01 19:14:12 +01:00
2026-07-23 22:43:34 +01:00
2026-07-24 15:46:56 +01:00
2026-07-24 15:46:56 +01:00
2026-08-04 10:35:09 +01:00
2026-07-23 22:05:09 +01:00
2026-07-24 10:26:50 +01:00
2026-07-24 22:37:29 +01:00
2026-08-02 19:07:38 +01:00
2026-07-29 22:10:04 +01:00
2026-07-27 18:36:50 +01:00
2026-07-24 22:37:29 +01:00
2026-07-27 12:07:44 +01:00
2026-07-24 10:26:50 +01:00
2026-03-18 16:06:30 +00:00
2026-07-24 00:19:40 +01:00
2026-07-24 11:21:27 +01:00
2026-08-04 10:35:09 +01:00
2026-01-04 10:29:40 +00:00
2026-07-26 12:42:22 +01:00
2026-07-28 13:28:55 +01:00
2026-03-18 16:06:30 +00:00
2026-07-26 20:03:46 +01:00
2026-07-26 20:03:46 +01:00
2026-03-18 16:06:30 +00:00
2026-07-26 20:03:46 +01:00
2026-05-17 18:45:24 +01:00
2026-07-29 23:11:45 +01:00
2026-03-18 16:06:30 +00:00
2026-07-23 22:19:35 +01:00
2026-07-24 12:42:16 +01:00
2026-03-18 16:06:30 +00:00
2026-07-30 21:15:05 +01:00
2026-08-05 17:17:45 +01:00
2026-05-05 12:59:59 +01:00
2026-07-16 16:25:10 +01:00
2026-07-21 21:24:15 +01:00
2026-07-16 15:17:45 +01:00
2026-07-20 07:50:22 +01:00
2026-07-23 22:33:07 +01:00
2026-04-01 10:04:30 +01:00
2026-07-24 15:46:56 +01:00
2026-07-24 00:19:40 +01:00
2026-04-11 22:46:34 +01:00
2026-02-07 22:05:55 +00:00
2026-01-14 12:26:18 +00:00
2026-07-19 15:10:38 +01:00
2026-07-19 15:10:38 +01:00
2026-07-18 11:54:09 +01:00
2026-07-18 11:54:09 +01:00
2026-06-10 09:19:51 +01:00
2026-07-26 12:42:22 +01:00
2026-03-18 16:06:30 +00:00
2026-07-13 11:04:09 +01:00
2026-07-13 11:04:09 +01:00
2026-07-24 10:11:56 +01:00
2026-07-22 06:42:33 +01:00
2026-08-04 15:07:18 +01:00
2026-08-04 15:07:18 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-07-24 10:26:50 +01:00
2026-07-24 10:26:50 +01:00
2026-07-23 22:24:52 +01:00
2026-07-23 22:24:52 +01:00
2026-03-26 22:58:27 +00:00
2026-03-31 15:42:16 +01:00
2026-07-23 07:15:13 +01:00
2026-07-29 14:17:19 +01:00
2026-07-29 14:17:19 +01:00
2026-07-24 10:26:50 +01:00
2026-07-16 09:26:53 +01:00
2026-07-16 09:26:53 +01:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-03-18 16:06:30 +00:00
2026-01-06 17:44:52 +00:00
2026-01-06 17:44:52 +00:00
2026-02-04 19:33:29 +00:00
2025-12-02 12:02:13 +00:00
2026-03-18 16:06:30 +00:00
2026-07-23 06:34:03 +01:00
2026-06-11 16:00:25 +01:00
2026-07-28 12:08:10 +01:00
2026-07-24 12:40:05 +01:00
2026-07-24 00:10:17 +01:00
2026-07-25 00:21:35 +01:00
2026-05-22 20:26:56 +01:00
2026-07-23 22:06:57 +01:00
2026-07-30 16:45:13 +01:00