Copilot content addressable test - #191
Draft
jenshenny wants to merge 9 commits into
Draft
Conversation
Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
Co-authored-by: Gira Chawda <gira.chawda@shopify.com> Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
…metadata Co-authored-by: Gira Chawda <gira.chawda@shopify.com> Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
…al cache Co-authored-by: Jenny Shen <jenny.shen@shopify.com>
Assisted-By: devx/54c45e18-0bd1-4563-826a-f8cbc21a3b90
Assisted-By: devx/54c45e18-0bd1-4563-826a-f8cbc21a3b90
…iants Assisted-By: devx/25d3c4be-88ab-425e-a76b-08a00d8e9d71
There was a problem hiding this comment.
Pull request overview
Adds content-addressable platform gems keyed by SHA-256 prefixes and Ruby ABI metadata across RubyGems and Bundler.
Changes:
- Adds content-address-aware building, installation, fetching, resolution, and compact-index handling.
- Extends specifications, tuples, lockfiles, and CLI commands with content-address and Ruby ABI data.
- Adds broad RubyGems and Bundler test coverage.
Reviewed changes
Copilot reviewed 83 out of 83 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
Manifest.txt |
Packages the new content-address module. |
lib/rubygems.rb |
Autoloads content-address support. |
lib/rubygems/basic_specification.rb |
Uses content addresses in full names. |
lib/rubygems/content_address.rb |
Defines address validation and applicability. |
lib/rubygems/specification.rb |
Adds content-address and Ruby ABI metadata. |
lib/rubygems/stub_specification.rb |
Parses content-addressed gemspec stubs. |
lib/rubygems/name_tuple.rb |
Extends tuples with address and ABI fields. |
lib/rubygems/package.rb |
Builds and verifies addressed packages. |
lib/rubygems/package_task.rb |
Moves the filename returned by package builds. |
lib/rubygems/installer.rb |
Assigns verified addresses during installation. |
lib/rubygems/source.rb |
Decodes compact-index content-address metadata. |
lib/rubygems/source/local.rb |
Verifies local addressed packages. |
lib/rubygems/spec_fetcher.rb |
Decodes and filters addressed tuples. |
lib/rubygems/compact_index_client.rb |
Renames the compact-index suffix field. |
lib/rubygems/safe_marshal.rb |
Permits tuple address and ABI fields. |
lib/rubygems/query_utils.rb |
Displays platform and ABI variants. |
lib/rubygems/resolver.rb |
Prefers addressed resolver candidates. |
lib/rubygems/resolver/specification.rb |
Adds resolver address metadata. |
lib/rubygems/resolver/spec_specification.rb |
Delegates specification addresses. |
lib/rubygems/resolver/installer_set.rb |
Preserves local package addresses. |
lib/rubygems/resolver/index_specification.rb |
Distinguishes addressed index specifications. |
lib/rubygems/resolver/api_specification.rb |
Interprets compact-index address suffixes. |
lib/rubygems/resolver/api_set.rb |
Passes suffix metadata to API specifications. |
lib/rubygems/commands/build_command.rb |
Adds the --ruby-abi build option. |
lib/rubygems/commands/dependency_command.rb |
Decodes addressed remote dependencies. |
lib/rubygems/commands/outdated_command.rb |
Uses addresses for cooldown timestamps. |
lib/rubygems/commands/push_command.rb |
Adds platform and ABI package selection. |
lib/rubygems/commands/update_command.rb |
Handles addressed cooldown tuples. |
lib/rubygems/commands/yank_command.rb |
Sends Ruby ABI data when yanking. |
lib/bundler/endpoint_specification.rb |
Decodes addressed endpoint specifications. |
lib/bundler/fetcher.rb |
Treats index field three as a suffix. |
lib/bundler/lazy_specification.rb |
Persists addresses through locking. |
lib/bundler/lockfile_parser.rb |
Parses addressed lockfile entries. |
lib/bundler/match_platform.rb |
Prefers compatible addressed variants. |
lib/bundler/remote_specification.rb |
Adds address-aware remote names. |
lib/bundler/resolver.rb |
Retains distinct addressed variants. |
lib/bundler/rubygems_ext.rb |
Adds cross-version compatibility extensions. |
lib/bundler/rubygems_gem_installer.rb |
Assigns addresses in Bundler installs. |
lib/bundler/rubygems_integration.rb |
Reads and verifies package addresses. |
lib/bundler/source/rubygems.rb |
Preserves addresses after downloads. |
lib/bundler/stub_specification.rb |
Copies addresses from RubyGems stubs. |
spec/bundler/endpoint_specification_spec.rb |
Tests endpoint address metadata. |
spec/bundler/lockfile_parser_spec.rb |
Tests addressed lockfile parsing. |
spec/bundler/override_spec.rb |
Updates override test doubles. |
spec/bundler/remote_specification_spec.rb |
Tests legacy remote suffix handling. |
spec/install/cooldown_spec.rb |
Migrates cooldown tests to the v2 index. |
spec/install/gemfile/content_addressable_spec.rb |
Tests addressed Bundler installation flows. |
spec/other/ext_spec.rb |
Tests address-aware lock names. |
spec/support/artifice/compact_index_cooldown.rb |
Removes the old cooldown endpoint. |
spec/support/artifice/compact_index_v2.rb |
Activates the v2 compact-index endpoint. |
spec/support/artifice/helpers/compact_index.rb |
Uses full names for checksums. |
spec/support/artifice/helpers/compact_index_cooldown.rb |
Removes the old cooldown helper. |
spec/support/artifice/helpers/compact_index_v2.rb |
Adds addressed compact-index fixtures. |
spec/support/builders.rb |
Supports building Ruby ABI variants. |
test/rubygems/helper.rb |
Adds addressed gem fixture helpers. |
test/rubygems/test_gem_commands_build_command.rb |
Tests ABI-scoped builds. |
test/rubygems/test_gem_commands_dependency_command.rb |
Tests addressed dependency output. |
test/rubygems/test_gem_commands_fetch_command.rb |
Tests addressed fetching. |
test/rubygems/test_gem_commands_info_command.rb |
Tests platform and ABI details. |
test/rubygems/test_gem_commands_list_command.rb |
Tests addressed remote listings. |
test/rubygems/test_gem_commands_outdated_command.rb |
Tests addressed cooldown reporting. |
test/rubygems/test_gem_commands_push_command.rb |
Tests push selectors and ambiguity handling. |
test/rubygems/test_gem_commands_search_command.rb |
Tests addressed search output. |
test/rubygems/test_gem_commands_update_command.rb |
Tests addressed updates and cooldowns. |
test/rubygems/test_gem_commands_yank_command.rb |
Tests ABI-aware yanking. |
test/rubygems/test_gem_compact_index_client.rb |
Updates suffix-index assertions. |
test/rubygems/test_gem_content_address.rb |
Tests address recognition and applicability. |
test/rubygems/test_gem_dependency_installer.rb |
Tests local addressed installation. |
test/rubygems/test_gem_installer.rb |
Tests verification and coexistence. |
test/rubygems/test_gem_name_tuple.rb |
Tests extended tuple behavior. |
test/rubygems/test_gem_package.rb |
Tests ABI builds and validation. |
test/rubygems/test_gem_package_task.rb |
Tests returned build filenames. |
test/rubygems/test_gem_remote_fetcher.rb |
Tests addressed download and installation. |
test/rubygems/test_gem_resolver.rb |
Tests addressed candidate preference. |
test/rubygems/test_gem_resolver_api_set.rb |
Tests addressed API-set results. |
test/rubygems/test_gem_resolver_api_specification.rb |
Tests addressed API specifications. |
test/rubygems/test_gem_resolver_index_specification.rb |
Tests addressed index identity. |
test/rubygems/test_gem_safe_marshal.rb |
Tests tuple metadata unmarshalling. |
test/rubygems/test_gem_source.rb |
Tests compact-index metadata decoding. |
test/rubygems/test_gem_source_local.rb |
Tests rejection of mismatched local addresses. |
test/rubygems/test_gem_spec_fetcher.rb |
Tests addressed tuple fetching. |
test/rubygems/test_gem_specification.rb |
Tests ABI derivation and serialization. |
test/rubygems/test_gem_stub_specification.rb |
Tests addressed stub parsing. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| INFO_NAME = 0 | ||
| INFO_VERSION = 1 | ||
| INFO_PLATFORM = 2 | ||
| INFO_SUFFIX = 2 |
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 was the end-user or developer problem that led to this PR?
What is your fix for the problem, implemented in this PR?
Make sure the following tasks are checked