Repository navigation
Cut E2E artifact size by 53% with shared compression - #1179
Merged
Merged
Conversation
Mikola Lysenko (mikolalysenko)
enabled auto-merge
October 8, 2026 21:19
Tanmay Singla (Tanmay182003)
approved these changes
Oct 8, 2026
gem_hosted_global_gemfile_setting_is_refused only reached the redirect stage because the scan found the host's globally installed gems via `gem env`: the refused lock contributes no packages, so without an installed package no batch call fires and the refusal never runs. On Windows runners `gem env` sometimes outlives the 10s probe budget. The scan then reports scannedPackages: 0 and the test fails. This evicted two merge-queue entries on 2026-10-08 (#1147 and one at 17:31 UTC). Lay the gem down in the project with materialize_installed_gem, as the other tests in this file do, so the test no longer depends on the host's Ruby install. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Xr7gMxM5ugBStCpk6kJ3V4
Mikola Lysenko (mikolalysenko)
disabled auto-merge
October 8, 2026 21:50
Collaborator
Author
|
[final reviewer] Tanmay Singla (@Tanmay182003) One non-merge commit landed after your approval on Generated by Claude Code |
Collaborator
Author
|
bugbot run Generated by Claude Code |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit 77870a6. Configure here.
Collaborator
Author
|
[burn-down agent] Ready for review at
Generated by Claude Code |
This was referenced Oct 9, 2026
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.
Every E2E consumer currently downloads the same ZIP of test binaries. A recent merge-queue job spent 7m52s downloading its 200 MB bundle. Most recent runs took 6–7 seconds, so that delay is an outlier, but repeating the full transfer across roughly 150 consumers also amplifies artifact-service congestion.
Pack the same binaries into a Zstandard-compressed tar before upload. A shared 128 MiB compression window reuses common Rust code across executables, which per-file ZIP compression cannot do. Both E2E and cargo-vex consumers unpack it before their existing test steps; the test selection, build flags and executable bytes stay the same. The upload retry action accepts a compression level, defaulting to its existing level 6; these already-compressed bundles use level 0.
Measured with the actual 36-file Linux artifact and the exact workflow commands:
The first run also hit the existing Windows global-Gemfile fixture flake:
gem envcan time out before finding any packages. The branch includes the approved fixture fix from #1169, which has since merged into main. Both Windows unit-test shards now pass, with all refusal, byte-preservation and attestation assertions preserved.Validation: all 275 Python harness tests pass (one skipped), including actual archive round trips, executable permissions, missing-input failure and corrupt-archive failure. Merging locally with #1143 and #1166 passes all 286 harness tests. The corrected Gemfile-refusal test passes both normally and with
PATH=/nonexistent, so it no longer needs a working hostgemcommand. Actionlint has the same 97 existing findings and no new ones;git diff --checkpasses.The runner-provided
tarandzstdtools avoid an additional installation step; Zstandard is listed in the Ubuntu, Windows and macOS images. The compression window adds bounded memory use during packing and unpacking. This complements #1143's independent platform scheduling and #1166's release-test sharding. The full hosted CI run passed on77870a6cin 30m30s. Its final job was the unsharded release suite (29m06s); #1166 addresses that remaining wait. The compression measurements above establish the artifact-size and transfer improvements.Note
Medium Risk
CI artifact format changes affect every E2E and cargo-vex consumer; mitigated by round-trip tests and unchanged binary layout after unpack.
Overview
Shrinks E2E binary artifacts by packing
target/e2e-bininto a single zstd-compressed tar (shared long window) before upload, instead of uploading the raw directory as a per-file ZIP. Consumers download totarget/e2e-archive, unpack intotarget/e2e-bin, then run the same staging steps as before.The reusable upload-artifact action gains a
compression-levelinput (default6); the E2E bundle upload sets0so GitHub’s ZIP wrapper does not re-compress the.tar.zst.Adds
scripts/tests/test_ci_e2e_archive.pyto exercise the real CI compress/unpack scripts (permissions, missing bundle, corrupt archive).Stabilizes
gem_hosted_global_gemfile_setting_is_refusedby materializing an installed gem in the project so the refusal path does not depend on a flaky hostgem envprobe on Windows.Reviewed by Cursor Bugbot for commit 77870a6. Configure here.
Generated by Claude Code