Elie Habib
0a1b74a9b2
feat(resilience): add score confidence intervals via batch Monte Carlo ( #2877 )
...
* feat(resilience): add score confidence intervals via batch Monte Carlo
Weekly cron perturbs domain weights ±10% across 100 draws per country,
stores p05/p95 in Redis. Score handler reads intervals and includes
them in the API response as ScoreInterval { p05, p95 }.
Proto field 14 (score_interval) added to GetResilienceScoreResponse.
* chore: regenerate proto types and OpenAPI docs for ScoreInterval
* fix(resilience): add seed-meta + lock + fix interval cache + percentile formula
1. Write seed-meta:resilience:intervals for health monitoring
2. Add distributed lock to prevent concurrent cron overlap
3. Move scoreInterval read outside 6h score cache boundary
4. Fix percentile index from floor to ceil-1 (nearest-rank)
* fix(health): add resilience:intervals to health + seed-health registries
* fix(seed): skip seed-meta on no-op runs + register intervals in health check
2026-04-09 22:06:54 +04:00
..
2026-03-15 15:57:22 +04:00
2026-04-09 21:35:26 +04:00
2026-04-09 17:06:03 +04:00
2026-02-28 17:43:56 +04:00
2026-04-02 08:17:32 +04:00
2026-03-23 16:10:49 +04:00
2026-04-04 15:38:02 +04:00
2026-03-29 11:09:26 +04:00
2026-03-28 15:03:54 +04:00
2026-03-16 08:40:14 +04:00
2026-04-02 08:17:32 +04:00
2026-03-14 21:29:21 +04:00
2026-04-05 08:01:27 +04:00
2026-03-19 00:24:47 +04:00
2026-04-06 16:28:04 +04:00
2026-03-31 07:54:23 +04:00
2026-03-28 19:51:29 +04:00
2026-03-20 12:37:24 +04:00
2026-03-14 21:29:21 +04:00
2026-04-09 21:41:26 +04:00
2026-03-31 13:09:21 +04:00
2026-04-04 15:38:02 +04:00
2026-03-14 21:29:21 +04:00
2026-03-12 06:50:30 +04:00
2026-03-05 10:16:43 +04:00
2026-03-19 10:31:37 +04:00
2026-03-14 21:29:21 +04:00
2026-03-23 23:59:21 +04:00
2026-02-26 20:52:44 +04:00
2026-03-15 15:57:22 +04:00
2026-03-24 18:52:02 +04:00
2026-03-15 15:57:22 +04:00
2026-03-19 02:40:05 +04:00
2026-03-17 06:35:12 +04:00
2026-03-01 11:53:20 +04:00
2026-03-01 11:53:20 +04:00
2026-03-14 21:29:21 +04:00
2026-03-28 23:59:47 +04:00
2026-04-04 15:38:02 +04:00
2026-03-01 15:59:53 +04:00
2026-04-03 23:25:08 +04:00
2026-04-08 11:21:40 +04:00
2026-03-28 13:05:18 +04:00
2026-03-14 21:29:21 +04:00
2026-03-01 11:53:20 +04:00
2026-03-15 11:20:51 +04:00
2026-04-02 22:17:24 +04:00
2026-04-09 16:04:00 +04:00
2026-04-09 16:04:00 +04:00
2026-04-05 09:03:34 +04:00
2026-04-05 09:03:34 +04:00
2026-03-15 15:57:22 +04:00
2026-03-23 23:59:21 +04:00
2026-03-01 11:53:20 +04:00
2026-04-03 10:27:37 +04:00
2026-03-17 16:12:05 +04:00
2026-03-30 14:07:52 +04:00
2026-03-21 18:41:04 +04:00
2026-03-26 06:54:18 +04:00
2026-03-29 17:26:51 +04:00
2026-04-07 12:43:54 +04:00
2026-04-07 22:51:16 +04:00
2026-04-02 08:17:32 +04:00
2026-04-07 07:50:56 +04:00
2026-04-05 07:49:39 +04:00
2026-04-04 08:11:49 +04:00
2026-04-02 08:17:32 +04:00
2026-04-02 08:17:32 +04:00
2026-03-31 07:54:23 +04:00
2026-04-04 15:38:02 +04:00
2026-03-22 11:46:40 +04:00
2026-04-04 15:38:02 +04:00
2026-03-26 12:28:08 +04:00
2026-04-04 23:55:09 +04:00
2026-03-22 22:55:06 +04:00
2026-03-20 10:34:20 +04:00
2026-03-15 12:02:37 +04:00
2026-03-26 17:50:37 +04:00
2026-04-09 21:35:26 +04:00
2026-03-29 00:33:26 +04:00
2026-03-15 12:02:37 +04:00
2026-03-26 19:21:50 +04:00
2026-03-27 22:33:45 +04:00
2026-03-27 11:48:02 +04:00
2026-03-27 11:48:02 +04:00
2026-03-29 17:26:51 +04:00
2026-04-05 12:52:20 +04:00
2026-04-07 22:24:17 +04:00
2026-04-08 22:28:30 +04:00
2026-04-05 14:18:38 +04:00
2026-04-08 16:52:12 +04:00
2026-03-31 07:54:23 +04:00
2026-03-27 23:29:55 +04:00
2026-04-04 17:33:54 +04:00
2026-03-30 09:27:22 +04:00
2026-04-09 09:01:56 +04:00
2026-04-06 22:47:17 +04:00
2026-04-01 08:53:13 +04:00
2026-03-27 11:07:17 +04:00
2026-04-02 20:15:11 +04:00
2026-03-21 18:41:04 +04:00
2026-04-05 12:32:13 +04:00
2026-03-23 20:10:15 +04:00
2026-03-27 10:50:20 +04:00
2026-03-27 01:28:30 +04:00
2026-03-31 07:54:23 +04:00
2026-04-03 10:27:37 +04:00
2026-03-26 13:58:24 +04:00
2026-04-09 17:06:03 +04:00
2026-04-06 16:28:04 +04:00
2026-04-06 20:26:02 +04:00
2026-03-22 19:59:42 +04:00
2026-03-23 16:32:34 +04:00
2026-03-26 08:32:42 +04:00
2026-04-05 07:44:32 +04:00
2026-04-06 16:27:34 +04:00
2026-04-06 13:58:54 +04:00
2026-03-31 07:54:23 +04:00
2026-03-15 15:57:22 +04:00
2026-04-05 08:33:03 +04:00
2026-03-22 19:59:42 +04:00
2026-03-20 16:08:48 +04:00
2026-03-20 12:36:34 +04:00
2026-04-05 23:40:58 +04:00
2026-04-07 23:09:33 +04:00
2026-04-07 13:14:35 +04:00
2026-04-07 23:09:33 +04:00
2026-04-09 12:40:13 +04:00
2026-03-20 12:19:01 +04:00
2026-03-17 09:18:06 +04:00
2026-04-04 23:19:33 +04:00
2026-03-18 19:53:57 +04:00
2026-04-09 22:06:54 +04:00
2026-04-09 20:27:00 +04:00
2026-04-08 17:24:50 +04:00
2026-03-29 17:41:42 +04:00
2026-04-04 15:38:02 +04:00
2026-03-22 19:59:42 +04:00
2026-03-22 22:55:06 +04:00
2026-03-15 12:02:37 +04:00
2026-04-07 17:56:51 +04:00
2026-03-26 07:09:33 +04:00
2026-03-22 22:55:06 +04:00
2026-03-26 16:53:46 +04:00
2026-03-17 17:45:13 +04:00
2026-03-20 14:04:21 +04:00
2026-03-22 22:55:06 +04:00
2026-03-27 22:47:24 +04:00
2026-03-17 16:12:05 +04:00
2026-03-15 12:02:37 +04:00
2026-03-14 10:23:20 +04:00
2026-03-27 10:58:29 +04:00
2026-03-19 01:57:27 +04:00
2026-02-19 07:53:15 +04:00
2026-04-09 12:22:46 +04:00
2026-04-09 12:22:46 +04:00
2026-04-09 08:49:54 +04:00
2026-03-14 21:29:21 +04:00
2026-04-02 08:55:22 +04:00
2026-03-26 13:47:22 +02:00