docs: adversarial review of ripclone (2026-06-25)#60
Merged
Conversation
Eight-track adversarial review per the intent adversarial-review playbook + Rust addendum. Headline: the "newer sync never loses to an older one" invariant is unenforced on the file ref store (the default) and racy on the SQL stores; queue settlement is unguarded against reclaim double-settle; an io_uring buffer can be freed while the kernel still owns it. Full ranked fixes, per-track findings, and suggested tests in the report. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.
What
An eight-track adversarial review of
rust/src/atorigin/main(e6991f1), run per the adversarial-review playbook and the new Rust addendum. Adds a single report file —ADVERSARIAL_REVIEW_2026-06-25.md. No code changes.Headline findings (line-verified)
FileRefStore(the default when no S3); TOCTOU get-then-upsert with no transaction on every SQL store; S3 branch refs skip the ETag CAS that HEAD uses. Surfaced independently by 3 tracks.finishisUPDATE … WHERE id=?with noworker_id/statusguard, andreclaim_staleis purely time-based with no attempt counter → a slow-but-alive worker is reclaimed and both workers settle; a SIGKILL/OOM build crash-loops forever with no dead-letter.donethen fires phase 2 into a detachedtokio::spawn— an ephemeral worker loses the full clonepack.statx, freed while the kernel still owns them).--depth N>1silently serves full history,HashingWriterdouble-hashes on short writes, and a cluster of cheap hot-path perf wins.Checked and sound: "upstream credentials never stored in the queue" holds; the files-mode integrity model (three independent hash anchors + zip-slip defenses) is strong; head-pack disjointness is a correct set-difference.
The report has the ranked top-10 fixes, per-track findings with
file:line, invariants violated, suggested tests, and a track-coverage map.🤖 Generated with Claude Code