Windows 0.153.4: duplicate thread_settings_applied ordinals after resume permanently stall paginated history
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
Summary
Windows Codex conversation history freezes at an older turn, although later user and assistant messages remain in the local rollout. Also observed by the user on Android while accessing the same work. Read-only inspection identified two reused rollout ordinals, both on thread_settings_applied events after resuming.
Environment
- Windows, PowerShell
- Running/bundled CLI:
codex-cli 0.153.4 - Local thread with
history_mode=paginated - Approximately 1.56 GB rollout; more than 13,600 records
Exact evidence (no conversation content)
The history projection cursor was stuck at byte 896607608, next ordinal 6076. thread_items contained 2120 entries with max ordinal 6072. The newest-turn reading API returned an old turn while newer durable messages were present.
Record sequence around first failure:
6074 response_item/custom_tool_call_output 2026-09-09T06:49:40.699Z
6075 event_msg/token_count 2026-09-09T06:49:40.709Z
6075 event_msg/thread_settings_applied 2026-09-09T07:09:20.188Z
6076 event_msg/task_started 2026-09-09T07:09:20.204Z
6077 turn_context
The second duplicated ordinal is 13474, again on thread_settings_applied at 2026-09-10T05:46:13.185Z, followed by ordinal 13475 task_started.
A complete JSONL scan parsed every record and found exactly these two sequence violations. Repeated local log message:
failed to project durable rollout: thread-store internal error:
thread history projection ... expected ordinal 6076, got 6075
Scoped diagnostic intervention
After saving the original cursor, the next expected ordinal was temporarily changed from 6076 to 6075 at the same byte offset, for this one thread only. The built-in projector then reached the second duplicate and failed with expected ordinal 13475, got 13474. Projection state and visible items remained at the original boundary, consistent with rollback of the projection batch. No user messages or rollout bytes were edited/deleted. This is diagnostic evidence, not a suggested supported repair.
Expected
Assign a strictly increasing ordinal to settings events when resuming, and recover/rebuild a paginated history safely when duplicate metadata ordinals occur. A later projection failure should not hide a day's intact messages indefinitely.
Related
#43124, #42197, #40630. This report adds the exact event type and adjacent record ordering for two independently observed resume boundaries. The underlying code path responsible for ordinal reuse has not been proven.
No raw transcript, credentials, private project data, personal paths, screenshots, or full logs are included.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the thread-store durable rollout projector and the resume path that assigns ordinals; the issue provides the failing JSONL sequence and expected-ordinal errors to reproduce or trace. Investigate both duplicated thread_settings_applied cases and the paginated projection rollback behavior. Done means resumed settings events receive strictly increasing ordinals and intact later history can be safely projected without remaining permanently hidden.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend, cli
- Issue type
- Bug
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100