Codex
0ca24debfd
feat(primer): broaden Codex alignment hold to all real consumers; pre+post slot window
...
Address review gaps in the primer-alignment hold so the fixed-slot primer
reliably wins the first-request race for the shared Codex window:
- Extract the time-based hold into a dependency-free leaf module
(codex-primer-alignment.ts) so every Codex path can share it without import
cycles.
- Add a pre-slot hold window (2 min) in addition to the post-slot (5 min) and
the 04-08 KST dawn gap, closing the "request a beat before the slot" gap.
- Hold the dashboard's periodic Codex warm-up too: runCodexWarmupCycle now
skips during the hold unless called with isPrimer (the scheduled primer sets
it), so the warm-up can't anchor the window ahead of the primer.
- Remove the urgent @-mention bypass on the reviewer/arbiter and owner holds —
the reset is anchored unconditionally as requested.
- Reviewer/arbiter hold resumes exactly once after the window via the existing
per-revision claim (poll re-detect; no double run).
Note: the unified lease boundary (syncHostCodexSessionFiles) is synchronous and
throws a terminal "Codex unavailable", so it can't host a clean defer+resume;
gating stays at the async turn-scheduling layer that can re-queue. Honest caveat
unchanged: making the primer first is necessary but not sufficient to pin a
trailing reset.
Verified: typecheck, build, bundle-smoke; full suite 1482 passing with only the
9 pre-existing env-config baseline failures (service-routing/paired-context/
migrate-room owner=claude vs codex-main); new alignment + warmup-hold tests pass.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-06-09 15:01:21 +09:00
..
2026-06-03 22:18:26 +09:00
2026-06-09 02:15:21 +09:00
2026-06-09 02:24:44 +09:00
2026-05-31 16:57:49 +09:00
2026-04-07 05:12:22 +09:00
2026-06-02 00:21:53 +09:00
2026-06-02 00:21:53 +09:00
2026-04-07 00:45:55 +09:00
2026-06-02 05:30:04 +09:00
2026-06-08 21:15:39 +09:00
2026-05-29 19:42:21 +09:00
2026-05-26 17:26:20 +09:00
2026-06-03 01:14:39 +08:00
2026-06-03 01:14:39 +08:00
2026-05-29 19:42:21 +09:00
2026-06-08 21:15:39 +09:00
2026-03-25 07:08:49 +09:00
2026-06-07 23:01:23 +09:00
2026-06-06 18:47:04 +09:00
2026-03-30 22:33:42 +09:00
2026-04-04 03:52:28 +09:00
2026-05-02 22:02:13 +09:00
2026-05-27 10:53:31 +09:00
2026-04-10 21:04:23 +09:00
2026-04-09 14:29:14 +09:00
2026-04-09 14:29:14 +09:00
2026-05-23 12:18:42 +09:00
2026-05-23 12:18:42 +09:00
2026-03-26 16:37:00 +09:00
2026-05-27 10:53:31 +09:00
2026-04-29 22:20:06 +09:00
2026-05-23 12:18:42 +09:00
2026-06-03 08:30:24 +08:00
2026-05-23 11:12:55 +09:00
2026-06-09 15:01:21 +09:00
2026-06-09 15:01:21 +09:00
2026-06-02 18:37:37 +08:00
2026-06-02 05:30:04 +09:00
2026-04-24 15:02:09 +09:00
2026-06-08 21:15:39 +09:00
2026-06-09 15:01:21 +09:00
2026-06-09 15:01:21 +09:00
2026-05-25 22:57:52 +09:00
2026-05-25 22:57:52 +09:00
2026-05-25 03:27:49 +09:00
2026-06-09 02:15:21 +09:00
2026-05-03 23:56:07 +09:00
2026-05-04 00:22:03 +09:00
2026-03-23 06:39:26 +09:00
2026-04-10 21:04:23 +09:00
2026-03-28 05:40:38 +09:00
2026-03-25 12:32:41 +09:00
2026-04-10 21:04:23 +09:00
2026-04-10 21:04:23 +09:00
2026-05-27 10:53:31 +09:00
2026-05-27 10:53:31 +09:00
2026-05-31 16:57:49 +09:00
2026-05-26 02:04:04 +09:00
2026-05-30 00:08:28 +09:00
2026-04-24 15:02:09 +09:00
2026-06-02 05:30:04 +09:00
2026-04-29 22:20:06 +09:00
2026-05-31 16:20:09 +09:00
2026-04-29 20:04:47 +09:00
2026-05-31 16:57:49 +09:00
2026-05-29 05:38:31 +09:00
2026-05-17 01:02:40 +08:00
2026-04-29 01:23:29 +09:00
2026-06-08 21:15:39 +09:00
2026-05-27 10:53:31 +09:00
2026-05-26 02:04:04 +09:00
2026-05-30 00:08:28 +09:00
2026-05-30 00:30:31 +09:00
2026-04-29 13:31:11 +09:00
2026-04-10 22:09:04 +09:00
2026-04-10 21:04:23 +09:00
2026-03-26 20:57:59 +09:00
2026-04-29 13:31:11 +09:00
2026-05-28 17:07:30 +09:00
2026-05-30 00:08:28 +09:00
2026-03-23 07:18:47 +09:00
2026-03-28 21:14:25 +09:00
2026-03-25 04:59:49 +09:00
2026-06-03 19:10:53 +08:00
2026-06-03 19:10:53 +08:00
2026-06-03 19:10:53 +08:00
2026-05-28 17:07:30 +09:00
2026-05-29 05:38:31 +09:00
2026-05-30 00:08:28 +09:00
2026-04-29 00:07:06 +09:00
2026-06-08 21:15:39 +09:00
2026-05-31 16:57:49 +09:00
2026-04-11 05:49:40 +09:00
2026-05-02 19:50:32 +09:00
2026-05-02 22:02:13 +09:00
2026-05-30 00:03:15 +09:00
2026-05-27 07:51:12 +09:00
2026-05-31 16:57:49 +09:00
2026-03-25 22:00:36 +09:00
2026-04-29 13:31:11 +09:00
2026-03-31 01:49:34 +09:00
2026-04-07 05:12:22 +09:00
2026-04-08 19:05:19 +09:00
2026-05-25 22:57:52 +09:00
2026-06-02 00:21:53 +09:00
2026-06-03 19:10:53 +08:00
2026-04-11 06:06:02 +09:00
2026-05-29 19:47:36 +09:00
2026-05-31 16:20:09 +09:00
2026-06-03 01:14:39 +08:00
2026-06-03 01:14:39 +08:00
2026-06-03 01:14:39 +08:00
2026-05-29 19:52:20 +09:00
2026-06-02 18:37:37 +08:00
2026-06-03 19:10:53 +08:00
2026-05-26 03:25:38 +09:00
2026-03-23 06:39:26 +09:00
2026-04-29 11:27:32 +09:00
2026-04-29 11:27:32 +09:00
2026-06-03 22:18:26 +09:00
2026-05-29 19:15:14 +09:00
2026-05-29 19:15:14 +09:00
2026-05-02 22:02:13 +09:00
2026-05-02 22:02:13 +09:00
2026-04-11 04:18:43 +09:00
2026-05-31 17:17:38 +09:00
2026-05-21 03:46:59 +09:00
2026-06-04 22:24:56 +08:00
2026-06-09 15:01:21 +09:00
2026-06-09 15:01:21 +09:00
2026-06-09 15:01:21 +09:00
2026-04-29 11:54:38 +09:00
2026-04-29 11:54:38 +09:00
2026-04-29 22:45:09 +09:00
2026-05-29 19:15:14 +09:00
2026-05-29 19:15:14 +09:00
2026-04-30 00:58:39 +09:00
2026-05-31 22:30:49 +09:00
2026-05-31 22:30:49 +09:00
2026-05-26 05:44:54 +09:00
2026-06-04 22:25:00 +08:00
2026-04-30 00:45:04 +09:00
2026-04-15 01:21:00 +09:00
2026-06-09 15:01:21 +09:00
2026-04-29 11:03:16 +09:00
2026-04-29 11:03:16 +09:00
2026-04-24 12:03:32 +09:00
2026-05-29 19:15:14 +09:00
2026-04-08 02:23:32 +09:00
2026-04-07 23:48:07 +09:00
2026-05-31 17:17:38 +09:00
2026-05-31 17:17:38 +09:00
2026-05-29 19:15:14 +09:00
2026-05-26 03:25:38 +09:00
2026-04-10 11:44:34 +09:00
2026-06-04 22:24:56 +08:00
2026-05-27 12:43:15 +09:00
2026-05-30 01:56:41 +09:00
2026-05-30 01:56:41 +09:00
2026-06-08 21:15:39 +09:00
2026-06-08 21:15:39 +09:00
2026-04-30 01:31:05 +09:00
2026-06-02 18:37:37 +08:00
2026-05-26 17:26:20 +09:00
2026-06-03 01:26:57 +08:00
2026-06-03 01:14:39 +08:00
2026-06-09 02:15:21 +09:00
2026-06-03 01:37:22 +08:00
2026-06-03 01:37:22 +08:00
2026-06-09 02:15:21 +09:00
2026-05-31 16:20:09 +09:00
2026-06-04 22:25:00 +08:00
2026-06-09 02:15:21 +09:00
2026-06-09 02:15:21 +09:00
2026-06-03 01:14:39 +08:00
2026-06-09 02:15:21 +09:00
2026-06-09 02:15:21 +09:00
2026-04-10 11:44:34 +09:00
2026-04-09 16:31:01 +09:00
2026-04-29 10:22:33 +09:00
2026-04-29 10:44:28 +09:00
2026-06-09 02:15:21 +09:00
2026-04-06 20:38:10 +09:00
2026-04-06 19:53:26 +09:00
2026-04-10 11:44:34 +09:00
2026-04-20 13:33:13 +09:00
2026-05-31 14:49:56 +09:00
2026-05-31 14:49:56 +09:00
2026-04-11 09:18:47 +09:00
2026-05-31 16:20:09 +09:00
2026-05-31 16:20:09 +09:00
2026-04-25 12:02:02 +09:00
2026-04-29 13:31:11 +09:00
2026-05-21 05:59:39 +09:00
2026-03-31 13:55:41 +09:00
2026-06-02 00:21:53 +09:00
2026-06-02 00:21:53 +09:00
2026-03-31 00:10:23 +09:00
2026-05-27 10:53:31 +09:00
2026-05-27 10:53:31 +09:00
2026-03-31 09:41:40 +09:00
2026-03-31 09:41:40 +09:00
2026-04-04 03:50:28 +09:00
2026-04-10 15:22:45 +09:00
2026-04-10 15:22:45 +09:00
2026-05-04 03:27:35 +09:00
2026-05-04 03:27:35 +09:00
2026-05-27 14:52:33 +09:00
2026-05-27 14:52:33 +09:00
2026-04-29 13:31:11 +09:00
2026-05-04 02:38:21 +09:00
2026-05-04 02:38:21 +09:00
2026-05-17 01:02:40 +08:00
2026-05-17 01:02:40 +08:00
2026-04-29 13:31:11 +09:00
2026-03-04 18:05:45 +02:00
2026-04-15 23:47:46 +09:00
2026-04-15 23:47:46 +09:00
2026-04-29 22:20:06 +09:00
2026-04-29 22:20:06 +09:00
2026-04-10 21:04:23 +09:00
2026-05-27 14:52:33 +09:00
2026-05-19 21:52:54 +09:00
2026-05-19 21:52:54 +09:00
2026-05-23 12:18:42 +09:00
2026-05-23 12:18:42 +09:00
2026-04-30 01:31:05 +09:00
2026-04-30 01:31:05 +09:00
2026-05-23 12:18:42 +09:00
2026-06-03 08:30:24 +08:00
2026-05-21 03:46:59 +09:00
2026-04-04 03:52:28 +09:00
2026-04-01 03:59:47 +09:00
2026-04-11 13:48:54 +09:00
2026-04-11 13:48:54 +09:00
2026-05-02 02:06:20 +09:00
2026-05-02 02:06:20 +09:00
2026-06-02 18:37:37 +08:00
2026-06-02 18:37:37 +08:00
2026-05-29 04:00:28 +09:00
2026-05-29 04:00:28 +09:00
2026-05-29 04:00:28 +09:00
2026-05-26 04:17:59 +09:00
2026-05-26 04:17:59 +09:00
2026-04-10 21:04:23 +09:00
2026-06-02 05:30:04 +09:00
2026-06-02 05:30:04 +09:00
2026-05-29 04:00:28 +09:00
2026-06-03 08:30:24 +08:00
2026-06-03 08:30:24 +08:00
2026-03-06 18:28:29 +02:00
2026-03-06 18:28:29 +02:00
2026-03-26 16:37:00 +09:00
2026-04-06 07:56:24 +09:00
2026-03-25 03:56:03 +09:00
2026-04-11 14:32:43 +09:00
2026-04-29 13:31:11 +09:00
2026-05-30 00:03:15 +09:00
2026-06-09 02:15:21 +09:00
2026-05-27 10:53:31 +09:00
2026-05-29 18:47:46 +09:00
2026-05-27 10:53:31 +09:00
2026-06-09 15:01:21 +09:00
2026-06-09 15:01:21 +09:00
2026-03-25 04:59:49 +09:00
2026-05-16 17:59:59 +08:00
2026-04-24 15:02:09 +09:00
2026-05-16 18:16:50 +08:00
2026-04-28 17:24:38 +09:00
2026-05-25 03:27:49 +09:00
2026-05-31 14:49:56 +09:00
2026-05-02 19:58:05 +09:00
2026-06-03 08:30:27 +08:00
2026-04-28 20:18:57 +09:00
2026-04-28 19:34:43 +09:00
2026-05-02 19:58:05 +09:00
2026-04-28 19:08:58 +09:00
2026-04-28 01:35:26 +09:00
2026-04-28 20:18:57 +09:00
2026-04-28 19:20:39 +09:00
2026-04-29 01:23:29 +09:00
2026-04-29 01:23:29 +09:00
2026-04-28 17:43:20 +09:00
2026-04-28 17:43:20 +09:00
2026-05-02 19:58:05 +09:00
2026-06-03 08:30:21 +08:00
2026-04-28 18:19:42 +09:00
2026-04-28 18:19:42 +09:00
2026-05-23 12:18:42 +09:00
2026-05-23 12:18:42 +09:00
2026-04-28 18:56:26 +09:00
2026-05-30 01:56:41 +09:00
2026-05-27 12:43:15 +09:00
2026-06-03 08:30:21 +08:00