Repository navigation
fix(import): preserve recovery across timeouts and page reloads - #455
Merged
Merged
Conversation
Preserve uncertain call receipts and require explicit recovery after model transport failures. Keep grading outcomes unknown and align evaluation stop gates. Co-authored-by: Codex <codex@openai.com>
Persist only original request IDs, verified file references and options before submission. Reuse server receipts and show charge risks beside explicit recovery actions. Co-authored-by: Codex <codex@openai.com>
shenyankm
marked this pull request as ready for review
October 28, 2026 13:17
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
This was referenced Oct 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Model timeouts could automatically repeat paid calls, and a lost creation response followed by a page reload discarded the request ID needed to recover the original task.
MODEL_RESULT_UNKNOWN. Explicit resume reuses durable work and preserves unknown usage and consumed budget. Keep service-mode grading receipts unknown without replay.AI assistance: Codex implemented the fixes, reviewed the complete diff and ran the checks below with model substitutes. No live model or Tencent requests were made.
Linked issue
N/A — focused fixes for reproduced import-recovery bugs. No public API, shared contract, schema or dependency change.
Affected areas
AI service import/model handling and the shared service-mode grading caller; import Web client/UI; regression tests and recovery documentation. Developed on macOS with Python 3.14.7 and Node.js 22.23.2. The offline practice app is unchanged.
Validation
make verify AI_PYTHON=/Users/sheny/.local/share/uv/python/cpython-3.14-macos-aarch64-none/bin/python3.14make web-check web-build AI_PYTHON=...npm --prefix web test -- src/api.test.ts; TypeScript and lint after the final added security regressionPRACTIQ_WEB_BUILT=1 npm --prefix web run test:browser -- --grep 'recovers an accepted import|shows unknown model outcome'git diff --checkand full diff reviewInitial Service failures were retained locally: three obsolete timeout-retry expectations and the evaluation blocking classification were corrected; the final full run passed 3,102/3,102. Initial browser attempts are retained locally: one development run failed during connection; the final clean standard run passed 56/56. A full built-assets attempt passed 54/56 because two existing lazy-load fault injections target
/src/ResultReview.tsx; those cases passed in their standard development mode. The new recovery flows separately passed against built assets.Risk and rollout
Checklist