migrate --apply, their scripts are not executed, and their source is not published as a PkgLift artifact.10
Pinned, read-only project shapes.
0
No public pilot is mutated.
1
Repo-owned apply, resolve, and build proof.
Read-only pilot matrix
Each checkout is isolated and pinned to the commit shown. The observed result is an expectation enforced by the pilot harness, not a claim that the whole upstream project can be migrated automatically.
| Project shape | Pinned source | Observed result |
|---|---|---|
| Positive sample | Amazon IVS grid feed | SDWebImage is AUTO; AmazonIVSPlayer remains non-automatic. |
| Mixed catalog | LoodosCase | Alamofire, Kingfisher, and lottie-ios 3.2.2 are AUTO; older Firebase and unsupported identities stay non-automatic. |
| Dynamic Ruby | V2ex-Swift | post_install and dynamic Ruby force a mutation-free refusal; no direct entry becomes AUTO. |
| Broad compatibility | Tinode iOS | Eleven direct identities remain non-automatic because of dynamic Ruby and post_install. |
| Large dependency set | XcodeBenchmark | Forty-two identities are classified; MagicalRecord proves unpinned Git provenance and RxBluetoothKit proves that a tag without a full checkout commit remains incomplete. Neither becomes AUTO. The complete pilot result contains no AUTO entries. |
| Objective-C/macOS | Hammerspoon | Ten direct identities are found; CocoaHTTPServer proves unpinned Git provenance and Sentry proves that a tag without a full checkout commit remains incomplete. Neither becomes AUTO. The complete pilot result contains no AUTO entries. |
| Nested example | AcknowList example | The local AcknowList pod remains BLOCKED. |
| Parenthesized syntax | fastlane example | Literal target and pod calls are attributed exactly; unmapped HexColors remains UNKNOWN. |
| Project without workspace | FirebaseUI sample | Explicit project selection works; local pods are blocked and Firebase/Auth remains REVIEW. |
| Legacy Firebase | Legacy Auth Quickstart | Mappings are found, but attribution and use_frameworks! prevent AUTO. |
The separate end-to-end boundary
Apply is proven only in Fixtures/MixedLanguageSDWebImage, a fixture owned by this repository. It contains one target with both Swift and Objective-C consumers of SDWebImage.
- A disposable baseline copy builds with CocoaPods.
- A second disposable copy records protected source and resource hashes.
- The complete reviewed
AUTOset must equal exactlySDWebImage. - The dry run must leave the whole tree unchanged.
- Only the repo-owned copy reaches apply, SwiftPM resolution, and simulator build verification.
- The protected hashes must still match afterward.
Audit the evidence
The detailed methodology, licensing notes, pins, and expected outcomes live in Documentation/Pilots.md. The executable definitions are the read-only pilot workflow and the separate repo-owned end-to-end workflow.
Turn the unknown into reproducible evidence.
Run analysis on a recoverable copy, remove private identifiers, and share the classification or failure without applying changes.