The Swift Package Index logo.Swift Package Index

Build Information

Successful build of Optimizely, reference v5.2.1 (2eae2b), with Swift 6.1 for macOS (SPM) on 26 Jan 2026 22:11:29 UTC.

Swift 6 data race errors: 10

Build Command

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

Build Log

265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[95/102] Compiling Optimizely OptimizelyClient+Decide.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[96/102] Compiling Optimizely OptimizelyDecideOption.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[97/102] Compiling Optimizely OptimizelyDecision.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[98/102] Compiling Optimizely OptimizelyUserContext+ObjC.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[99/102] Compiling Optimizely OptimizelyUserContext.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[100/102] Compiling Optimizely OptimizelyClient+ObjC.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[101/102] Compiling Optimizely OptimizelyClient.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
[102/102] Compiling Optimizely OptimizelyConfig+ObjC.swift
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:104:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
102 |                      completion: @escaping DecideCompletion) {
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:105:81: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
103 |         decisionQueue.async {
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
    |                                                                                 `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
106 |                 completion(decision)
107 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:106:17: warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
104 |             guard let config = self.config else {
105 |                 let decision = OptimizelyDecision.errorDecision(key: key, user: user, error: .sdkNotReady)
106 |                 completion(decision)
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideCompletion' (aka '(OptimizelyDecision) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
107 |                 return
108 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:116:59: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
114 |             }
115 |
116 |             var allOptions = self.defaultDecideOptions + (options ?? [])
    |                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
117 |             //  Filtering out `enabledFlagsOnly` to ensure users always get a result.
118 |             allOptions.removeAll(where: { $0 == .enabledFlagsOnly })
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:121:97: warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
119 |
120 |             let decisionMap = self.decide(user: user, keys: [key], options: allOptions, isAsync: true, ignoreDefaultOptions: true)
121 |             let decision = decisionMap[key] ?? OptimizelyDecision.errorDecision(key: key, user: user, error: .generic)
    |                                                                                                 `- warning: implicit capture of 'user' requires that 'OptimizelyUserContext' conforms to 'Sendable'; this is an error in the Swift 6 language mode
122 |             completion(decision)
123 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:29: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                             `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:47: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                               `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:151:74: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
149 |                      completion: @escaping DecideForKeysCompletion) {
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
    |                                                                          `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
152 |             completion(decisions)
153 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:152:13: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
150 |         decisionQueue.async {
151 |             let decisions = self.decide(user: user, keys: keys, options: options, isAsync: true)
152 |             completion(decisions)
    |             |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |             `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
153 |         }
154 |     }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:278:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
276 |
277 |         decisionQueue.async {
278 |             guard let config = self.config else {
    |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:22:12: note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:280:17: warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
278 |             guard let config = self.config else {
279 |                 self.logger.e(OptimizelyError.sdkNotReady)
280 |                 completion([:])
    |                 |- warning: capture of 'completion' with non-sendable type 'DecideForKeysCompletion' (aka '(Dictionary<String, OptimizelyDecision>) -> ()') in a '@Sendable' closure
    |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
281 |                 return
282 |             }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:46: warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                              `- warning: capture of 'user' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:23:14: note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyClient+Decide.swift:284:91: warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
282 |             }
283 |
284 |             let decision = self.decide(user: user, keys: config.featureFlagKeys, options: options,  isAsync: true, ignoreDefaultOptions: false)
    |                                                                                           `- warning: capture of 'options' with non-sendable type '[OptimizelyDecideOption]?' in a '@Sendable' closure
285 |             completion(decision)
286 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyDecideOption.swift:20:19: note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
18 |
19 | /// Options controlling flag decisions.
20 | @objc public enum OptimizelyDecideOption: Int {
   |                   `- note: consider making enum 'OptimizelyDecideOption' conform to the 'Sendable' protocol
21 |     /// disable decision event tracking.
22 |     case disableDecisionEvent
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:93:17: warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 21 |
 22 | /// An object for user contexts that the SDK will use to make decisions for.
 23 | public class OptimizelyUserContext {
    |              `- note: class 'OptimizelyUserContext' does not conform to the 'Sendable' protocol
 24 |     weak var optimizely: OptimizelyClient?
 25 |     public var userId: String
    :
 91 |             // async call so event building overhead is not blocking context creation
 92 |             lock.async {
 93 |                 self.optimizely?.identifyUserToOdp(userId: userId)
    |                 `- warning: capture of 'self' with non-sendable type 'OptimizelyUserContext' in a '@Sendable' closure
 94 |             }
 95 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:833:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 831 |         // non-blocking (event data serialization takes time)
 832 |         eventLock.async {
 833 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:836:82: warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 834 |
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
     |                                                                                  `- warning: capture of 'experiment' with non-sendable type '(any ExperimentCore)?' in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/ExperimentCore.swift:19:10: note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | protocol ExperimentCore: OptimizelyExperiment {
   |          `- note: protocol 'ExperimentCore' does not conform to the 'Sendable' protocol
20 |     var audiences: String { get set }
21 |     var layerId: String { get }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:837:81: warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 835 |             guard let body = BatchEventBuilder.createImpressionEvent(config: config,
 836 |                                                                      experiment: experiment,
 837 |                                                                      variation: variation,
     |                                                                                 `- warning: capture of 'variation' with non-sendable type 'Variation?' in a '@Sendable' closure
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
/Users/admin/builder/spi-builder-workspace/Sources/Data Model/Variation.swift:19:8: note: consider making struct 'Variation' conform to the 'Sendable' protocol
17 | import Foundation
18 |
19 | struct Variation: Codable, OptimizelyVariation {
   |        `- note: consider making struct 'Variation' conform to the 'Sendable' protocol
20 |     var id: String
21 |     var key: String
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:839:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 837 |                                                                      variation: variation,
 838 |                                                                      userId: userId,
 839 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 840 |                                                                      flagKey: flagKey,
 841 |                                                                      ruleType: ruleType,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:873:32: warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
  20 | public typealias OptimizelyEventTags = [String: Any]
  21 |
  22 | open class OptimizelyClient: NSObject {
     |            `- note: class 'OptimizelyClient' does not conform to the 'Sendable' protocol
  23 |
  24 |     // MARK: - Properties
     :
 871 |         // non-blocking (event data serialization takes time)
 872 |         eventLock.async {
 873 |             guard let config = self.config else { return }
     |                                `- warning: capture of 'self' with non-sendable type 'OptimizelyClient' in a '@Sendable' closure
 874 |
 875 |             guard let body = BatchEventBuilder.createConversionEvent(config: config,
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:878:82: warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 876 |                                                                      eventKey: eventKey,
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
     |                                                                                  `- warning: capture of 'attributes' with non-sendable type 'OptimizelyAttributes?' (aka 'Optional<Dictionary<String, Optional<Any>>>') in a '@Sendable' closure
 879 |                                                                      eventTags: eventTags) else {
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:879:81: warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 877 |                                                                      userId: userId,
 878 |                                                                      attributes: attributes,
 879 |                                                                      eventTags: eventTags) else {
     |                                                                                 `- warning: capture of 'eventTags' with non-sendable type 'OptimizelyEventTags?' (aka 'Optional<Dictionary<String, Any>>') in a '@Sendable' closure
 880 |                 self.logger.e(OptimizelyError.eventBuildFailure(eventKey))
 881 |                 return
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely/OptimizelyClient.swift:967:17: warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
 965 |         if async {
 966 |             eventLock.async {
 967 |                 notify()
     |                 |- warning: capture of 'notify' with non-sendable type '() -> ()?' in a '@Sendable' closure
     |                 `- note: a function type must be marked '@Sendable' to conform to 'Sendable'
 968 |             }
 969 |         } else {
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:161:30: warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
159 |         return await withCheckedContinuation { continuation in
160 |             decideAsync(key: key, options: options) { decision in
161 |                 continuation.resume(returning: decision)
    |                              |- warning: sending 'decision' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decision' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
162 |             }
163 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:221:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
219 |         return await withCheckedContinuation { continuation in
220 |             decideAsync(keys: keys, options: options) { decisions in
221 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
222 |             }
223 |         }
/Users/admin/builder/spi-builder-workspace/Sources/Optimizely+Decide/OptimizelyUserContext.swift:267:30: warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
265 |         return await withCheckedContinuation { continuation in
266 |             decideAllAsync(options: options) { decisions in
267 |                 continuation.resume(returning: decisions)
    |                              |- warning: sending 'decisions' risks causing data races; this is an error in the Swift 6 language mode
    |                              `- note: task-isolated 'decisions' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
268 |             }
269 |         }
Build complete! (8.20s)
warning: 'spi-builder-workspace': Invalid Exclude '/Users/admin/builder/spi-builder-workspace/Sources/CLAUDE.md': File not found.
warning: 'spi-builder-workspace': found 1 file(s) which are unhandled; explicitly declare them as resources or exclude from the target
    /Users/admin/builder/spi-builder-workspace/Sources/Supporting Files/Info.plist
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Optimizely",
  "name" : "Optimizely",
  "path" : "/Users/admin/builder/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "10.0"
    },
    {
      "name" : "tvos",
      "version" : "10.0"
    },
    {
      "name" : "macos",
      "version" : "10.14"
    },
    {
      "name" : "watchos",
      "version" : "3.0"
    }
  ],
  "products" : [
    {
      "name" : "Optimizely",
      "targets" : [
        "Optimizely"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "swift_languages_versions" : [
    "5"
  ],
  "targets" : [
    {
      "c99name" : "Optimizely",
      "module_type" : "SwiftTarget",
      "name" : "Optimizely",
      "path" : "Sources",
      "product_memberships" : [
        "Optimizely"
      ],
      "resources" : [
        {
          "path" : "/Users/admin/builder/spi-builder-workspace/Sources/Supporting Files/PrivacyInfo.xcprivacy",
          "rule" : {
            "copy" : {
            }
          }
        }
      ],
      "sources" : [
        "CMAB/CmabClient.swift",
        "CMAB/CmabConfig.swift",
        "CMAB/CmabService.swift",
        "Customization/DefaultDatafileHandler.swift",
        "Customization/DefaultEventDispatcher.swift",
        "Customization/DefaultLogger.swift",
        "Customization/DefaultUserProfileService.swift",
        "Customization/Protocols/OPTDatafileHandler.swift",
        "Customization/Protocols/OPTEventDispatcher.swift",
        "Customization/Protocols/OPTLogger.swift",
        "Customization/Protocols/OPTUserProfileService.swift",
        "Data Model/Attribute.swift",
        "Data Model/Audience/AttributeValue.swift",
        "Data Model/Audience/Audience.swift",
        "Data Model/Audience/ConditionHolder.swift",
        "Data Model/Audience/ConditionLeaf.swift",
        "Data Model/Audience/SemanticVersion.swift",
        "Data Model/Audience/UserAttribute.swift",
        "Data Model/Cmab.swift",
        "Data Model/DispatchEvents/BatchEvent.swift",
        "Data Model/DispatchEvents/EventForDispatch.swift",
        "Data Model/Event.swift",
        "Data Model/Experiment.swift",
        "Data Model/ExperimentCore.swift",
        "Data Model/FeatureFlag.swift",
        "Data Model/FeatureVariable.swift",
        "Data Model/Group.swift",
        "Data Model/Holdout.swift",
        "Data Model/HoldoutConfig.swift",
        "Data Model/Integration.swift",
        "Data Model/Project.swift",
        "Data Model/ProjectConfig.swift",
        "Data Model/Rollout.swift",
        "Data Model/TrafficAllocation.swift",
        "Data Model/Variable.swift",
        "Data Model/Variation.swift",
        "Extensions/Array+Extension.swift",
        "Extensions/ArrayEventForDispatch+Extension.swift",
        "Extensions/DataStoreQueueStackImpl+Extension.swift",
        "Extensions/OptimizelyClient+Extension.swift",
        "Implementation/Datastore/DataStoreFile.swift",
        "Implementation/Datastore/DataStoreMemory.swift",
        "Implementation/Datastore/DataStoreQueueStackImpl.swift",
        "Implementation/Datastore/DataStoreUserDefaults.swift",
        "Implementation/DecisionInfo.swift",
        "Implementation/DecisionReasons.swift",
        "Implementation/DecisionResponse.swift",
        "Implementation/DefaultBucketer.swift",
        "Implementation/DefaultDecisionService.swift",
        "Implementation/DefaultNotificationCenter.swift",
        "Implementation/Events/BatchEventBuilder.swift",
        "Implementation/UserProfileTracker.swift",
        "ODP/LruCache.swift",
        "ODP/OdpConfig.swift",
        "ODP/OdpEvent.swift",
        "ODP/OdpEventApiManager.swift",
        "ODP/OdpEventManager.swift",
        "ODP/OdpManager.swift",
        "ODP/OdpSegmentApiManager.swift",
        "ODP/OdpSegmentManager.swift",
        "ODP/OptimizelySdkSettings.swift",
        "ODP/OptimizelySegmentOption.swift",
        "Optimizely+Decide/OptimizelyClient+Decide.swift",
        "Optimizely+Decide/OptimizelyDecideOption.swift",
        "Optimizely+Decide/OptimizelyDecision.swift",
        "Optimizely+Decide/OptimizelyUserContext+ObjC.swift",
        "Optimizely+Decide/OptimizelyUserContext.swift",
        "Optimizely/OptimizelyClient+ObjC.swift",
        "Optimizely/OptimizelyClient.swift",
        "Optimizely/OptimizelyConfig+ObjC.swift",
        "Optimizely/OptimizelyConfig.swift",
        "Optimizely/OptimizelyError.swift",
        "Optimizely/OptimizelyJSON+ObjC.swift",
        "Optimizely/OptimizelyJSON.swift",
        "Optimizely/OptimizelyLogLevel.swift",
        "Optimizely/OptimizelyResult.swift",
        "Optimizely/VuidManager.swift",
        "Protocols/BackgroundingCallbacks.swift",
        "Protocols/DataStoreQueueStack.swift",
        "Protocols/OPTBucketer.swift",
        "Protocols/OPTDataStore.swift",
        "Protocols/OPTDecisionService.swift",
        "Protocols/OPTNotificationCenter.swift",
        "Utils/AtomicArray.swift",
        "Utils/AtomicDictionary.swift",
        "Utils/AtomicProperty.swift",
        "Utils/Constants.swift",
        "Utils/HandlerRegistryService.swift",
        "Utils/LogMessage.swift",
        "Utils/MurmurHash3.swift",
        "Utils/NetworkReachability.swift",
        "Utils/Notifications.swift",
        "Utils/RetryStrategy.swift",
        "Utils/SDKVersion.swift",
        "Utils/ThreadSafeLogger.swift",
        "Utils/Utils.swift",
        "watchOS/WatchBackgroundNotifier.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.3"
}
warning: 'spi-builder-workspace': Invalid Exclude '/Users/admin/builder/spi-builder-workspace/Sources/CLAUDE.md': File not found.
Done.