openai / openai/codex

Desktop thread history projection stalls on ordinal mismatch and hides later turns

Open
#44,562 5 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

app bug session
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?
  1. Continue a long-running local thread beyond an in-progress turn.
  2. Restart the ChatGPT desktop app.
  3. Reopen the affected thread.
  4. 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 = 44105
  • next_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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.