prosolis
ecca66da58
Coop: split lock checks (per-minute) from resolution (daily)
...
Locks were gated behind the same once-per-day 08:00 UTC tick as floor
resolution. A run created after morningHour would wait until next day's
tick to be eligible — meaning actual lock latency could be 24-48h, not the
24h advertised. Worse, a run created late on Day N missed the Day N+1 tick
(too early) AND the Day N+2 tick happens 48h after creation.
Fix: lock checks fire on every ticker minute (cheap timestamp scan over
typically 0-5 open runs). Resolution stays daily, gated by JobCompleted.
Real symptom that prompted this: Run #1 created 17:17 UTC, locked never
fired because the morning tick at 08:00 UTC the next day saw the run as
not-yet-eligible (only 15h elapsed), then marked the daily job complete
before the actual 24h elapsed at 17:17 UTC.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com >
2026-04-27 17:35:37 -07:00
..
2026-04-18 01:06:50 -07:00
2026-04-26 07:57:31 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-08 17:04:40 -07:00
2026-04-24 22:23:58 -07:00
2026-04-26 07:57:31 -07:00
2026-04-26 07:57:31 -07:00
2026-04-18 01:07:25 -07:00
2026-04-08 15:50:28 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:07:25 -07:00
2026-04-03 20:11:51 -07:00
2026-04-05 17:04:03 -07:00
2026-04-05 17:04:03 -07:00
2026-03-27 21:26:19 -07:00
2026-03-26 09:22:02 -07:00
2026-04-10 16:50:49 -07:00
2026-04-08 00:24:51 -07:00
2026-04-24 22:23:58 -07:00
2026-04-08 23:01:39 -07:00
2026-04-10 16:50:49 -07:00
2026-04-05 17:04:03 -07:00
2026-04-05 17:04:03 -07:00
2026-04-05 17:04:03 -07:00
2026-03-26 09:22:02 -07:00
2026-03-26 09:22:02 -07:00
2026-04-08 15:31:25 -07:00
2026-03-27 21:26:19 -07:00
2026-04-18 01:07:25 -07:00
2026-04-10 16:50:49 -07:00
2026-04-24 22:23:58 -07:00
2026-04-24 22:23:58 -07:00
2026-04-10 16:50:49 -07:00
2026-04-24 22:23:58 -07:00
2026-04-10 16:50:49 -07:00
2026-04-10 16:50:49 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:07:25 -07:00
2026-04-10 16:50:49 -07:00
2026-04-18 01:07:25 -07:00
2026-04-08 15:50:28 -07:00
2026-04-24 22:23:58 -07:00
2026-04-08 22:41:21 -07:00
2026-04-08 15:50:28 -07:00
2026-04-18 01:07:25 -07:00
2026-04-26 07:58:13 -07:00
2026-04-08 17:04:40 -07:00
2026-03-31 18:47:49 -07:00
2026-04-08 17:04:40 -07:00
2026-03-27 21:26:19 -07:00
2026-03-26 09:22:02 -07:00
2026-04-18 01:07:25 -07:00
2026-04-18 01:07:25 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-18 01:05:22 -07:00
2026-04-08 17:04:40 -07:00
2026-04-26 07:58:13 -07:00
2026-04-26 09:01:29 -07:00
2026-04-26 10:24:21 -07:00
2026-04-26 19:12:22 -07:00
2026-04-26 07:58:13 -07:00
2026-04-27 17:35:37 -07:00
2026-04-26 09:14:45 -07:00
2026-04-26 19:12:22 -07:00
2026-04-26 10:24:21 -07:00
2026-04-26 07:58:13 -07:00
2026-04-26 07:58:13 -07:00
2026-03-26 09:22:02 -07:00
2026-04-08 17:04:40 -07:00
2026-04-08 17:04:40 -07:00
2026-04-18 16:06:28 -07:00
2026-03-26 09:22:02 -07:00
2026-03-26 23:38:06 -07:00
2026-03-26 23:38:06 -07:00
2026-03-26 23:38:06 -07:00
2026-03-26 09:22:02 -07:00
2026-04-08 17:04:40 -07:00
2026-03-26 09:22:02 -07:00
2026-04-08 17:04:40 -07:00
2026-04-18 01:07:25 -07:00
2026-04-08 17:04:40 -07:00
2026-03-26 09:22:02 -07:00
2026-03-22 10:09:57 -07:00
2026-04-18 01:06:50 -07:00
2026-03-26 09:22:02 -07:00
2026-03-26 09:22:02 -07:00
2026-03-26 09:22:02 -07:00
2026-03-26 09:22:02 -07:00
2026-03-26 09:22:02 -07:00
2026-04-18 14:11:59 -07:00
2026-04-18 01:06:50 -07:00
2026-04-18 14:11:59 -07:00
2026-04-18 14:11:59 -07:00
2026-04-18 14:11:59 -07:00
2026-04-26 20:38:16 -07:00
2026-03-09 00:09:11 -07:00
2026-03-10 16:58:15 -07:00
2026-04-26 10:09:32 -07:00
2026-04-08 17:04:40 -07:00
2026-04-08 17:04:40 -07:00
2026-04-08 17:04:40 -07:00
2026-04-18 01:07:25 -07:00
2026-04-18 01:07:25 -07:00
2026-03-27 21:26:19 -07:00
2026-03-27 11:55:47 -07:00
2026-03-30 17:11:45 -07:00
2026-04-08 17:04:40 -07:00
2026-03-26 09:22:02 -07:00
2026-04-08 17:04:40 -07:00
2026-04-26 10:24:21 -07:00
2026-03-30 17:11:45 -07:00
2026-03-11 00:45:25 -07:00
2026-03-08 18:25:18 -07:00
2026-03-27 11:55:47 -07:00
2026-03-26 09:22:02 -07:00
2026-03-10 18:08:05 -07:00
2026-04-08 17:04:40 -07:00
2026-03-08 18:25:18 -07:00
2026-04-18 01:07:25 -07:00
2026-04-08 17:04:40 -07:00
2026-03-26 09:22:02 -07:00
2026-03-11 00:45:25 -07:00
2026-04-10 16:50:49 -07:00
2026-03-08 18:25:18 -07:00
2026-04-08 17:04:40 -07:00
2026-04-18 01:07:25 -07:00
2026-03-29 20:51:28 -07:00
2026-03-29 09:27:00 -07:00
2026-04-18 01:07:25 -07:00
2026-04-08 17:04:40 -07:00
2026-04-08 17:04:40 -07:00
2026-04-26 10:09:32 -07:00
2026-03-11 00:45:25 -07:00
2026-03-29 16:24:59 -07:00
2026-03-26 09:22:02 -07:00
2026-04-01 18:58:33 -07:00
2026-04-10 16:50:49 -07:00
2026-03-29 16:24:59 -07:00
2026-04-18 01:07:25 -07:00
2026-04-08 17:04:40 -07:00
2026-04-08 15:24:49 -07:00