Repository navigation
Conversation
|
This PR doesn't fully meet our contributing guidelines and PR template. What needs to be fixed:
Please edit this PR description to address the above within 2 hours, or it will be automatically closed. If you believe this was flagged incorrectly, please let a maintainer know. |
A timeout settles the workflow's promise without stopping the process behind it, so a later step landing on the same host can rebuild or capture a directory an abandoned tool is still writing. A marker is written before a tool can touch anything and removed when its body returns; while one stands for another step, the host refuses the directory, or moves it aside and rebuilds when it built the directory itself. The refusal crosses the activity boundary as retryable work with its own delay, so another host takes the step.
moetemp
force-pushed
the
moe/worktree-quarantine
branch
from
September 15, 2026 01:01
7b4cf1b to
13bbae0
Compare
moetemp
force-pushed
the
moe/cross-host-check
branch
from
September 15, 2026 01:01
2a035ac to
c61bb17
Compare
|
This pull request has been automatically closed because it was not updated to meet our contributing guidelines within the 2-hour window. Feel free to open a new pull request that follows our guidelines. |
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.
This PR refuses a project directory to a later step while a tool call of an earlier step may still be writing it.
A timeout settles the workflow's promise without stopping the process behind it, so after a step is abandoned its host can still be running that step's tool, and the next step to land on that host would rebuild or capture a directory the tool is writing. A marker is written beside the directory before a tool can touch anything and removed when its body returns (
snapshot/writers.ts). While one stands for another step, the host refuses the directory. The refusal takes itself back where the host can show the call is over: its process is gone, nothing carrying the name the worker exported is running, nothing is left in its process group or control group, and nothing is standing in the directory. A directory this host built from packs is moved aside and rebuilt fresh instead of refused; somebody's own checkout is never moved.The refusal crosses the activity boundary as retryable work with a retry delay of its own, so the step reaches another host in about the time one dispatch takes rather than climbing a failing activity's backoff.
The worker name the markers rely on is set on the first marker rather than at import, so loading the module changes nothing. A marker is written before its tool can spawn anything, so children still inherit it.
Tests: the quarantine and set-aside cases in
worktree-materialize.test.ts,stepped-drain-writers.test.tsandboundary-refusal.test.ts.