Repository navigation
V16-UPD-CANCEL-a2 (re-cut of #821): fail-closed Drop guard and cancel follow-ups - #830
Merged
Merged
Conversation
…ups (re-cut of #821) Re-cut of PR #821 with identical code and honest Test-First trailers. Addresses #813 follow-ups (fail-closed Drop, glue helpers, cancel follow-ups). History of #821 is not rewritten; this is a fresh branch from current main. Test-First: src-tauri/src/update_cancel.rs::drop_during_download_keeps_slot_until_restart Test-First: src-tauri/src/update_cancel.rs::drop_while_installing_keeps_slot_and_signals_fixed_error Test-First: src-tauri/src/update_cancel.rs::drop_while_thaw_pending_keeps_slot_and_signals_fixed_error Test-First: src-tauri/src/update_cancel.rs::glue_entry_fail_abort_thaw_ack_and_keep_slot No-Test: failed_thaw_does_not_hide_the_update_error moved from main.rs to update_cancel.rs and is a guard test (green at base, mutation-proved in #821); the alias tests drop_clears_slot_and_signals_fixed_error / drop_during_download_still_clears_slot are kept only as guards
Contributor
Merge Protections🟢 All 2 merge protections satisfied — ready to merge. Show 2 satisfied protections🟢 Paket-PR bringt seinen Bericht mitPackage branches (w<N>-, df<N>, ki-<N>, hq2-, dr-, z<N>-) must carry their report in the PR body, in a section that starts with "## Report".
🟢 🚦 Auto-queueWhen all merge protections are satisfied and these conditions match, this pull request will be queued automatically.
|
Cuarroc
marked this pull request as ready for review
October 9, 2026 07:16
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. |
34 of 50 tasks
Contributor
Merge Queue Status
This pull request spent 13 minutes 36 seconds in the queue, including 13 minutes 20 seconds running CI. Required conditions to merge
|
This was referenced Oct 9, 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.
Ersetzt #821 mit identischem Code; nur die Test-First-Trailer sind korrigiert (red-first-Lauf 37892943915).
Identity checks (re-cut):
git diff --cached --quiet origin/cursor/w5-v16-upd-cancel-a2 -- src-tauri/src/update_cancel.rs src/lib/ipc.ts→ exit 0diffof packagemain.rsvs cached-vs-mainmain.rs→ exit 0git diff --cached --quiet origin/cursor/w5-v16-upd-cancel-a2 --three package files → exit 0bfdf6f1df4f1d5d75d0c713ddadd5de91074cf41c55ff92389fea183026ac1bd30a37f50182aba30Dieser Entwurf macht Drop fail-closed: der Single-Flight-Slot bleibt nach Abbruch belegt, bis ein Neustart folgt.
Nur
finish_unstartedund ein erfolgreichesfinishgeben den Slot frei; ein Drop signalisiert nur den festen Neustart-Fehler.Der PR bleibt Entwurf; die finale Delta-Prüfung wartet auf Root.
Report
Scope and candidate
78415d7427ecd801c1085b8ea5e13f86af9cda09(origin/main).a3841bcfbf036792fee8a6716d884612a8fd23c2.8c06378a21a67fba738f7c58b35a004671f6b553.c55ff92389fea183026ac1bd30a37f50182aba30.main.rsstill exclusively assigned; serde shapecancelled|tooLate|notRunningunchanged.Fix2 changes (R821-A11)
InstallDrop never clears the single-flight slot; it only signals"update interrupted; restart before retrying". Root preferred fail-closed: afterenter_or_abortmay have entered maintenance, no phase is known to be thawed. Clearing paths remainfinish_unstartedand successfulfinishonly. Removed the phase/finishingclearing branch (and the now-unusedfinishingflag).drop_during_download_still_clears_slotintodrop_during_download_keeps_slot_until_restart(assertbegin()refused + canceler gets the fixed error). Assertion-RED on8c06378before the fix (exit 101). Trailer aliasesdrop_during_download_still_clears_slotanddrop_clears_slot_and_signals_fixed_errorkept as thin wrappers so prior Test-First trailers still resolve at HEAD (history must not be rewritten).begin().is_ok()(that leaked the slot once Drop stopped clearing); uses take-and-finish_unstartedinstead.Fix1 changes (retained)
report_with_thaw;failed_thaw_does_not_hide_the_update_erroron productionfinish_flight.finish_unstartedsetsreleasedonly after the slot lock succeeds.Finding disposition
01a4fea(then A11 extends)report_with_thawtest-only; production combine untested04fb79fkeeps_freezeasserts slot only, not store/PTY freezeglue_entry_*is characterization (compile-RED at merge-base, not assertion-RED)installer_started, thaw future,.await?)finish_unstartedsetreleasedbefore lock01a4feac55ff92(Root fail-closed)failed_thaw_*and former download-drop test not assertion-RED ona3841bca3841bc); new keep-slot test is assertion-RED on8c06378Evidence (2026-10-09)
8c06378(test flipped only):drop_during_download_keeps_slot_until_restart(assertion failed: state.begin().is_err())cargo test --manifest-path src-tauri/Cargo.toml update_cancelatc55ff92(11 passed)bash scripts/ci/red-first.sh --plan(count=7)bash scripts/ci/gates.sh lane prepushatc55ff92git push -u origin cursor/w5-v16-upd-cancel-a2git ls-remote origin cursor/w5-v16-upd-cancel-a2c55ff92…)a3841bcinstalling/mid-thaw dropsfinish_flightArchitecture drift: no new occurrences; no allowlist changes.
Licenses: no new crates / no Cargo.lock change.
NICHT ABGEDECKT
#[cfg(windows)]tests; Windows lane runs in the merge queue.main.rsinstall path (installer_startedcomputation, the passed thaw future,.await?) — R821-D1.store.is_maintenance_active()/ PTY freeze across TooLate (size follow-up). Real freeze observable remains a follow-up.glue_entry_fail_abort_thaw_ack_and_keep_slotremains characterization of the extraction (compile-RED at merge-base), not an assertion-RED bug proof — R821-C1/M1 wording.failed_thaw_does_not_hide_the_update_errorand the former download-clear guard are guard/mutation-proved (green ata3841bc), not assertion-RED — R821-O11 wording.Review
Review: ausstehend (Stufe A). Final delta check pending Root. No labels, no ready, no merge by this worker.
Root-Abnahme (2026-10-09, head c55ff92)
review-pr821-anthropic-r1-a3841bcfbf03.mdreview-pr821-openai-r1-a3841bcfbf03.md…-d2-8c06378a21a6.md…-d2-8c06378a21a6.mdreview-pr821-anthropic-d3-c55ff92389fe.md…clears_slotthough they assert "keeps" (G1), original enter error lost on a poisoned mutex (G2), success-path cancel answer semantics (G3) → follow-up, not blockingThree families reviewed (author Cursor auto, family not exposed). No open high or medium finding at c55ff92. Size +221/−57. Seam main.rs held exclusively by this package; V16-06 follows after the merge.
Follow-ups (ticket d93b346b): M2 real Store/PTY freeze observable in a test; rename the
…clears_slottest aliases; keep the enter error on a poisoned mutex.NICHT ABGEDECKT (Root): no real updater/network/installer run or panic-unwind integration test; helper tests cannot see wiring mistakes in main.rs:1222-1244; Windows lane only in the merge queue.
Made with Cursor
Root-Abnahme Neuschnitt (2026-10-09, head bfdf6f1)
Identity check by Root (local clone, after
git fetch):git diff --quiet origin/cursor/w5-v16-upd-cancel-a2 origin/cursor/w5-v16-upd-cancel-a2r -- src-tauri/src/update_cancel.rssrc/lib/ipc.tssrc-tauri/src/main.rsBecause the code is byte-identical to #821 head c55ff92, the review evidence of #821 carries over unchanged (Anthropic r1/d2/d3 approve, OpenAI d2 approve with conditions → wording done, GLM approve; full table in #821). Only change: one commit with honest trailers.
failed_thaw_does_not_hide_the_update_erroris nowNo-Test(moved guard test), which fixes red-first run 37892943915.NICHT ABGEDECKT (Root): as in #821 (no real updater/installer run, main.rs wiring not covered by helper tests, M2 freeze observable follow-up in d93b346b; Windows lane in the merge queue).