Tom Boucher
4dd35f6b69
fix(state): correct TOCTOU races, busy-wait, lock cleanup, and config locking ( #1944 )
...
cmdStateUpdateProgress, cmdStateAddDecision, cmdStateAddBlocker,
cmdStateResolveBlocker, cmdStateRecordSession, and cmdStateBeginPhase from
bare readFileSync+writeStateMd to readModifyWriteStateMd, eliminating the
TOCTOU window where two concurrent callers read the same content and the
second write clobbers the first.
Atomics.wait(), matching the pattern already used in withPlanningLock in
core.cjs.
and core.cjs and register a process.on('exit') handler to unlink them on
process exit. The exit event fires even when process.exit(1) is called
inside a locked region, eliminating stale lock files after errors.
read-modify-write body of setConfigValue in a planning lock, preventing
concurrent config-set calls from losing each other's writes.
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-07 17:39:29 -04:00
..
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-07 17:27:20 -04:00
2026-04-05 23:07:52 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 07:58:27 -04:00
2026-04-04 07:24:31 -04:00
2026-04-05 23:11:18 -04:00
2026-04-07 08:13:52 -04:00
2026-04-05 17:49:20 -04:00
2026-04-05 17:32:18 -04:00
2026-04-05 18:05:32 -04:00
2026-04-05 18:20:11 -04:00
2026-04-05 23:11:16 -04:00
2026-04-07 17:36:47 -04:00
2026-04-07 17:26:29 -04:00
2026-04-07 17:19:10 -04:00
2026-04-07 17:28:23 -04:00
2026-04-07 08:13:58 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-06 15:14:02 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 15:12:58 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 19:43:45 -04:00
2026-04-05 11:37:27 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 17:02:20 -04:00
2026-04-04 14:29:03 -04:00
2026-04-07 08:13:49 -04:00
2026-04-07 17:25:11 -04:00
2026-04-05 19:09:19 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 19:43:45 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 09:15:41 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-01 08:47:31 -06:00
2026-04-04 14:29:03 -04:00
2026-04-05 10:23:41 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 18:33:27 -04:00
2026-04-05 18:33:17 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 15:50:01 -04:00
2026-04-06 15:19:46 -04:00
2026-04-05 11:30:38 -04:00
2026-04-04 14:37:54 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:15:30 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 18:33:24 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 23:07:59 -04:00
2026-04-05 18:33:15 -04:00
2026-04-04 14:15:30 -04:00
2026-04-05 19:09:14 -04:00
2026-04-07 17:39:29 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-07 17:26:31 -04:00
2026-04-04 14:29:03 -04:00
2026-04-06 08:54:18 -04:00
2026-04-04 15:52:13 -04:00
2026-04-05 17:03:17 -04:00
2026-04-04 14:15:30 -04:00
2026-04-05 18:05:32 -04:00
2026-04-07 08:13:46 -04:00
2026-04-05 17:05:06 -04:00
2026-04-04 14:29:03 -04:00
2026-04-03 12:47:24 +03:00
2026-04-05 09:15:19 -04:00
2026-04-06 15:13:23 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-03 13:32:05 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 12:41:17 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 20:03:47 -04:00
2026-04-05 10:23:41 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 10:23:41 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 07:35:18 -04:00
2026-04-04 14:29:03 -04:00
2026-04-06 15:20:06 -04:00
2026-04-04 07:14:24 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 17:04:33 -04:00
2026-04-01 16:53:20 -04:00
2026-04-04 14:29:03 -04:00
2026-03-24 13:33:58 -04:00
2026-04-05 20:22:52 -04:00
2026-04-04 07:10:21 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 10:23:41 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 17:49:20 -04:00
2026-04-05 17:04:08 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-05 17:00:30 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-02 18:55:17 -03:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-04 14:29:03 -04:00
2026-04-06 08:40:37 -04:00
2026-04-05 22:54:12 -04:00
2026-04-05 12:30:24 -04:00
2026-04-05 10:23:41 -04:00
2026-04-02 21:36:36 -05:00
2026-04-04 14:29:03 -04:00
2026-04-05 11:11:38 -04:00
2026-04-04 14:29:03 -04:00