Repository navigation
fix(swift): accept versioned manifests with older tools requirements - #511
Conversation
Codex Review Summary: ✅ CompletedThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Codex Review: Didn't find any major issues. Keep it up! Reviewed commit: ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## main #511 +/- ##
=========================================
Coverage 88.86% 88.86%
Complexity 1850 1850
=========================================
Files 923 923
Lines 91586 91574 -12
Branches 16582 16578 -4
=========================================
- Hits 81388 81379 -9
+ Misses 10198 10195 -3
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
klboke
left a comment
There was a problem hiding this comment.
Reviewed commit 1ed2084. No code-level blockers found.
The change preserves the registry's two identities: filename-derived versions remain lookup keys, and content-declared versions remain the advertised minimum tools requirements. Multiple manifests declaring 5.6 retain separate 5.6/5.7 lookup entries. The source archive is preserved byte-for-byte, and the existing ZIP bounds, path checks, root selection, and declaration syntax validation remain active.
Verified both new unit regressions fail on the original code and pass with the fix. The 135 focused Swift tests pass without skips. Three packaged-server HTTP compatibility tests also pass without skips against Nexus 3.94.0 and two JVM replicas sharing PostgreSQL 16, including the real apple/swift-protobuf 1.20.1 proxy path and hosted/group manifest selection and Link attributes. The new live tests are selected by the existing Swift compatibility suite in Full E2E.
The automated review of this same commit reports no findings. CI and Full E2E are still running; merge readiness remains dependent on their terminal results.
Swift GitHub proxies rejected
apple/swift-protobuf1.20.1 with HTTP 422 becausePackage@swift-5.7.swiftdeclares tools version 5.6. The filename selects a version-specific manifest, while its declaration specifies the minimum tools requirement; SwiftPM permits these values to differ.Remove the filename/declaration matching restriction while retaining tools-version syntax validation and all archive safety limits. Keep filename-derived lookup versions and content-declared tools versions separate through persistence and manifest responses. This removes validation work without adding I/O, queries, or archive passes.
Add regressions for archive inspection and GitHub downloads, plus Nexus-backed HTTP coverage for hosted/group reads, cross-replica manifest selection, Link attributes, and the real upstream
swift-protobufrelease. Correct the existing rejection test to cover malformed declarations.Validation:
Protocol reference: Swift Registry manifest selection and Link attributes.
Closes #510.