The cancel test failed now and then because it asserted an ordering the
executor deliberately does not provide. A build reaches its terminal status and
leaves currentBuilds() at two different moments, and between them lie the
status event, the commit status posted to the forge and the artifact copy. The
test waited for the first and asserted the second in the next line, which held
on an idle machine and not under load — reproduced here in one of three
consecutive runs.
The assertion moves into eventually, like the other waits in this test. Both
places now say why the order is what it is: a build gone from currentBuilds()
while its stored result still says RUNNING would read as stuck forever, and the
watcher's worktree pruning borrows that same list to know which worktrees are
still in use.
The cancel test failed now and then because it asserted an ordering the
executor deliberately does not provide. A build reaches its terminal status and
leaves currentBuilds() at two different moments, and between them lie the
status event, the commit status posted to the forge and the artifact copy. The
test waited for the first and asserted the second in the next line, which held
on an idle machine and not under load — reproduced here in one of three
consecutive runs.
The assertion moves into eventually, like the other waits in this test. Both
places now say why the order is what it is: a build gone from currentBuilds()
while its stored result still says RUNNING would read as stuck forever, and the
watcher's worktree pruning borrows that same list to know which worktrees are
still in use.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The cancel test failed now and then because it asserted an ordering the
executor deliberately does not provide. A build reaches its terminal status and
leaves currentBuilds() at two different moments, and between them lie the
status event, the commit status posted to the forge and the artifact copy. The
test waited for the first and asserted the second in the next line, which held
on an idle machine and not under load — reproduced here in one of three
consecutive runs.
The assertion moves into eventually, like the other waits in this test. Both
places now say why the order is what it is: a build gone from currentBuilds()
while its stored result still says RUNNING would read as stuck forever, and the
watcher's worktree pruning borrows that same list to know which worktrees are
still in use.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The cancel test failed now and then because it asserted an ordering the
executor deliberately does not provide. A build reaches its terminal status and
leaves currentBuilds() at two different moments, and between them lie the
status event, the commit status posted to the forge and the artifact copy. The
test waited for the first and asserted the second in the next line, which held
on an idle machine and not under load — reproduced here in one of three
consecutive runs.
The assertion moves into eventually, like the other waits in this test. Both
places now say why the order is what it is: a build gone from currentBuilds()
while its stored result still says RUNNING would read as stuck forever, and the
watcher's worktree pruning borrows that same list to know which worktrees are
still in use.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com