pingdotgg / pingdotgg/t3code

Persisted state corruption can leave T3 Code unusable with no clear recovery path

Open
#961 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
TypeScript
Stars
23k
Forks
5.9k
Avg merge
11h 14m
Merged PRs (30d)
357

Description

Summary

Persisted state corruption can leave T3 Code unusable with no clear recovery path.

This should be treated as a separate reliability track, distinct from the already-open diff and version fixes.

Symptom

  • the app can become broken or unusable on startup
  • current bootstrap behavior does not clearly explain that persisted state load failed
  • one malformed persisted runtime row can poison list-based recovery paths
  • some Codex resume failures caused by state corruption are still treated as fatal even though a fresh thread start would be an acceptable fallback

Known workaround

In at least one repro, renaming state.sqlite allowed the app to recover.

That suggests persisted corruption can poison startup, but the mental model here should be broader than a single DB file.

Important

For this track, state should include all persisted surfaces that can poison startup or recovery:

  • T3CODE_STATE_DIR
  • state.sqlite
  • files under the state dir such as keybindings, logs, attachments, and runtime metadata
  • CODEX_HOME
  • persisted browser/Electron client state

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 by tracing bootstrap loading and recovery across T3CODE_STATE_DIR, state.sqlite, files under the state directory, CODEX_HOME, and persisted browser/Electron client state. Reproduce the unusable-startup and Codex resume cases, then define recovery behavior for malformed persisted data and fresh-thread fallback. Done should include clear failure messaging and a reliable recovery path.

Written by the indexing model from the issue text.

Assessment

Tech stack
electron, typescript
Domain
backend, desktop
Issue type
Bug
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.