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 Split, reference 3.2.0 (712c45), with Swift 6.0 for macOS (SPM) on 1 Apr 2025 22:06:15 UTC.

Swift 6 data race errors: 21

Build Command

env DEVELOPER_DIR=/Applications/Xcode-16.2.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

  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[328/342] Compiling Split SplitEntity.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[329/342] Compiling Split SplitsDecoder.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[330/342] Compiling Split SplitsEncoder.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[331/342] Compiling Split SplitsSnapshot.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[332/342] Compiling Split SplitsStorage.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[333/342] Compiling Split PersistentUniqueKeysStorage.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[334/342] Compiling Split UniqueKeyDao.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[335/342] Compiling Split UniqueKeyEntity.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[336/342] Compiling Split LatencyCounter.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[337/342] Compiling Split TelemetryConfig.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[338/342] Compiling Split TelemetryInMemoryStorage.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[339/342] Compiling Split TelemetryStats.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[340/342] Compiling Split TelemetryStorage.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[341/342] Compiling Split EventDTO.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
[342/342] Compiling Split resource_bundle_accessor.swift
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:49:30: warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 13 | }
 14 |
 15 | struct SplitsParallelDecoder: SplitsDecoder {
    |        `- note: consider making struct 'SplitsParallelDecoder' conform to the 'Sendable' protocol
 16 |     private var minTaskPerThread: Int
 17 |     private let serialDecoder: SplitsSerialDecoder
    :
 47 |         list.chunked(into: chunkSize).forEach { chunk in
 48 |             queue.addOperation {
 49 |                 let parsed = serialDecoder.decode(chunk)
    |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelDecoder' in a `@Sendable` closure
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in an isolated closure
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsDecoder.swift:51:21: warning: mutation of captured var 'splits' in concurrently-executing code
 49 |                 let parsed = serialDecoder.decode(chunk)
 50 |                 dataQueue.sync {
 51 |                     splits.append(contentsOf: parsed)
    |                     `- warning: mutation of captured var 'splits' in concurrently-executing code
 52 |                 }
 53 |             }
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:30: warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
13 | }
14 |
15 | struct SplitsParallelEncoder: SplitsEncoder {
   |        `- note: consider making struct 'SplitsParallelEncoder' conform to the 'Sendable' protocol
16 |
17 |     private var minTaskPerThread: Int
   :
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                              `- warning: capture of 'self' with non-sendable type 'SplitsParallelEncoder' in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:51:51: warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
49 |         list.chunked(into: chunkSize).forEach { splits in
50 |             queue.addOperation {
51 |                 let parsed = serialEncoder.encode(splits)
   |                                                   `- warning: capture of 'splits' with non-sendable type '[Split]' (aka 'Array<SplitDTO>') in a `@Sendable` closure
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
/Users/admin/builder/spi-builder-workspace/Split/Models/SplitModel/Split.swift:13:7: note: class 'SplitDTO' does not conform to the 'Sendable' protocol
11 | typealias Split = SplitDTO
12 |
13 | class SplitDTO: NSObject, SplitBase, Codable {
   |       `- note: class 'SplitDTO' does not conform to the 'Sendable' protocol
14 |     var name: String?
15 |     var seed: Int?
/Users/admin/builder/spi-builder-workspace/Split/Storage/Splits/SplitsEncoder.swift:53:21: warning: mutation of captured var 'splitsJson' in concurrently-executing code
51 |                 let parsed = serialEncoder.encode(splits)
52 |                 dataQueue.sync {
53 |                     splitsJson.merge( parsed, uniquingKeysWith: {(_, new) in new })
   |                     `- warning: mutation of captured var 'splitsJson' in concurrently-executing code
54 |                 }
55 |             }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:69:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 67 |     func recordLatency(method: TelemetryMethod, latency: Int64) {
 68 |         queue.async { [weak self] in
 69 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 70 |             self.methodLatencies[method]?.addLatency(microseconds: latency)
 71 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:76:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 74 |     func recordException(method: TelemetryMethod) {
 75 |         queue.async { [weak self] in
 76 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 77 |             self.methodExceptionCounters[method]?+=1
 78 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:87:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 85 |     func recordImpressionStats(type: TelemetryImpressionsDataType, count: Int) {
 86 |         queue.async { [weak self] in
 87 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 88 |             self.impressionsStats[type] = (self.impressionsStats[type] ?? 0) + count
 89 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:94:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
 92 |     func recordEventStats(type: TelemetryEventsDataType, count: Int) {
 93 |         queue.async { [weak self] in
 94 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
 95 |             self.eventsStats[type] = (self.eventsStats[type] ?? 0) + count
 96 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:105:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
103 |     func recordHttpError(resource: Resource, status: Int) {
104 |         queue.async { [weak self] in
105 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
106 |             if self.httpErrors[resource] == nil {
107 |                 self.httpErrors[resource] = [status: 1]
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:117:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
115 |     func recordHttpLatency(resource: Resource, latency: Int64) {
116 |         queue.async { [weak self] in
117 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
118 |             self.httpLatencies[resource]?.addLatency(microseconds: latency)
119 |         }
/Users/admin/builder/spi-builder-workspace/Split/Telemetry/Storage/TelemetryInMemoryStorage.swift:142:30: warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
  9 | import Foundation
 10 |
 11 | class InMemoryTelemetryStorage: TelemetryStorage {
    |       `- note: class 'InMemoryTelemetryStorage' does not conform to the 'Sendable' protocol
 12 |
 13 |     private static let kQueuePrefix = "split-telemetry"
    :
140 |     func recordUpdatesFromSse(type: TelemetryUpdatesFromSseType) {
141 |         queue.async { [weak self] in
142 |             guard let self = self else { return }
    |                              `- warning: capture of 'self' with non-sendable type 'InMemoryTelemetryStorage?' in a `@Sendable` closure
143 |             self.updatesFromSse[type] = (self.updatesFromSse[type] ?? 0) + 1
144 |         }
Build complete! (21.35s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Split",
  "name" : "Split",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "9.0"
    },
    {
      "name" : "macos",
      "version" : "10.11"
    },
    {
      "name" : "watchos",
      "version" : "7.0"
    },
    {
      "name" : "tvos",
      "version" : "9.0"
    }
  ],
  "products" : [
    {
      "name" : "Split",
      "targets" : [
        "Split"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "Split",
      "module_type" : "SwiftTarget",
      "name" : "Split",
      "path" : "Split",
      "product_memberships" : [
        "Split"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Split/Storage/split_cache.xcdatamodeld",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Api/CertificatePinningConfig.swift",
        "Api/DefaultSplitClient.swift",
        "Api/DefaultSplitFactory.swift",
        "Api/DefaultSplitFactoryBuilder.swift",
        "Api/DefaultSplitManager.swift",
        "Api/Destroyable.swift",
        "Api/EvaluationOptions.swift",
        "Api/EventsTracker.swift",
        "Api/FailHelpers.swift",
        "Api/FilterBuilder.swift",
        "Api/FlagSetsValidator.swift",
        "Api/InternalSplitClient.swift",
        "Api/LocalhostSplitClient.swift",
        "Api/LocalhostSplitFactory.swift",
        "Api/SplitApiFacade.swift",
        "Api/SplitCertPinningAuthenticator.swift",
        "Api/SplitClient.swift",
        "Api/SplitClientConfig.swift",
        "Api/SplitClientManager.swift",
        "Api/SplitDatabaseHelper.swift",
        "Api/SplitEncryptionLevel.swift",
        "Api/SplitError.swift",
        "Api/SplitFactory.swift",
        "Api/SplitFactoryBuilder.swift",
        "Api/SplitFilter.swift",
        "Api/SplitHttpsAuthenticator.swift",
        "Api/SplitLocalhostDataSource.swift",
        "Api/SplitLogLevel.swift",
        "Api/SplitManager.swift",
        "Api/SplitResult.swift",
        "Api/SplitView.swift",
        "Api/SyncConfig.swift",
        "Api/TelemetryConfigHelper.swift",
        "Api/UserConsentManager.swift",
        "Common/Config/UserConsent.swift",
        "Common/Extensions/Array+Chunked.swift",
        "Common/Extensions/Array+DynamicCodable.swift",
        "Common/Extensions/Array+asSet.swift",
        "Common/Extensions/Bundle+Finder.swift",
        "Common/Extensions/Bundle+Name.swift",
        "Common/Extensions/Data+StringRepresentation.swift",
        "Common/Extensions/Date+Utils.swift",
        "Common/Extensions/Dictionary+DynamicCodable.swift",
        "Common/Extensions/Dictionary+Extensions.swift",
        "Common/Extensions/Dictionary+JSON.swift",
        "Common/Extensions/Int+Extension.swift",
        "Common/Extensions/Set+Extension.swift",
        "Common/Extensions/SplitView+StringConvertible.swift",
        "Common/Extensions/String+Utils.swift",
        "Common/Extensions/UInt64+bits.swift",
        "Common/ServiceConstants.swift",
        "Common/Structs/BlockingQueue.swift",
        "Common/Structs/ConcurrentArrayQueue.swift",
        "Common/Structs/ConcurrentDictionary.swift",
        "Common/Structs/ConcurrentDictionaryList.swift",
        "Common/Structs/ConcurrentSet.swift",
        "Common/Structs/KeyStorage.swift",
        "Common/Structs/LRUCache.swift",
        "Common/Structs/SynchronizedDictionary.swift",
        "Common/Structs/SynchronizedDictionaryComposed.swift",
        "Common/Structs/SynchronizedDictionarySet.swift",
        "Common/Structs/SynchronizedList.swift",
        "Common/Utils/Atomic.swift",
        "Common/Utils/Base64Utils.swift",
        "Common/Utils/CastUtils.swift",
        "Common/Utils/Cipher.swift",
        "Common/Utils/CompressionUtil.swift",
        "Common/Utils/DbCipher.swift",
        "Common/Utils/FileUtil.swift",
        "Common/Utils/InfoUtils.swift",
        "Common/Utils/Logger.swift",
        "Common/Utils/NotificationsHelper.swift",
        "Common/Utils/PeriodicTaskManager.swift",
        "Common/Utils/Spec.swift",
        "Common/Utils/SplitHelper.swift",
        "Common/Utils/Stopwatch.swift",
        "Common/Utils/ThreadUtils.swift",
        "Common/Utils/Version.swift",
        "Common/Validators/AnyValueValidator.swift",
        "Common/Validators/ApiKeyValidator.swift",
        "Common/Validators/EventValidator.swift",
        "Common/Validators/FactoryMonitor.swift",
        "Common/Validators/KeyValidator.swift",
        "Common/Validators/PropertyValidator.swift",
        "Common/Validators/SplitValidator.swift",
        "Common/Validators/ValidationConfig.swift",
        "Common/Validators/ValidationErrorInfo.swift",
        "Common/Validators/ValidatorMessageLogger.swift",
        "Common/Yaml/YAMLOperators.swift",
        "Common/Yaml/YAMLParser.swift",
        "Common/Yaml/YAMLRegex.swift",
        "Common/Yaml/YAMLResult.swift",
        "Common/Yaml/YAMLTokenizer.swift",
        "Common/Yaml/Yaml.swift",
        "Engine/Constants/SplitConstants.swift",
        "Engine/DefaultTreatmentManager.swift",
        "Engine/Evaluator.swift",
        "Engine/EvaluatorError.swift",
        "Engine/Hashing/LegacyHash.swift",
        "Engine/Hashing/Murmur3Hash.swift",
        "Engine/Hashing/Murmur64x128.swift",
        "Engine/Partition.swift",
        "Engine/Splitter.swift",
        "Engine/TreatmentManager.swift",
        "Events/EventsManagerCoordinator.swift",
        "Events/SplitEvent.swift",
        "Events/SplitEventActionTask.swift",
        "Events/SplitEventTask.swift",
        "Events/SplitEventsManager.swift",
        "Events/SplitInternalEvent.swift",
        "FetcherEngine/HttpMySegmentsFetcher.swift",
        "FetcherEngine/HttpSplitFetcher.swift",
        "FetcherEngine/Recorder/EventsRecorder.swift",
        "FetcherEngine/Recorder/EventsRecorderWorker.swift",
        "FetcherEngine/Recorder/ImpressionsCountRecorder.swift",
        "FetcherEngine/Recorder/ImpressionsCountRecorderWorker.swift",
        "FetcherEngine/Recorder/ImpressionsRecorder.swift",
        "FetcherEngine/Recorder/ImpressionsRecorderWorker.swift",
        "FetcherEngine/Recorder/PeriodicRecorderWorker.swift",
        "FetcherEngine/Recorder/RecorderWorker.swift",
        "FetcherEngine/Recorder/TelemetryConfigRecorder.swift",
        "FetcherEngine/Recorder/TelemetryConfigRecorderWorker.swift",
        "FetcherEngine/Recorder/TelemetryStatsRecorder.swift",
        "FetcherEngine/Recorder/TelemetryStatsRecorderWorker.swift",
        "FetcherEngine/Recorder/UniqueKeysRecorder.swift",
        "FetcherEngine/Recorder/UniqueKeysRecorderWorker.swift",
        "FetcherEngine/Refresh/BackgroundSyncWorker.swift",
        "FetcherEngine/Refresh/ChangesChecker.swift",
        "FetcherEngine/Refresh/EmptyMySegmentsStorage.swift",
        "FetcherEngine/Refresh/PeriodicSyncWorker.swift",
        "FetcherEngine/Refresh/QueryableMySegmentsFetcher.swift",
        "FetcherEngine/Refresh/RetryableSegmentsSyncWorker.swift",
        "FetcherEngine/Refresh/RetryableSyncWorker.swift",
        "FetcherEngine/Refresh/SplitBgSynchronizer.swift",
        "FetcherEngine/Refresh/SplitsSyncHelper.swift",
        "FetcherEngine/SyncHelper.swift",
        "Impressions/DecoratedImpression.swift",
        "Impressions/DefaultImpressionsObserver.swift",
        "Impressions/HashedImpression.swift",
        "Impressions/Impression.swift",
        "Impressions/ImpressionsConstants.swift",
        "Impressions/ImpressionsCount.swift",
        "Impressions/ImpressionsCountEntity.swift",
        "Impressions/ImpressionsCountPerFeature.swift",
        "Impressions/ImpressionsCounter.swift",
        "Impressions/ImpressionsTest.swift",
        "Impressions/KeyImpression.swift",
        "Impressions/UniqueKey.swift",
        "Impressions/UniqueKeys.swift",
        "Initialization/SplitComponentCatalog.swift",
        "Initialization/SplitComponentFactory.swift",
        "Localhost/LocalhostApiDataSource.swift",
        "Localhost/LocalhostClientManager.swift",
        "Localhost/LocalhostFileDataSource.swift",
        "Localhost/LocalhostSplitsParser.swift",
        "Localhost/LocalhostSplitsStorage.swift",
        "Localhost/LocalhostSynchronizer.swift",
        "Localhost/SpaceDelimitedLocalhostSplitsParser.swift",
        "Localhost/YamlLocalhostSplitsParser.swift",
        "Matchers/AllKeysMatcher.swift",
        "Matchers/BaseMatcher.swift",
        "Matchers/BetweenMatcher.swift",
        "Matchers/ContainsAllOfSetMatcher.swift",
        "Matchers/ContainsAnyOfSetMatcher.swift",
        "Matchers/ContainsStringMatcher.swift",
        "Matchers/DataType/DateTime.swift",
        "Matchers/DependencyMatcher.swift",
        "Matchers/EndsWithMatcher.swift",
        "Matchers/EqualToBooleanMatcher.swift",
        "Matchers/EqualToMatcher.swift",
        "Matchers/EqualToSetMatcher.swift",
        "Matchers/GreaterThanOrEqualToMatcher.swift",
        "Matchers/InSegmentMatcher.swift",
        "Matchers/LessThanOrEqualToMatcher.swift",
        "Matchers/MatchesStringMatcher.swift",
        "Matchers/PartOfSetMatcher.swift",
        "Matchers/Semver/BetweenSemverMatcher.swift",
        "Matchers/Semver/EqualToSemverMatcher.swift",
        "Matchers/Semver/GreaterThanOrEqualToSemverMatcher.swift",
        "Matchers/Semver/InListSemverMatcher.swift",
        "Matchers/Semver/LessThanOrEqualToSemverMatcher.swift",
        "Matchers/Semver/Semver.swift",
        "Matchers/StartWithMatcher.swift",
        "Matchers/Whitelist.swift",
        "Models/BetweenMatcherData.swift",
        "Models/BetweenStringMatcherData.swift",
        "Models/Condition.swift",
        "Models/ConditionType.swift",
        "Models/DataType.swift",
        "Models/DependencyMatcherData.swift",
        "Models/Extensions/SplitModels+StringConvertible.swift",
        "Models/Key.swift",
        "Models/KeySelector.swift",
        "Models/Matcher.swift",
        "Models/MatcherCombiner.swift",
        "Models/MatcherGroup.swift",
        "Models/MatcherProtocol.swift",
        "Models/MatcherType.swift",
        "Models/Segment.swift",
        "Models/SplitModel/Split.swift",
        "Models/SplitModel/SplitBase.swift",
        "Models/SplitModel/SplitChange.swift",
        "Models/Status.swift",
        "Models/TrafficType.swift",
        "Models/Treatment.swift",
        "Models/UnaryNumericMatcherData.swift",
        "Models/UserDefinedSegmentMatcherData.swift",
        "Models/WhitelistMatcherData.swift",
        "Network/Configuration/RestClientConfiguration.swift",
        "Network/DataParsing/Json.swift",
        "Network/Endpoints/Endpoint.swift",
        "Network/Endpoints/EndpointFactory.swift",
        "Network/Endpoints/ServiceEndpoints.swift",
        "Network/Errors/GenericError.swift",
        "Network/HttpClient/HttpClient.swift",
        "Network/HttpClient/HttpDataRequest.swift",
        "Network/HttpClient/HttpDataResponse.swift",
        "Network/HttpClient/HttpError.swift",
        "Network/HttpClient/HttpParameter.swift",
        "Network/HttpClient/HttpParameters.swift",
        "Network/HttpClient/HttpRequest.swift",
        "Network/HttpClient/HttpRequestList.swift",
        "Network/HttpClient/HttpRequestManager.swift",
        "Network/HttpClient/HttpResponse.swift",
        "Network/HttpClient/HttpSession.swift",
        "Network/HttpClient/HttpStreamRequest.swift",
        "Network/HttpClient/HttpStreamResponse.swift",
        "Network/HttpClient/HttpTask.swift",
        "Network/NetworkReachabilityManager.swift",
        "Network/RestClient/RestClient+Impressions.swift",
        "Network/RestClient/RestClient+ImpressionsCount.swift",
        "Network/RestClient/RestClient+MySegments.swift",
        "Network/RestClient/RestClient+SplitChanges.swift",
        "Network/RestClient/RestClient+SseAuthenticator.swift",
        "Network/RestClient/RestClient+TelemetryConfig.swift",
        "Network/RestClient/RestClient+TelemetryStats.swift",
        "Network/RestClient/RestClient+TrackEvents.swift",
        "Network/RestClient/RestClient+UniqueKeys.swift",
        "Network/RestClient/RestClient.swift",
        "Network/Results/AllSegmentsChange.swift",
        "Network/Results/DataResult.swift",
        "Network/Results/SegmentsChange.swift",
        "Network/Security/HostDomainFilter.swift",
        "Network/Security/PublicKeyHeaders.swift",
        "Network/Security/TlsPinChecker.swift",
        "Network/Streaming/BackoffCounterTimer.swift",
        "Network/Streaming/DefaultSseNotificationParser.swift",
        "Network/Streaming/EventStreamParser.swift",
        "Network/Streaming/FeatureFlagsPayloadDecoder.swift",
        "Network/Streaming/JwtTokenParser.swift",
        "Network/Streaming/MySegmentsPayloadDecoder.swift",
        "Network/Streaming/NotificationManagerKeeper.swift",
        "Network/Streaming/PushNotificationManager.swift",
        "Network/Streaming/ReconnectBackoffCounter.swift",
        "Network/Streaming/RetryableSplitsUpdateWorkerFactory.swift",
        "Network/Streaming/SegmentsPayloadDecoder.swift",
        "Network/Streaming/SseAuthenticator.swift",
        "Network/Streaming/SseClient.swift",
        "Network/Streaming/SseClientFactory.swift",
        "Network/Streaming/SseConnectionHandler.swift",
        "Network/Streaming/SseHandler.swift",
        "Network/Streaming/SseNotificationProcessor.swift",
        "Network/Streaming/SseNotifications.swift",
        "Network/Streaming/SyncEventBroadcaster.swift",
        "Network/Streaming/SyncSegmentsUpdateWorker.swift",
        "Network/Streaming/SyncUpdateWorker.swift",
        "Network/Streaming/Timers.swift",
        "Network/Sync/ByKeyFacade.swift",
        "Network/Sync/EventsSynchronizer.swift",
        "Network/Sync/FeatureFlagsSynchronizer.swift",
        "Network/Sync/ImpressionsTracker.swift",
        "Network/Sync/MySegmentsSynchronizer.swift",
        "Network/Sync/SyncCommons.swift",
        "Network/Sync/SyncGuardian.swift",
        "Network/Sync/SyncManager.swift",
        "Network/Sync/SyncManagerBuilder.swift",
        "Network/Sync/Synchronizer.swift",
        "Network/Sync/TelemetrySynchronizer.swift",
        "Network/Sync/UniqueKeyTracker.swift",
        "Secure/SecureDataStore.swift",
        "Storage/Attributes/AttributeEntity.swift",
        "Storage/Attributes/AttributeMap.swift",
        "Storage/Attributes/AttributesDao.swift",
        "Storage/Attributes/AttributesStorage.swift",
        "Storage/Attributes/ByKeyAttributesStorage.swift",
        "Storage/Attributes/OneKeyAttributesStorage.swift",
        "Storage/Attributes/OneKeyPersistentAttributesStorage.swift",
        "Storage/Attributes/PersistentAttributesStorage.swift",
        "Storage/CoreDataContextBuilder.swift",
        "Storage/CoreDataHelper.swift",
        "Storage/DefaultFileStorage.swift",
        "Storage/Events/EventDao.swift",
        "Storage/Events/EventEntity.swift",
        "Storage/Events/EventsStorage.swift",
        "Storage/Events/PersistentEventsStorage.swift",
        "Storage/FileStorage.swift",
        "Storage/GeneralInfo/GeneralInfoDao.swift",
        "Storage/GeneralInfo/GeneralInfoEntity.swift",
        "Storage/Global/GlobalSecureStorage.swift",
        "Storage/Global/KeyValueStorage.swift",
        "Storage/HashedImpression/HashedImpressionDao.swift",
        "Storage/HashedImpression/HashedImpressionEntity.swift",
        "Storage/HashedImpression/HashedImpressionStorage.swift",
        "Storage/HashedImpression/PersistentHashedImpressionsStorage.swift",
        "Storage/Impressions/ImpressionDao.swift",
        "Storage/Impressions/ImpressionEntity.swift",
        "Storage/Impressions/ImpressionsCountDao.swift",
        "Storage/Impressions/ImpressionsMode.swift",
        "Storage/Impressions/ImpressionsStorage.swift",
        "Storage/Impressions/PersistentImpressionsCountStorage.swift",
        "Storage/Impressions/PersistentImpressionsStorage.swift",
        "Storage/LegacyStorageCleaner.swift",
        "Storage/MySegments/ByKeyMySegmentsStorage.swift",
        "Storage/MySegments/MyLargeSegmentsStorage.swift",
        "Storage/MySegments/MySegmentEntity.swift",
        "Storage/MySegments/MySegmentsDao.swift",
        "Storage/MySegments/MySegmentsStorage.swift",
        "Storage/MySegments/PersistentMySegmentsStorage.swift",
        "Storage/SplitDatabase.swift",
        "Storage/Splits/FlagSetsCache.swift",
        "Storage/Splits/PersistentSplitsStorage.swift",
        "Storage/Splits/ProcessedSplitChange.swift",
        "Storage/Splits/SplitDao.swift",
        "Storage/Splits/SplitEntity.swift",
        "Storage/Splits/SplitsDecoder.swift",
        "Storage/Splits/SplitsEncoder.swift",
        "Storage/Splits/SplitsSnapshot.swift",
        "Storage/Splits/SplitsStorage.swift",
        "Storage/UniqueKeys/PersistentUniqueKeysStorage.swift",
        "Storage/UniqueKeys/UniqueKeyDao.swift",
        "Storage/UniqueKeys/UniqueKeyEntity.swift",
        "Telemetry/LatencyCounter.swift",
        "Telemetry/Storage/TelemetryConfig.swift",
        "Telemetry/Storage/TelemetryInMemoryStorage.swift",
        "Telemetry/Storage/TelemetryStats.swift",
        "Telemetry/Storage/TelemetryStorage.swift",
        "Track/Models/EventDTO.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
Done.