Repository navigation
fix: preserve FileOps cancellation through bounded helper execution - #87
Merged
Merged
Conversation
De-pitcher
marked this pull request as ready for review
October 18, 2026 12:02
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.
FileOps previously executed filesystem operations in the parent while the fixed I/O helper rejected its missing local execution interface. Route operations through the owned helper, retain pre/post mutation snapshots for conflict-aware undo, and preserve cancellation when post-state acquisition fails or is cancelled again.
Keep guarded handlers inside their existing timeout contexts instead of redundant
wait_forchild tasks. This retains request ownership through repeated cancellation and finalization, addressing the Python 3.11 surviving-helper failure found in CI. Standalone output limits, policy-filtered bounded directory acquisition, byte-exact undo and unsupported-interface rejection remain covered.Empirical teardown fixtures now publish PID markers atomically after closing their staging writes. This prevents readers from treating an empty newly created file as a complete marker. All original liveness, ancestry, teardown, deadline and negative-control assertions remain unchanged.
Validation:76independent focused tests for the runtime correction, plus5independent installed-source empirical cases for the marker correction; scoped format/lint/mypy pass. The actual marker writer is invisible until its data is complete and both launcher/writer are verified terminated after the probe. Source origins and149inputs are bound, with148protected inputs unchanged in the final fixture correction.
At earlier head e4acea2, hermetic715tests passed with85.17%coverage, all4Linuxversions andWindows3.11passed, and Docker/governance passed. Windows3.13exposed the fixture race; Windows3.12/3.14were cancelled. This test-only correction requires a fresh complete platform/coverage gate. Release and live-provider acceptance remain separate.
Accountable contributor:@De-pitcher. Implementation:Antigravity and OpenCode (host-reported DeepSeek V4.1 Flash Free). Independent reviewer/orchestrator:Codex.
Closes #76