Repository navigation
fix: prevent duplicate run IDs on false-success mkdir - #81
Merged
Merged
Conversation
TSLsun
marked this pull request as ready for review
November 2, 2026 13:31
TSLsun
added a commit
that referenced
this pull request
Nov 2, 2026
**Maintainer review:** Earlier stress runs exposed intermittent failures listed below. The PR checks run the full suites; three stress repetitions run after pushes to main and can still fail. Please assess this risk before merging. ## Summary - Restore the test readiness, bounded deadlines, failure diagnostics, fzf dependency, and CI stress changes from #70, which were reverted by #80. - Apply the revert of #80 on current main, retaining the independently merged allocator fix #81. No benchmark tooling from #73 is included. ## Review notes - The original final PR run passed Linux and macOS: https://github.com/TSLsun/tmux-collie/actions/runs/41333821228. - The subsequent merge-commit Linux run failed a dashboard key-navigation assertion: https://github.com/TSLsun/tmux-collie/actions/runs/41334612140. Cause was not established; do not treat the earlier green run as proof of sustained reliability. - Later controlled benchmarking also recorded two macOS readiness failures: https://github.com/TSLsun/tmux-collie/actions/runs/41376826676. Benchmark PR #73 is closed as reference. - Fresh PR checks run against current main. Please review and merge only after assessing the checks and these known failures. ## CI event behavior Pull requests and reusable workflow calls run the normal Linux/macOS suite. Direct pushes to main additionally run three readiness stress repetitions with failure diagnostics. The base measurement step is removed.
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.
Concurrent agent launches can allocate the same run ID when mkdir reports success after losing the race to create run.lock. Require both a successful exit and a nonempty creation receipt before entering the allocator, matching the existing metadata lock protection. The retry limit and cleanup protocol remain unchanged.
The regression holds another writer's lock and models false-success mkdir. It verifies that allocation never enters the critical section, removes the held lock, or changes existing events. It fails on the original implementation and passes with the guard.
This is the production allocator fix targeting current main. Its diff contains only lib/cmd/agents.sh and test/run_lock.bats. No benchmark workflow, readiness changes, worker-default changes or benchmark documentation are included. Benchmark PR #73 remains a separate, unmerged reference.
Validation:
0af5348.User authorization promotes this PR from an experimental candidate to a production fix for review. Merging remains a separate human decision; no automatic merge is enabled.