Neil
20a12a6a46
perf(codex): share one launch-prep hook install across a spawn burst ( #17669 )
...
* perf(codex): share one launch-prep hook install across a spawn burst
Codex launch prep runs a full managed-hook install on every local PTY
spawn, and both install lanes serialize globally per Codex home. Opening
a multi-pane worktree therefore paid N full installs back to back, and a
resumed Codex pane prepares twice. Concurrent spawns for the same runtime
home now share one run; the promise is dropped as soon as it settles, so
the next launch still re-reads hooks.json and the user's trust state.
Also split the `host_env` spawn-timing phase, which spanned the entire
Codex preamble and pinned that cost on the env builder that ran last.
* refactor(codex): unify the two hook-install single-flight lanes
Both the WSL and launch-prep lanes now share one generic in-flight helper
instead of duplicating the map bookkeeping. Also routes the WSL launch-prep
install through the serialized variant, which closes the same per-spawn
serialization gap on WSL that the native lane just got.
* refactor: extract the shared in-flight run dedupe
The codex hook service and the GitHub conflict-summary cache had grown
near-identical private copies of the same single-flight helper. Both now
use one module, which also keeps the hook service clear of the 300-line
budget. The shared copy keeps the identity check on clear so a late settle
cannot evict a newer entry for the same key.
2026-08-31 15:16:38 -07:00
..
2026-07-23 18:35:31 -07:00
2026-07-27 17:53:41 -07:00
2026-07-27 17:53:41 -07:00
2026-08-17 02:19:57 -07:00
2026-08-17 02:19:57 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-07-20 14:34:53 -07:00
2026-08-28 16:45:58 -07:00
2026-08-26 16:44:55 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-24 23:12:37 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-26 14:33:34 -07:00
2026-08-26 14:33:34 -07:00
2026-07-20 14:34:53 -07:00
2026-07-23 16:08:46 -07:00
2026-07-23 16:08:46 -07:00
2026-07-23 16:08:46 -07:00
2026-07-23 16:08:46 -07:00
2026-07-20 14:34:53 -07:00
2026-08-18 14:10:32 -07:00
2026-08-29 20:21:14 -07:00
2026-07-21 15:12:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-31 15:16:38 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-29 20:21:14 -07:00
2026-08-24 10:47:54 -07:00
2026-08-30 17:54:13 -07:00
2026-08-26 17:00:21 -07:00
2026-08-26 17:00:21 -07:00
2026-07-27 17:53:41 -07:00
2026-08-26 16:44:55 -07:00
2026-07-20 14:34:53 -07:00
2026-07-20 14:34:53 -07:00
2026-07-20 14:34:53 -07:00
2026-08-23 13:52:18 -07:00
2026-08-23 13:52:18 -07:00
2026-08-31 11:20:22 -07:00
2026-08-31 11:20:22 -07:00
2026-08-31 11:20:22 -07:00
2026-08-31 11:20:22 -07:00
2026-08-18 14:10:32 -07:00
2026-07-20 14:34:53 -07:00
2026-08-31 13:12:19 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-11 21:16:36 -07:00
2026-08-11 21:16:36 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-07 16:53:41 -07:00
2026-08-26 15:42:54 -07:00
2026-07-20 14:34:53 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-07-06 21:47:02 -07:00
2026-07-27 17:53:41 -07:00
2026-07-23 18:35:31 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-24 23:12:37 -07:00
2026-08-26 23:37:16 -07:00
2026-08-26 15:42:54 -07:00
2026-07-27 17:53:41 -07:00
2026-08-11 00:33:17 -07:00
2026-08-11 00:33:17 -07:00
2026-08-11 00:33:17 -07:00
2026-08-26 15:42:54 -07:00
2026-08-26 15:42:54 -07:00
2026-08-11 18:19:43 -07:00
2026-08-17 15:12:12 -07:00
2026-07-27 18:06:30 -07:00
2026-07-27 18:06:30 -07:00
2026-07-31 11:59:05 -07:00
2026-08-17 15:12:12 -07:00
2026-07-06 21:47:02 -07:00
2026-08-13 22:48:24 -07:00
2026-08-31 11:20:22 -07:00
2026-08-23 13:52:18 -07:00
2026-08-29 14:13:35 -07:00
2026-08-24 23:12:37 -07:00
2026-08-07 14:06:29 -07:00
2026-08-07 14:06:29 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-26 16:44:55 -07:00
2026-08-27 13:05:12 -07:00
2026-08-26 16:44:55 -07:00
2026-07-23 18:35:31 -07:00
2026-07-23 18:35:31 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-07-23 18:35:31 -07:00
2026-08-23 13:52:18 -07:00
2026-08-26 16:44:55 -07:00
2026-07-22 17:12:22 -07:00
2026-08-26 16:44:55 -07:00
2026-08-24 23:15:01 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-28 16:45:58 -07:00
2026-08-31 13:12:19 -07:00
2026-07-27 18:06:30 -07:00
2026-08-24 23:12:37 -07:00
2026-07-20 14:34:53 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-18 02:12:21 -07:00
2026-08-18 02:12:21 -07:00
2026-07-23 16:08:46 -07:00
2026-08-23 13:52:18 -07:00
2026-07-23 16:08:46 -07:00
2026-08-18 14:10:32 -07:00
2026-07-24 13:38:10 -07:00
2026-08-26 14:33:34 -07:00
2026-08-23 13:52:18 -07:00
2026-08-23 13:52:18 -07:00
2026-08-24 23:15:01 -07:00
2026-07-24 13:38:10 -07:00
2026-08-24 23:15:01 -07:00
2026-08-24 23:15:01 -07:00
2026-08-24 23:15:01 -07:00
2026-07-23 16:08:46 -07:00
2026-07-20 14:34:53 -07:00
2026-08-24 23:15:01 -07:00
2026-07-24 13:38:10 -07:00
2026-08-24 23:15:01 -07:00
2026-08-24 23:15:01 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-07-20 14:34:53 -07:00
2026-08-15 00:54:20 -07:00
2026-08-15 00:54:20 -07:00
2026-08-24 23:15:01 -07:00
2026-08-31 15:16:38 -07:00
2026-08-26 16:44:55 -07:00
2026-08-27 10:48:53 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-31 11:20:22 -07:00
2026-08-29 20:21:14 -07:00
2026-08-26 16:44:55 -07:00
2026-08-18 14:14:44 -07:00
2026-08-27 13:05:12 -07:00
2026-08-26 16:44:55 -07:00
2026-08-27 13:05:12 -07:00
2026-08-27 13:05:12 -07:00
2026-08-26 16:44:55 -07:00
2026-08-26 16:44:55 -07:00
2026-08-18 14:14:44 -07:00
2026-08-18 14:10:32 -07:00
2026-08-23 13:52:18 -07:00
2026-08-31 11:20:22 -07:00
2026-08-31 11:20:22 -07:00
2026-08-31 11:20:22 -07:00