The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of Cirrus, reference 0.1.4 (822060), with Swift 6.1 for macOS (SPM) on 27 Apr 2025 05:02:46 UTC.

Swift 6 data race errors: 0

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures

Build Log

========================================
RunAll
========================================
Builder version: 4.61.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/jayhickey/cirrus.git
Reference: 0.1.4
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/jayhickey/cirrus
 * tag               0.1.4      -> FETCH_HEAD
HEAD is now at 8220608 Allow limit exceeded errors to be retried (#6)
Cloned https://github.com/jayhickey/cirrus.git
Revision (git rev-parse @):
8220608a5f6a82501bb43cfdab507e90aa62b6fc
SUCCESS checkout https://github.com/jayhickey/cirrus.git at 0.1.4
========================================
ResolveProductDependencies
========================================
Resolving dependencies ...
{
  "identity": ".resolve-product-dependencies",
  "name": "resolve-dependencies",
  "url": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "version": "unspecified",
  "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies",
  "dependencies": [
    {
      "identity": "cirrus",
      "name": "Cirrus",
      "url": "https://github.com/jayhickey/cirrus.git",
      "version": "unspecified",
      "path": "/Users/admin/builder/spi-builder-workspace/.resolve-product-dependencies/.build/checkouts/cirrus",
      "dependencies": [
      ]
    }
  ]
}
Fetching https://github.com/jayhickey/cirrus.git
[1/198] Fetching cirrus
Fetched https://github.com/jayhickey/cirrus.git from cache (0.72s)
Creating working copy for https://github.com/jayhickey/cirrus.git
Working copy of https://github.com/jayhickey/cirrus.git resolved at 0.1.4 (8220608)
warning: '.resolve-product-dependencies': dependency 'cirrus' is not used by any target
Found 0 product dependencies
========================================
Build
========================================
Selected platform:         macosSpm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/jayhickey/cirrus.git
https://github.com/jayhickey/cirrus.git
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Cirrus",
  "name" : "Cirrus",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "Cirrus",
      "targets" : [
        "Cirrus"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CloudKitCodable",
      "targets" : [
        "CloudKitCodable"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CloudKitCodable",
      "module_type" : "SwiftTarget",
      "name" : "CloudKitCodable",
      "path" : "Sources/CloudKitCodable",
      "product_memberships" : [
        "Cirrus",
        "CloudKitCodable"
      ],
      "sources" : [
        "CloudKitCodable+LastModifiedDate.swift",
        "CloudKitCodable.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Cirrus",
      "module_type" : "SwiftTarget",
      "name" : "Cirrus",
      "path" : "Sources/Cirrus",
      "product_memberships" : [
        "Cirrus"
      ],
      "sources" : [
        "DeleteRecordContext.swift",
        "Error+CloudKit.swift",
        "RecordModifyingContext.swift",
        "SyncEngine+AccountStatus.swift",
        "SyncEngine+RecordModification.swift",
        "SyncEngine+RemoteChangeTracking.swift",
        "SyncEngine+Subscription.swift",
        "SyncEngine+Zone.swift",
        "SyncEngine.swift",
        "UploadRecordContext.swift"
      ],
      "target_dependencies" : [
        "CKRecordCoder",
        "CloudKitCodable"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CKRecordCoderTests",
      "module_type" : "SwiftTarget",
      "name" : "CKRecordCoderTests",
      "path" : "Tests/CKRecordCoderTests",
      "sources" : [
        "CKRecordDecoderTests.swift",
        "CKRecordEncoderDecoderRoundTripTests.swift",
        "CKRecordEncoderTests.swift",
        "Mocks/Bookmark.swift",
        "Mocks/Numbers.swift",
        "Mocks/ParentChild.swift",
        "Mocks/Person.swift",
        "Mocks/URLModel.swift",
        "Mocks/UUIDModel.swift"
      ],
      "target_dependencies" : [
        "CKRecordCoder"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CKRecordCoder",
      "module_type" : "SwiftTarget",
      "name" : "CKRecordCoder",
      "path" : "Sources/CKRecordCoder",
      "product_memberships" : [
        "Cirrus"
      ],
      "sources" : [
        "CKRecordDecoder.swift",
        "CKRecordEncoder.swift",
        "CKRecordEncodingError.swift",
        "CKRecordKeyedDecodingContainer.swift",
        "CKRecordKeyedEncodingContainer.swift",
        "CKRecordSingleValueDecoder.swift",
        "CKRecordSingleValueEncoder.swift",
        "CloudKitCodable+RecordType.swift",
        "CloudKitSystemFieldsKeyName.swift",
        "URLTransformer.swift"
      ],
      "target_dependencies" : [
        "CloudKitCodable"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/4] Write sources
[3/4] Write swift-version-2F0A5646E1D333AE.txt
[5/7] Compiling CloudKitCodable CloudKitCodable.swift
[6/7] Emitting module CloudKitCodable
[7/7] Compiling CloudKitCodable CloudKitCodable+LastModifiedDate.swift
[8/17] Compiling CKRecordCoder CloudKitCodable+RecordType.swift
[9/17] Compiling CKRecordCoder CloudKitSystemFieldsKeyName.swift
[10/18] Compiling CKRecordCoder CKRecordSingleValueEncoder.swift
[11/18] Compiling CKRecordCoder CKRecordKeyedEncodingContainer.swift
[12/18] Compiling CKRecordCoder CKRecordSingleValueDecoder.swift
[13/18] Compiling CKRecordCoder CKRecordEncodingError.swift
[14/18] Compiling CKRecordCoder CKRecordEncoder.swift
[15/18] Compiling CKRecordCoder CKRecordDecoder.swift
[16/18] Emitting module CKRecordCoder
[17/18] Compiling CKRecordCoder CKRecordKeyedDecodingContainer.swift
[18/18] Compiling CKRecordCoder URLTransformer.swift
[19/28] Compiling Cirrus SyncEngine+RemoteChangeTracking.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:42:9: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 40 |       // rest of the data.
 41 |       self.workQueue.async {
 42 |         self.logHandler("Commiting new change token and emitting changes", .debug)
    |         `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 43 |
 44 |         self.privateChangeToken = changeToken
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:45:38: warning: reference to captured var 'changedRecords' in concurrently-executing code
 43 |
 44 |         self.privateChangeToken = changeToken
 45 |         self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
    |                                      `- warning: reference to captured var 'changedRecords' in concurrently-executing code
 46 |         changedRecords = []
 47 |         deletedRecordIDs = []
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:45:72: warning: reference to captured var 'deletedRecordIDs' in concurrently-executing code
 43 |
 44 |         self.privateChangeToken = changeToken
 45 |         self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
    |                                                                        `- warning: reference to captured var 'deletedRecordIDs' in concurrently-executing code
 46 |         changedRecords = []
 47 |         deletedRecordIDs = []
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:46:9: warning: mutation of captured var 'changedRecords' in concurrently-executing code
 44 |         self.privateChangeToken = changeToken
 45 |         self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
 46 |         changedRecords = []
    |         `- warning: mutation of captured var 'changedRecords' in concurrently-executing code
 47 |         deletedRecordIDs = []
 48 |       }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:47:9: warning: mutation of captured var 'deletedRecordIDs' in concurrently-executing code
 45 |         self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
 46 |         changedRecords = []
 47 |         deletedRecordIDs = []
    |         `- warning: mutation of captured var 'deletedRecordIDs' in concurrently-executing code
 48 |       }
 49 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:64:13: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 62 |
 63 |           self.workQueue.async {
 64 |             self.privateChangeToken = nil
    |             `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 65 |             self.fetchRemoteChanges()
 66 |           }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:76:11: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 74 |
 75 |         self.workQueue.async {
 76 |           self.privateChangeToken = token
    |           `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 77 |         }
 78 |       }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:83:9: warning: mutation of captured var 'changedRecords' in concurrently-executing code
 81 |     operation.recordChangedBlock = { [weak self] record in
 82 |       self?.workQueue.async {
 83 |         changedRecords.append(record)
    |         `- warning: mutation of captured var 'changedRecords' in concurrently-executing code
 84 |       }
 85 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:89:38: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
 87 |     operation.recordWithIDWasDeletedBlock = { [weak self] recordID, recordType in
 88 |       self?.workQueue.async {
 89 |         guard let engineRecordType = self?.recordType,
    |                                      `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
 90 |           engineRecordType == recordType
 91 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:89:38: warning: reference to captured var 'self' in concurrently-executing code
 87 |     operation.recordWithIDWasDeletedBlock = { [weak self] recordID, recordType in
 88 |       self?.workQueue.async {
 89 |         guard let engineRecordType = self?.recordType,
    |                                      `- warning: reference to captured var 'self' in concurrently-executing code
 90 |           engineRecordType == recordType
 91 |         else { return }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:92:9: warning: mutation of captured var 'deletedRecordIDs' in concurrently-executing code
 90 |           engineRecordType == recordType
 91 |         else { return }
 92 |         deletedRecordIDs.append(recordID)
    |         `- warning: mutation of captured var 'deletedRecordIDs' in concurrently-executing code
 93 |       }
 94 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:110:11: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
108 |
109 |         self.workQueue.async {
110 |           self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
    |           `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
111 |           changedRecords = []
112 |           deletedRecordIDs = []
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:110:40: warning: reference to captured var 'changedRecords' in concurrently-executing code
108 |
109 |         self.workQueue.async {
110 |           self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
    |                                        `- warning: reference to captured var 'changedRecords' in concurrently-executing code
111 |           changedRecords = []
112 |           deletedRecordIDs = []
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:110:74: warning: reference to captured var 'deletedRecordIDs' in concurrently-executing code
108 |
109 |         self.workQueue.async {
110 |           self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
    |                                                                          `- warning: reference to captured var 'deletedRecordIDs' in concurrently-executing code
111 |           changedRecords = []
112 |           deletedRecordIDs = []
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:111:11: warning: mutation of captured var 'changedRecords' in concurrently-executing code
109 |         self.workQueue.async {
110 |           self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
111 |           changedRecords = []
    |           `- warning: mutation of captured var 'changedRecords' in concurrently-executing code
112 |           deletedRecordIDs = []
113 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:112:11: warning: mutation of captured var 'deletedRecordIDs' in concurrently-executing code
110 |           self.emitServerChanges(with: changedRecords, deletedRecordIDs: deletedRecordIDs)
111 |           changedRecords = []
112 |           deletedRecordIDs = []
    |           `- warning: mutation of captured var 'deletedRecordIDs' in concurrently-executing code
113 |         }
114 |       }
[20/28] Compiling Cirrus SyncEngine+Zone.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Zone.swift:85:13: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 83 |
 84 |           self.workQueue.async {
 85 |             self.createdCustomZone = false
    |             `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 86 |             self.createCustomZoneIfNeeded()
 87 |           }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Zone.swift:92:11: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 90 |         self.logHandler("Custom zone reported as existing, but it doesn't exist. Creating.", .error)
 91 |         self.workQueue.async {
 92 |           self.createdCustomZone = false
    |           `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 93 |           self.createCustomZoneIfNeeded()
 94 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
[21/28] Compiling Cirrus SyncEngine+AccountStatus.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+AccountStatus.swift:33:9: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
31 |     container.accountStatus { [weak self] status, error in
32 |       if let error = error {
33 |         self?.logHandler(
   |         `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
34 |           "Error retriving iCloud account status: \(error.localizedDescription)", .error)
35 |       }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
[22/28] Compiling Cirrus SyncEngine+Subscription.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Subscription.swift:91:13: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 89 |
 90 |           self.workQueue.async {
 91 |             self.createdPrivateSubscription = false
    |             `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 92 |             self.createPrivateSubscriptionsIfNeeded()
 93 |           }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+Subscription.swift:101:11: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 99 |
100 |         self.workQueue.async {
101 |           self.createdPrivateSubscription = false
    |           `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
102 |           self.createPrivateSubscriptionsIfNeeded()
103 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
[23/29] Compiling Cirrus SyncEngine.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:129:7: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
    :
127 |
128 |     workQueue.async {
129 |       self.uploadContext.buffer(models)
    |       `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
130 |       self.modifyRecords(with: self.uploadContext)
131 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:129:33: warning: capture of 'models' with non-sendable type '[Model]' in a '@Sendable' closure
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                               `- note: consider making generic parameter 'Model' conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
    :
127 |
128 |     workQueue.async {
129 |       self.uploadContext.buffer(models)
    |                                 `- warning: capture of 'models' with non-sendable type '[Model]' in a '@Sendable' closure
130 |       self.modifyRecords(with: self.uploadContext)
131 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:145:7: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
    :
143 |     workQueue.async {
144 |       // Remove any pending upload items that match the items we want to delete
145 |       self.uploadContext.removeFromBuffer(models)
    |       `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
146 |
147 |       self.deleteContext.buffer(models)
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:145:43: warning: capture of 'models' with non-sendable type '[Model]' in a '@Sendable' closure
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                               `- note: consider making generic parameter 'Model' conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
    :
143 |     workQueue.async {
144 |       // Remove any pending upload items that match the items we want to delete
145 |       self.uploadContext.removeFromBuffer(models)
    |                                           `- warning: capture of 'models' with non-sendable type '[Model]' in a '@Sendable' closure
146 |
147 |       self.deleteContext.buffer(models)
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:165:7: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
    :
163 |
164 |     workQueue.async {
165 |       self.performUpdate(with: self.uploadContext)
    |       `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
166 |       self.performUpdate(with: self.deleteContext)
167 |       self.fetchRemoteChanges()
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:197:7: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
    :
195 |
196 |     self.workQueue.async { [weak self] in
197 |       self?.fetchRemoteChanges()
    |       `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
198 |     }
199 |
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:207:24: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
    :
205 |   private func setupCloudEnvironment() {
206 |     workQueue.async { [weak self] in
207 |       guard let self = self else { return }
    |                        `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>?' in a '@Sendable' closure
208 |
209 |       // Initialize CloudKit with private custom zone, but bail early if we fail
[24/29] Compiling Cirrus RecordModifyingContext.swift
[25/29] Compiling Cirrus Error+CloudKit.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/Error+CloudKit.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/Error+CloudKit.swift:97:7: warning: capture of 'block' with non-sendable type '() -> Void' in a '@Sendable' closure
 95 |
 96 |     queue.asyncAfter(deadline: .now() + retryDelay) {
 97 |       block()
    |       |- warning: capture of 'block' with non-sendable type '() -> Void' in a '@Sendable' closure
    |       `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 98 |     }
 99 |
[26/29] Compiling Cirrus DeleteRecordContext.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/DeleteRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/DeleteRecordContext.swift:46:38: warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead
44 |       guard let data = defaults.data(forKey: deleteBufferKey) else { return [] }
45 |       do {
46 |         return try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? [CKRecord.ID] ?? []
   |                                      `- warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead
47 |       } catch {
48 |         logHandler("Failed to decode CKRecord.IDs from defaults key deleteBufferKey", .error)
[27/29] Emitting module Cirrus
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/DeleteRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/Error+CloudKit.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RemoteChangeTracking.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  1 | @_implementationOnly import CKRecordCoder
    |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
  2 | import CloudKit
  3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/UploadRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
[28/29] Compiling Cirrus SyncEngine+RecordModification.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:51:11: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 49 |
 50 |         self.workQueue.async {
 51 |           self.handleError(
    |           `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 52 |             error,
 53 |             toSave: recordsToSave,
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:55:22: warning: capture of 'context' with non-sendable type 'any RecordModifyingContextProvider' in a '@Sendable' closure
 53 |             toSave: recordsToSave,
 54 |             recordIDsToDelete: recordIDsToDelete,
 55 |             context: context
    |                      `- warning: capture of 'context' with non-sendable type 'any RecordModifyingContextProvider' in a '@Sendable' closure
 56 |           )
 57 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/RecordModifyingContext.swift:9:10: note: protocol 'RecordModifyingContextProvider' does not conform to the 'Sendable' protocol
 7 | }
 8 |
 9 | protocol RecordModifyingContextProvider {
   |          `- note: protocol 'RecordModifyingContextProvider' does not conform to the 'Sendable' protocol
10 |   var name: String { get }
11 |   var savePolicy: CKModifyRecordsOperation.RecordSavePolicy { get }
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:64:11: warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 62 |
 63 |         self.workQueue.async {
 64 |           self.modelsChangedSubject.send(
    |           `- warning: capture of 'self' with non-sendable type 'SyncEngine<Model>' in a '@Sendable' closure
 65 |             context.modelChangeForUpdatedRecords(
 66 |               recordsSaved: serverRecords ?? [],
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine.swift:7:20: note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  5 | import os.log
  6 |
  7 | public final class SyncEngine<Model: CloudKitCodable> {
    |                    `- note: generic class 'SyncEngine' does not conform to the 'Sendable' protocol
  8 |
  9 |   public enum ModelChange {
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/SyncEngine+RecordModification.swift:65:13: warning: capture of 'context' with non-sendable type 'any RecordModifyingContextProvider' in a '@Sendable' closure
 63 |         self.workQueue.async {
 64 |           self.modelsChangedSubject.send(
 65 |             context.modelChangeForUpdatedRecords(
    |             `- warning: capture of 'context' with non-sendable type 'any RecordModifyingContextProvider' in a '@Sendable' closure
 66 |               recordsSaved: serverRecords ?? [],
 67 |               recordIDsDeleted: deletedRecordIDs ?? []
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/RecordModifyingContext.swift:9:10: note: protocol 'RecordModifyingContextProvider' does not conform to the 'Sendable' protocol
 7 | }
 8 |
 9 | protocol RecordModifyingContextProvider {
   |          `- note: protocol 'RecordModifyingContextProvider' does not conform to the 'Sendable' protocol
10 |   var name: String { get }
11 |   var savePolicy: CKModifyRecordsOperation.RecordSavePolicy { get }
[29/29] Compiling Cirrus UploadRecordContext.swift
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/UploadRecordContext.swift:1:22: warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 1 | @_implementationOnly import CKRecordCoder
   |                      `- warning: using '@_implementationOnly' without enabling library evolution for 'Cirrus' may lead to instability during execution
 2 | import CloudKit
 3 | import CloudKitCodable
/Users/admin/builder/spi-builder-workspace/Sources/Cirrus/UploadRecordContext.swift:49:38: warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead
47 |       guard let data = defaults.data(forKey: uploadBufferKey) else { return [:] }
48 |       do {
49 |         return try NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data)
   |                                      `- warning: 'unarchiveTopLevelObjectWithData' was deprecated in macOS 10.14: Use unarchivedObject(ofClass:from:) instead
50 |           as? [CKRecord.ID: CKRecord] ?? [:]
51 |       } catch {
Build complete! (7.43s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Cirrus",
  "name" : "Cirrus",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "10.15"
    },
    {
      "name" : "tvos",
      "version" : "13.0"
    },
    {
      "name" : "watchos",
      "version" : "6.0"
    }
  ],
  "products" : [
    {
      "name" : "Cirrus",
      "targets" : [
        "Cirrus"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CloudKitCodable",
      "targets" : [
        "CloudKitCodable"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CloudKitCodable",
      "module_type" : "SwiftTarget",
      "name" : "CloudKitCodable",
      "path" : "Sources/CloudKitCodable",
      "product_memberships" : [
        "Cirrus",
        "CloudKitCodable"
      ],
      "sources" : [
        "CloudKitCodable+LastModifiedDate.swift",
        "CloudKitCodable.swift"
      ],
      "type" : "library"
    },
    {
      "c99name" : "Cirrus",
      "module_type" : "SwiftTarget",
      "name" : "Cirrus",
      "path" : "Sources/Cirrus",
      "product_memberships" : [
        "Cirrus"
      ],
      "sources" : [
        "DeleteRecordContext.swift",
        "Error+CloudKit.swift",
        "RecordModifyingContext.swift",
        "SyncEngine+AccountStatus.swift",
        "SyncEngine+RecordModification.swift",
        "SyncEngine+RemoteChangeTracking.swift",
        "SyncEngine+Subscription.swift",
        "SyncEngine+Zone.swift",
        "SyncEngine.swift",
        "UploadRecordContext.swift"
      ],
      "target_dependencies" : [
        "CKRecordCoder",
        "CloudKitCodable"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CKRecordCoderTests",
      "module_type" : "SwiftTarget",
      "name" : "CKRecordCoderTests",
      "path" : "Tests/CKRecordCoderTests",
      "sources" : [
        "CKRecordDecoderTests.swift",
        "CKRecordEncoderDecoderRoundTripTests.swift",
        "CKRecordEncoderTests.swift",
        "Mocks/Bookmark.swift",
        "Mocks/Numbers.swift",
        "Mocks/ParentChild.swift",
        "Mocks/Person.swift",
        "Mocks/URLModel.swift",
        "Mocks/UUIDModel.swift"
      ],
      "target_dependencies" : [
        "CKRecordCoder"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CKRecordCoder",
      "module_type" : "SwiftTarget",
      "name" : "CKRecordCoder",
      "path" : "Sources/CKRecordCoder",
      "product_memberships" : [
        "Cirrus"
      ],
      "sources" : [
        "CKRecordDecoder.swift",
        "CKRecordEncoder.swift",
        "CKRecordEncodingError.swift",
        "CKRecordKeyedDecodingContainer.swift",
        "CKRecordKeyedEncodingContainer.swift",
        "CKRecordSingleValueDecoder.swift",
        "CKRecordSingleValueEncoder.swift",
        "CloudKitCodable+RecordType.swift",
        "CloudKitSystemFieldsKeyName.swift",
        "URLTransformer.swift"
      ],
      "target_dependencies" : [
        "CloudKitCodable"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.1"
}
Done.