Brennan Benson
d691486b3f
fix(codex): a message whose turn was stopped before Codex took it is withdrawn, not stuck ( #23618 )
...
* fix(native-chat): land a late settlement from a streamed turn's end after that turn's rows
A settlement that says a streamed turn ended waits for the session's event
sink to drain before writing its dispatch row. The journal reducer still
refuses to overwrite an accepted or rejected send.
* fix(codex): settle a send from the end of the turn Codex answered it into
The turn/start answer names the turn that holds a send. The send's echo
entry now keeps that binding, in memory only. If the bound turn is
interrupted without echoing the send, the send is withdrawn: Codex clears a
turn's pending input on interrupt, so the model never saw it. If the turn
fails first, the send is rejected in Codex's words. A completed turn settles
nothing, since Codex records pending input when it finishes and the echo is
still due. An answer read after its turn already ended is settled by that
end. The echo is still the acceptance and carries the item key.
* test(codex): a send settles from the end of the turn Codex answered it into
The fake Codex keeps 0.157's turn bookkeeping, and can deliver the turn/start
answer after turn/started or after turn/completed. The tests cover:
- a Stop before any echo withdraws the send, and the working rule reads idle;
- a steered follow-up is withdrawn when the turn is interrupted;
- a failed turn rejects the send in Codex's words;
- a completed turn leaves the send to its echo;
- a normal echo and a late echo;
- two steered sends in one turn;
- an answer read after the turn ended;
- a timed-out answer;
- child-thread turns;
- how a binding dies.
* refactor(native-chat): drop the stream flush before a late turn-end settlement
Nothing reads the order of a dispatch row against the turn's terminal row:
the reducer keeps a settled send terminal and the working state is derived
from both. The echo acceptance on the same path never waited either, and the
wait could drop the settlement on a failed sink barrier.
* fix(codex): settle a failed turn's sends at its end, not at its error
Codex keeps a failed turn's pending input and records it after the error
frame, before turn/completed. Settling at the error rejected a steered
follow-up the model had in fact received, so a Retry would send it twice.
* docs(codex): say a completed turn echoes what it took before it ends
Codex records a completed turn's pending input before `turn/completed`, so
a bound send that turn never echoed is left for recovery, not awaiting an
echo. The comments and one test title said the echo was still due.
* test(codex): settle a send whose answer is read after its turn failed or completed
A failed turn that ended before the answer rejects the send in Codex's words,
once; a completed one leaves it admitted and still armed for its echo.
* refactor(codex): read a failed turn's reason with the typed thread-fact reader
2026-09-28 11:42:03 -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-09-20 14:41:50 -07:00
2026-09-20 14:41:50 -07:00
2026-07-20 14:34:53 -07:00
2026-09-07 09:18:38 -07:00
2026-09-07 09:18:38 -07:00
2026-09-25 21:04:31 -07:00
2026-09-28 01:53:11 -07:00
2026-09-25 21:04:31 -07:00
2026-09-28 01:53:11 -07:00
2026-09-28 01:53:11 -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-09-04 00:53:31 -07:00
2026-09-04 00:53:31 -07:00
2026-09-07 09:18:38 -07:00
2026-09-28 01:53:11 -07:00
2026-08-31 13:12:19 -07:00
2026-09-06 11:49:42 -07:00
2026-09-28 01:53:11 -07:00
2026-09-06 11:49:42 -07:00
2026-09-24 23:04:07 -07:00
2026-08-28 16:45:58 -07:00
2026-09-09 00:13:20 -07:00
2026-09-10 12:16:30 -07:00
2026-09-09 00:13:20 -07:00
2026-09-10 12:16:30 -07:00
2026-09-10 12:16:30 -07:00
2026-09-05 15:33:04 -07:00
2026-09-09 00:13:20 -07:00
2026-09-25 21:37:54 -07:00
2026-09-25 21:37:54 -07:00
2026-09-25 21:37:54 -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-09-25 14:29:08 -07:00
2026-09-24 23:04:07 -07:00
2026-09-24 23:04:07 -07:00
2026-09-25 14:29:08 -07:00
2026-09-25 14:29:08 -07:00
2026-09-11 11:00:09 -07:00
2026-09-11 11:00:09 -07:00
2026-09-23 10:34:06 -07:00
2026-07-20 14:34:53 -07:00
2026-08-18 14:10:32 -07:00
2026-09-16 00:30:52 -07:00
2026-07-21 15:12:14 -07:00
2026-09-11 21:22:06 -07:00
2026-09-11 21:22:06 -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-09-20 14:41:50 -07:00
2026-09-20 14:41:50 -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-09-07 16:21:47 -07:00
2026-08-30 17:54:13 -07:00
2026-09-05 15:33:04 -07:00
2026-09-09 00:13:20 -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-09-24 23:04:07 -07:00
2026-09-24 23:04:07 -07:00
2026-07-20 14:34:53 -07:00
2026-07-20 14:34:53 -07:00
2026-09-11 00:19:57 -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-09-27 01:14:53 -07:00
2026-09-25 10:17:36 -07:00
2026-09-25 10:17:36 -07:00
2026-07-20 14:34:53 -07:00
2026-09-14 14:59:03 -07:00
2026-09-17 20:12:11 -07:00
2026-09-17 20:12:11 -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-09-14 13:37:13 -07:00
2026-09-01 04:21:43 -07:00
2026-09-01 04:21:43 -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-09-08 19:53:24 -07:00
2026-09-08 19:53:24 -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-09-15 01:59:58 -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-09-24 23:04:07 -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-09-06 20:24:21 -07:00
2026-09-06 20:24:21 -07:00
2026-09-28 01:53:11 -07:00
2026-09-28 01:53:11 -07:00
2026-09-17 12:59:03 -07:00
2026-09-16 15:54:04 -07:00
2026-09-28 11:42:03 -07:00
2026-09-28 11:42:03 -07:00
2026-09-14 13:37:13 -07:00
2026-09-13 21:58:32 -07:00
2026-09-09 00:13:20 -07:00
2026-09-24 13:33:56 -07:00
2026-08-31 13:12:19 -07:00
2026-09-24 13:33:56 -07:00
2026-09-15 02:00:27 -07:00
2026-09-11 00:19:57 -07:00
2026-09-07 16:21:47 -07:00
2026-09-24 13:33:56 -07:00
2026-09-21 12:44:13 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-11 11:00:09 -07:00
2026-09-24 13:33:56 -07:00
2026-09-21 12:44:13 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-24 13:33:56 -07:00
2026-09-21 12:44:13 -07:00
2026-09-24 13:33:56 -07:00
2026-09-18 02:41:40 -04:00
2026-09-14 00:23:20 -07:00
2026-09-10 14:32:50 -07:00
2026-09-24 13:33:56 -07:00
2026-09-09 00:13:20 -07:00
2026-09-24 13:33:56 -07:00
2026-09-18 02:41:40 -04:00
2026-09-16 15:54:04 -07:00
2026-09-21 12:44:13 -07:00
2026-09-21 12:44:13 -07:00
2026-08-31 13:12:19 -07:00
2026-09-24 13:33:56 -07:00
2026-09-21 12:44:13 -07:00
2026-09-24 13:33:56 -07:00
2026-09-27 21:54:37 -07:00
2026-09-27 21:54:37 -07:00
2026-09-07 09:18:38 -07:00
2026-09-07 09:18:38 -07:00
2026-09-24 23:04:07 -07:00
2026-09-16 15:54:04 -07:00
2026-09-24 21:43:04 -07:00
2026-09-25 21:04:31 -07:00
2026-09-16 18:21:52 -07:00
2026-09-16 18:21:52 -07:00
2026-08-31 13:12:19 -07:00
2026-08-31 13:12:19 -07:00
2026-09-25 15:54:46 -07:00
2026-09-25 15:54:46 -07:00
2026-09-25 15:54:46 -07:00
2026-09-25 15:54:46 -07:00
2026-09-16 15:54:04 -07:00
2026-09-28 03:03:15 -04:00
2026-09-07 12:20:24 -07:00
2026-09-07 12:20:24 -07:00
2026-09-28 01:53:11 -07:00
2026-09-13 21:58:32 -07:00
2026-09-28 01:53:11 -07:00
2026-09-28 01:53:11 -07:00
2026-09-28 11:42:03 -07:00
2026-09-14 00:23:20 -07:00
2026-09-14 13:37:13 -07:00
2026-09-25 21:04:31 -07:00
2026-09-28 01:53:11 -07:00
2026-09-28 01:53:11 -07:00
2026-09-24 23:04:07 -07:00
2026-09-16 18:21:52 -07:00
2026-09-24 23:04:07 -07:00
2026-08-28 16:45:58 -07:00
2026-09-28 11:42:03 -07:00
2026-09-09 00:13:20 -07:00
2026-09-28 11:42:03 -07:00
2026-09-23 10:34:06 -07:00
2026-09-23 10:34:06 -07:00
2026-09-27 21:54:37 -07:00
2026-09-27 21:54:37 -07:00
2026-09-14 14:59:03 -07:00
2026-09-28 11:42:03 -07:00
2026-09-28 11:42:03 -07:00
2026-08-28 16:45:58 -07:00
2026-09-04 16:42:42 -07:00
2026-09-28 11:42:03 -07:00
2026-09-09 00:13:20 -07:00
2026-09-09 00:13:20 -07:00
2026-09-15 01:24:30 -07:00
2026-09-24 13:33:56 -07:00
2026-09-09 00:13:20 -07:00
2026-09-24 13:33:56 -07:00
2026-09-09 00:13:20 -07:00
2026-09-24 13:33:56 -07:00
2026-09-05 15:33:04 -07:00
2026-09-07 13:51:47 -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-09-28 11:42:03 -07:00
2026-09-07 22:21:39 -07:00
2026-09-14 13:37:13 -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-09-20 14:41:50 -07:00
2026-09-20 14:41:50 -07:00
2026-09-11 21:22:10 -07:00
2026-09-11 21:22:10 -07:00
2026-09-11 21:22:10 -07:00
2026-09-25 21:37:54 -07:00
2026-07-23 16:08:46 -07:00
2026-08-18 14:10:32 -07:00
2026-09-25 14:29:08 -07:00
2026-09-25 21:37:54 -07:00
2026-09-25 14:29:08 -07:00
2026-09-25 14:29:08 -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-09-08 19:44:31 -07:00
2026-08-24 23:15:01 -07:00
2026-09-08 19:44:31 -07:00
2026-07-23 16:08:46 -07:00
2026-09-25 21:37:54 -07:00
2026-09-25 21:37:54 -07:00
2026-09-25 21:37:54 -07:00
2026-09-11 21:22:10 -07:00
2026-08-24 23:15:01 -07:00
2026-09-11 21:22:10 -07:00
2026-09-25 21:37:54 -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-09-16 00:30:52 -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-09-11 21:22:10 -07:00
2026-09-16 00:30:52 -07:00
2026-09-16 00:30:52 -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