Desktop thread history projection stalls on ordinal mismatch and hides later turns
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 125k
- Forks
- 19.4k
- PR merge metrics
- PR metrics pending
Description
What version of the Codex App are you using (From “About Codex” dialog)?
26.903.61454
What subscription do you have?
Pro
What platform is your computer?
Darwin 25.6.0 arm64 arm
What issue are you seeing?
The desktop app stops displaying conversation history after an in-progress turn on 2026-09-09. Later turns from 2026-09-10 remain missing after a full app restart. thread/read also returns the older in-progress turn as the latest turn.
The original rollout JSONL still contains the later turns and parses successfully. The relevant SQLite databases pass PRAGMA integrity_check.
The app log repeatedly reports:
failed to project durable rollout for 019fb648-9908-7e21-bb32-85016dbfb3c3: thread-store internal error: thread history projection for 019fb648-9908-7e21-bb32-85016dbfb3c3 expected ordinal 44105, got 44104
What steps can reproduce the bug?
- Continue a long-running local thread beyond an in-progress turn.
- Restart the ChatGPT desktop app.
- Reopen the affected thread.
- Observe that history stops at the older in-progress turn, while later turns remain in the rollout JSONL.
Affected thread/session ID: 019fb648-9908-7e21-bb32-85016dbfb3c3
Projection state:
next_rollout_ordinal = 44105next_rollout_byte_offset = 1591106576
At snapshot time the rollout was 1,814,339,026 bytes, leaving 223,232,450 bytes after the projection cursor. The snapshot contains 54,209 valid JSON records.
codex migrate-rollouts --thread 019fb648-9908-7e21-bb32-85016dbfb3c3 --json --verbose returns already_paginated and does not rebuild the projection.
What is the expected behavior?
The thread-history projection should resume from the durable rollout and display all later turns. If automatic recovery is not possible, the app should provide a safe per-thread re-projection/rebuild operation.
Additional information
The affected thread contains private financial research. I have not attached the full transcript, rollout, databases, or raw app logs. I can provide a narrowly redacted diagnostic excerpt if maintainers request it.
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/read entry point and the codex migrate-rollouts --thread ... --json --verbose path, then inspect the projection state against the durable rollout JSONL and SQLite integrity results. Done means later turns are displayed after projection resumes, or a safe per-thread re-projection/rebuild operation is available.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, sqlite
- Domain
- database, desktop
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100