Conversation
A cross-OS transfer can differ by platform in only two places: how the sender reads a tree, and how the receiver writes one. The wire is the same everywhere. Two CI runners cannot swap a transfer code, so the transfer is split in two. `produce`, on each OS, builds a tree using every kind of name and file that OS can hold and archives it exactly as `drop send` does. `consume`, on each OS, receives every OS's archive, tar and gzipped, through the real receive path over an in-process relay. It checks contents, directories, links (kept on Unix, skipped on Windows), executable bits, and Windows name rewriting. That is nine pairings. The workflow runs on pull requests that touch the tree code, nightly, and on demand. With one byte of an archive flipped, consume fails naming the file. Cross-platform plan, phase 4. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G7Fy45hUvna94cd79WKG8S
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01G7Fy45hUvna94cd79WKG8S
Merged
This branch has not been deployed
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.
Cross-platform plan, phase 4. Adds a CI workflow plus two
#[ignore]d tests, with no product code. It's still a workflow change, so it waits for you. Stacked on #75.Why split the transfer
Two CI runners can't swap a transfer code mid-run. The wire is platform-neutral, so the only parts that differ by OS are reading a tree (sender) and writing one (receiver). The workflow tests exactly those:
produce(Linux, macOS, Windows) builds a tree and archives it the waydrop senddoes. The tree has nested folders, an empty folder and an empty file, 3 MiB of data, Unicode names, a >100-byte name (GNU long-name record), a path deeper than 260 characters, and an executable script. Unix producers add a relative symlink,10:30 standup.md,nul.txtandtrailing dot..consume(Linux, macOS, Windows) receives every OS's archive, as both.tarand.tar.gz, through the real receive path over an in-process relay. It checks byte-exact contents, directories, links (kept on Unix; skipped and not half-made on Windows), executable bits on Unix, and Windows name rewriting (10_30 standup.md,nul_.txt,trailing dot_).That's 3 producers × 3 consumers, 9 pairings, each for two archive formats.
Verified
consumefails withnested/deeper/data.bin: contents differ.It runs on PRs that touch
tar.rs,untar.rs,payload.rs,recv.rs,names.rsor the test, nightly, and viaworkflow_dispatch. It is not a required check.🤖 Generated with Claude Code
https://claude.ai/code/session_01G7Fy45hUvna94cd79WKG8S