Skip to content

🐛 [fix] upgrade: preserve task state across interrupted upgrades - #25

Merged
EricTechPro merged 4 commits into
mainfrom
codex/upgrade-recovery
Oct 4, 2026
Merged

EricTechPro merged 4 commits into
mainfrom
codex/upgrade-recovery

Conversation

@EricTechPro

Copy link
Copy Markdown
Owner

Note

⏳ Draft · upgrade recovery · independent review complete

Problem

An interrupted board upgrade could erase task statuses and lose the only copy of them. Boards with more than 500 cards were only partly restored. Failed QA-label writes could still clear the old QA-only flag and report success.

Solution

  • Save every card, status and planned label change before writing to GitHub. Reject incomplete pages or damaged recovery files.
  • Resume from that saved record after a failure. Read back each write, preserve newer task statuses, and stop on conflicting edits.
  • Keep the QA-only flag until the upgrade finishes. Save recovery files outside Git tracking and prevent two local upgrades from sharing a record at once.
  • Docs: GitHub Projects GraphQL types define the paginated item and label reads.

Acceptance criteria

  • Failed QA-label writes keep the upgrade pending.
  • A crash after the options rewrite recovers task statuses without repeating that rewrite.
  • All 501 cards in the large-board fixture keep their status and routing labels.
  • Incomplete reads, failed saves/restores, damaged records and conflicting edits stop safely.
  • Existing setup and installation behavior still passes its offline checks.
  • Final bash tests/run-safety.sh: 34 offline safety suites pass.

Iteration history

Lane Done Time Details
Builder ✅ Oct 3 26 upgrade cases and 9 setup scenarios pass
Reviewer ✅ Oct 3 Fixed empty-record and partial-item response gaps; no remaining findings

Risk

Medium. Keep workers and people from editing the board during an upgrade. GitHub cannot make the read and field rewrite one atomic action. The saved record supports recovery, but cannot always distinguish an intentional status clear made before the first read after the rewrite. No live board was used for testing.

- Save complete board state before changing options or routing labels.
- Resume verified writes from a durable record and stop on conflicting edits.
- Cover crash recovery, 501 cards and failed reads/writes in 26 offline cases.
@EricTechPro
EricTechPro marked this pull request as ready for review October 4, 2026 04:13
@qodo-code-review

Copy link
Copy Markdown

Qodo reviews are paused for this user.

Troubleshooting steps vary by plan Learn more →

On a Teams plan?
Reviews resume once this user has a paid seat and their Git account is linked in Qodo.
Link Git account →

Using GitHub Enterprise Server, GitLab Self-Managed, or Bitbucket Data Center?
These require an Enterprise plan - Contact us
Contact us →

@EricTechPro
EricTechPro merged commit b8dd7b4 into main Oct 4, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant