Make VM expiry and provisioning recovery durable - #118
Conversation
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. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 50834e9c30
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
@codex review |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f873b4483f
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 38a2bebe4b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@codex review |
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
1 similar comment
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
@codex review |
|
Codex Review: Something went wrong. Try again later by commenting “@codex review”. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
@codex review |
|
Codex Review: Something went wrong. Try again later by commenting “@codex review”. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
|
/review |
PR Reviewer Guide 🔍(Review updated until commit c9ba187)Here are some key observations to aid the review process:
|
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Reviewed the two focus findings against the implementation and added regression evidence in c9ba187: Deletion remains recoverable when the provider succeeds and the final database commit fails. check_expiries selects durable deletion claims regardless of original expiry and retries destroy_vm. XCP-ng repeated deletion succeeds only after a successful exact-UUID absence query. New tests cover rollback before commit and lost acknowledgement after commit, and verify DESTROYED, provider_deleted_uuid, and prefix release. Existing provider tests reject unknown or failed inventory. Keeping the transfer handoff while its recipient is disabled preserves the durable resume obligation. The disabled path makes no provider call and emits no failed-transfer log. The new test demonstrates retention without start, then one start and marker removal after re-enable. Normal transfer entrypoints reject disabled recipients; this handles a post-commit disable race. Ten targeted tests pass. The worker schedules expiry checks every five minutes and invokes both resume reconcilers. Earlier full admin, PostgreSQL concurrency, and migration validation is recorded. The review explicitly excluded files; omitted code needs inspection before treating an alleged absence as a defect. This latest commit changes tests only. |
|
/review |
|
Persistent review updated to latest commit c9ba187 |
|
Checked the latest review findings against the full source at c9ba187:
Fresh focused validation: 5 passed (both extension commit outcomes, unknown-outcome handling, browser-only admin entry, CSRF/bearer separation). The first sandbox invocation timed out without results; the bounded normally approved local rerun passed in 5.61s. No product changes were needed for these findings. The two earlier deletion/transfer findings are addressed with precise recovery/test evidence in my preceding response. Review coverage remains explicitly partial; these dispositions come from direct full-source inspection and tests, not a claim that omitted files were reviewed by PR-Agent. |
VM expiry, account administration and provisioning recovery previously had races that could lose paid time, resume restricted guests or release network identities before provider deletion was established. This integrates the admin control plane, serialized expiry/deletion and durable guest completion from #88, #113 and #116.
Validation: exact head c9ba187 has test, PR-Agent, Semgrep and Semgrep OSS green. All 88 review threads are resolved. The completed latest PR-Agent review had partial file coverage; its five findings have explicit full-source/test dispositions in comments 5644758881 and 5644785974. No claim is made that excluded files were covered by that reviewer. Fresh focused review verification passed all 5 cases; the preceding delete-commit/disabled-transfer set passed 10, full admin set passed 124, and actual PostgreSQL migration/nested-lock proofs passed 2. Earlier concurrency, guest receipt and authorization regression evidence remains in review history. A sandbox-only focused run timed out; the bounded approved local rerun passed.
Deployment is separate: use network-operations SHA promotion and the merged PR547 quiescing/preflight barriers, then verify schema, API/worker, session/CSRF and read-only admin behavior. No production schema or app pin is changed by this app merge. Prefer compatible application rollback retaining schema; never discard admin audit or retired VM data.
Retention, owner notices and restore validation remain separate in draft PR119 / issue110. Application receipts do not prove external refund payment or make repeated paid HTTP requests idempotent.