Build Information
Successful build of PermissionPilot, reference v0.3.1 (baaaff), with Swift 6.1 for macOS (SPM) on 2 Oct 2026 22:36:58 UTC.
Swift 6 data race errors: 3
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 InferSendableFromCapturesBuild Log
========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/arpitagarwal1301/PermissionPilot.git
Reference: v0.3.1
Initialized empty Git repository in /Users/admin/builder/spi-builder-workspace/.git/
From https://github.com/arpitagarwal1301/PermissionPilot
* tag v0.3.1 -> FETCH_HEAD
HEAD is now at baaaff8 Release 0.3.1
Cloned https://github.com/arpitagarwal1301/PermissionPilot.git
Revision (git rev-parse @):
baaaff837052e3f8bec357a8a0dee48fa0364993
SUCCESS checkout https://github.com/arpitagarwal1301/PermissionPilot.git at v0.3.1
========================================
Build
========================================
Selected platform: macosSpm
Swift version: 6.1
Building package at path: $PWD
https://github.com/arpitagarwal1301/PermissionPilot.git
https://github.com/arpitagarwal1301/PermissionPilot.git
{
"default_localization" : "en",
"dependencies" : [
],
"manifest_display_name" : "PermissionPilot",
"name" : "PermissionPilot",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "PermissionPilotCore",
"targets" : [
"PermissionPilotCore"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "PermissionPilotUI",
"targets" : [
"PermissionPilotUI"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "PermissionPilot",
"targets" : [
"PermissionPilot"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "PermissionPilotDemo",
"targets" : [
"PermissionPilotDemo"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "PermissionPilotUI",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotUI",
"path" : "Sources/PermissionPilotUI",
"product_memberships" : [
"PermissionPilotUI",
"PermissionPilot",
"PermissionPilotDemo"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotUI/Resources/en.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en"
}
}
}
],
"sources" : [
"AppBundleDragSource.swift",
"DragToAuthorizeView.swift",
"FinderReveal.swift",
"JustInTimePermissionButton.swift",
"Localization.swift",
"ManualAddHelper.swift",
"PPDesign.swift",
"PermissionChecklist.swift",
"PermissionGrid.swift",
"PermissionPilotUI.swift",
"PermissionRow.swift",
"PermissionTile.swift",
"PermissionsView.swift",
"StepIndicator.swift",
"Theme.swift"
],
"target_dependencies" : [
"PermissionPilotCore"
],
"type" : "library"
},
{
"c99name" : "PermissionPilotTests",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotTests",
"path" : "Tests/PermissionPilotTests",
"sources" : [
"PermissionPilotTests.swift"
],
"target_dependencies" : [
"PermissionPilotCore",
"PermissionPilotUI",
"PermissionPilot"
],
"type" : "test"
},
{
"c99name" : "PermissionPilotDemo",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotDemo",
"path" : "Example/PermissionPilotDemo",
"product_memberships" : [
"PermissionPilotDemo"
],
"sources" : [
"AppDelegate.swift",
"DemoContentView.swift",
"DemoMain.swift",
"HeroBanner.swift",
"SnapshotMode.swift"
],
"target_dependencies" : [
"PermissionPilot"
],
"type" : "executable"
},
{
"c99name" : "PermissionPilotCore",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotCore",
"path" : "Sources/PermissionPilotCore",
"product_memberships" : [
"PermissionPilotCore",
"PermissionPilotUI",
"PermissionPilot",
"PermissionPilotDemo"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/Resources/en.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en"
}
}
}
],
"sources" : [
"BluetoothAuthorizer.swift",
"Localization.swift",
"LocationAuthorizer.swift",
"NotificationAuthorizer.swift",
"Permission.swift",
"PermissionInfo.swift",
"PermissionManager.swift",
"PermissionPilotCore.swift",
"PermissionProbe.swift",
"PermissionStatus.swift",
"PermissionStatusMapping.swift",
"Relauncher.swift",
"SystemPromptWatch.swift",
"SystemSettingsLink.swift"
],
"type" : "library"
},
{
"c99name" : "PermissionPilot",
"module_type" : "SwiftTarget",
"name" : "PermissionPilot",
"path" : "Sources/PermissionPilot",
"product_memberships" : [
"PermissionPilot",
"PermissionPilotDemo"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilot/Resources/en.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en"
}
}
}
],
"sources" : [
"Localization.swift",
"OnboardingConfiguration.swift",
"OnboardingPresenter.swift",
"OnboardingState.swift",
"OnboardingView.swift",
"PermissionPilot.swift"
],
"target_dependencies" : [
"PermissionPilotCore",
"PermissionPilotUI"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Running build ...
env DEVELOPER_DIR=/Applications/Xcode-16.3.0.app xcrun swift build --arch arm64 -Xswiftc -Xfrontend -Xswiftc -stats-output-dir -Xswiftc -Xfrontend -Xswiftc .stats -Xswiftc -strict-concurrency=complete -Xswiftc -enable-upcoming-feature -Xswiftc StrictConcurrency -Xswiftc -enable-upcoming-feature -Xswiftc DisableOutwardActorInference -Xswiftc -enable-upcoming-feature -Xswiftc GlobalActorIsolatedTypesUsability -Xswiftc -enable-upcoming-feature -Xswiftc InferSendableFromCaptures
Building for debugging...
[0/15] Write sources
[3/15] Copying Info.plist
[3/15] Copying Localizable.strings
[3/15] Copying Info.plist
[3/15] Copying Localizable.strings
[4/15] Write sources
[5/15] Write PermissionPilotDemo-entitlement.plist
[11/15] Write swift-version-2F0A5646E1D333AE.txt
[13/30] Compiling PermissionPilotCore SystemPromptWatch.swift
[14/30] Compiling PermissionPilotCore Permission.swift
[15/30] Compiling PermissionPilotCore PermissionInfo.swift
[16/30] Compiling PermissionPilotCore Relauncher.swift
[17/30] Compiling PermissionPilotCore PermissionManager.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionManager.swift:95:9: warning: cannot access property 'activationObserver' with a non-sendable type '(any NSObjectProtocol)?' from nonisolated deinit; this is an error in the Swift 6 language mode
93 |
94 | deinit {
95 | if let observer = activationObserver {
| `- warning: cannot access property 'activationObserver' with a non-sendable type '(any NSObjectProtocol)?' from nonisolated deinit; this is an error in the Swift 6 language mode
96 | NotificationCenter.default.removeObserver(observer) // safe off-thread
97 | }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/usr/include/objc/NSObject.h:15:11: note: protocol 'NSObjectProtocol' does not conform to the 'Sendable' protocol
13 | @class NSString, NSMethodSignature, NSInvocation;
14 |
15 | @protocol NSObject
| `- note: protocol 'NSObjectProtocol' does not conform to the 'Sendable' protocol
16 |
17 | - (BOOL)isEqual:(id)object;
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionManager.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
1 | import Foundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
2 | import AppKit
3 | import Combine
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionManager.swift:101:9: warning: cannot access property 'pollTimer' with a non-sendable type 'Timer?' from nonisolated deinit; this is an error in the Swift 6 language mode
99 | // scheduled on (main). A `@MainActor` deinit can run off-main, so capture
100 | // a local and hop to main — unconditionally safe from deinit.
101 | if let timer = pollTimer {
| `- warning: cannot access property 'pollTimer' with a non-sendable type 'Timer?' from nonisolated deinit; this is an error in the Swift 6 language mode
102 | DispatchQueue.main.async { timer.invalidate() }
103 | }
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
[18/30] Compiling PermissionPilotCore PermissionPilotCore.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionManager.swift:95:9: warning: cannot access property 'activationObserver' with a non-sendable type '(any NSObjectProtocol)?' from nonisolated deinit; this is an error in the Swift 6 language mode
93 |
94 | deinit {
95 | if let observer = activationObserver {
| `- warning: cannot access property 'activationObserver' with a non-sendable type '(any NSObjectProtocol)?' from nonisolated deinit; this is an error in the Swift 6 language mode
96 | NotificationCenter.default.removeObserver(observer) // safe off-thread
97 | }
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/usr/include/objc/NSObject.h:15:11: note: protocol 'NSObjectProtocol' does not conform to the 'Sendable' protocol
13 | @class NSString, NSMethodSignature, NSInvocation;
14 |
15 | @protocol NSObject
| `- note: protocol 'NSObjectProtocol' does not conform to the 'Sendable' protocol
16 |
17 | - (BOOL)isEqual:(id)object;
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionManager.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
1 | import Foundation
| `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'ObjectiveC'
2 | import AppKit
3 | import Combine
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionManager.swift:101:9: warning: cannot access property 'pollTimer' with a non-sendable type 'Timer?' from nonisolated deinit; this is an error in the Swift 6 language mode
99 | // scheduled on (main). A `@MainActor` deinit can run off-main, so capture
100 | // a local and hop to main — unconditionally safe from deinit.
101 | if let timer = pollTimer {
| `- warning: cannot access property 'pollTimer' with a non-sendable type 'Timer?' from nonisolated deinit; this is an error in the Swift 6 language mode
102 | DispatchQueue.main.async { timer.invalidate() }
103 | }
Swift.Optional:1:21: note: generic enum 'Optional' does not conform to the 'Sendable' protocol
1 | @frozen public enum Optional<Wrapped> : ~Copyable where Wrapped : ~Copyable {
| `- note: generic enum 'Optional' does not conform to the 'Sendable' protocol
2 | case none
3 | case some(Wrapped)
[19/30] Compiling PermissionPilotCore SystemSettingsLink.swift
[20/31] Compiling PermissionPilotCore resource_bundle_accessor.swift
[21/31] Compiling PermissionPilotCore PermissionStatusMapping.swift
[22/31] Compiling PermissionPilotCore BluetoothAuthorizer.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/BluetoothAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BluetoothAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// system prompt — we hold it alive until the delegate reports authorization, then
7 | /// release it. We never scan for peripherals.
8 | final class BluetoothAuthorizer: NSObject, CBCentralManagerDelegate {
| `- note: class 'BluetoothAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = BluetoothAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BluetoothAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private var central: CBCentralManager?
[23/31] Compiling PermissionPilotCore Localization.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/BluetoothAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BluetoothAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// system prompt — we hold it alive until the delegate reports authorization, then
7 | /// release it. We never scan for peripherals.
8 | final class BluetoothAuthorizer: NSObject, CBCentralManagerDelegate {
| `- note: class 'BluetoothAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = BluetoothAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BluetoothAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private var central: CBCentralManager?
[24/31] Emitting module PermissionPilotCore
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/BluetoothAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BluetoothAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// system prompt — we hold it alive until the delegate reports authorization, then
7 | /// release it. We never scan for peripherals.
8 | final class BluetoothAuthorizer: NSObject, CBCentralManagerDelegate {
| `- note: class 'BluetoothAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = BluetoothAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'BluetoothAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private var central: CBCentralManager?
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/LocationAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'LocationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// callback. Driven from the main thread (the probe/manager are main-actor driven),
7 | /// so the manager is created on main and its delegate callbacks arrive there.
8 | final class LocationAuthorizer: NSObject, CLLocationManagerDelegate {
| `- note: class 'LocationAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = LocationAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'LocationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private let manager = CLLocationManager()
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// asynchronously. `UNUserNotificationCenter.current()` requires a real app bundle,
7 | /// so we degrade to `.unknown` for unbundled processes (unit tests, `swift run`).
8 | final class NotificationAuthorizer {
| `- note: class 'NotificationAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = NotificationAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private let lock = NSLock()
[25/31] Compiling PermissionPilotCore PermissionProbe.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionProbe.swift:153:23: warning: reference to var 'kAXTrustedCheckOptionPrompt' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
151 | // Prompts at most once per launch (and usually only once per app).
152 | let baseline = SystemPromptWatch.baseline()
153 | let key = kAXTrustedCheckOptionPrompt.takeUnretainedValue()
| `- warning: reference to var 'kAXTrustedCheckOptionPrompt' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
154 | let options = [key: true] as CFDictionary
155 | let trusted = AXIsProcessTrustedWithOptions(options)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/AXUIElement.h:66:20: note: var declared here
64 | extern Boolean AXIsProcessTrustedWithOptions (CFDictionaryRef __nullable options) CF_AVAILABLE_MAC(10_9);
65 |
66 | extern CFStringRef kAXTrustedCheckOptionPrompt CF_AVAILABLE_MAC(10_9);
| `- note: var declared here
67 |
68 | /*!
[26/31] Compiling PermissionPilotCore PermissionStatus.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/PermissionProbe.swift:153:23: warning: reference to var 'kAXTrustedCheckOptionPrompt' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
151 | // Prompts at most once per launch (and usually only once per app).
152 | let baseline = SystemPromptWatch.baseline()
153 | let key = kAXTrustedCheckOptionPrompt.takeUnretainedValue()
| `- warning: reference to var 'kAXTrustedCheckOptionPrompt' is not concurrency-safe because it involves shared mutable state; this is an error in the Swift 6 language mode
154 | let options = [key: true] as CFDictionary
155 | let trusted = AXIsProcessTrustedWithOptions(options)
/Applications/Xcode-16.3.0.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX15.4.sdk/System/Library/Frameworks/ApplicationServices.framework/Frameworks/HIServices.framework/Headers/AXUIElement.h:66:20: note: var declared here
64 | extern Boolean AXIsProcessTrustedWithOptions (CFDictionaryRef __nullable options) CF_AVAILABLE_MAC(10_9);
65 |
66 | extern CFStringRef kAXTrustedCheckOptionPrompt CF_AVAILABLE_MAC(10_9);
| `- note: var declared here
67 |
68 | /*!
[27/31] Compiling PermissionPilotCore LocationAuthorizer.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/LocationAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'LocationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// callback. Driven from the main thread (the probe/manager are main-actor driven),
7 | /// so the manager is created on main and its delegate callbacks arrive there.
8 | final class LocationAuthorizer: NSObject, CLLocationManagerDelegate {
| `- note: class 'LocationAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = LocationAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'LocationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private let manager = CLLocationManager()
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// asynchronously. `UNUserNotificationCenter.current()` requires a real app bundle,
7 | /// so we degrade to `.unknown` for unbundled processes (unit tests, `swift run`).
8 | final class NotificationAuthorizer {
| `- note: class 'NotificationAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = NotificationAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private let lock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:34:40: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
32 | guard hasBundle else {
33 | store(.unknown)
34 | DispatchQueue.main.async { completion?(.unknown) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
35 | return
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:40:40: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
38 | let status = PermissionStatus.from(settings.authorizationStatus)
39 | self?.store(status)
40 | DispatchQueue.main.async { completion?(status) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
41 | }
42 | }
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:49:66: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
47 | UNUserNotificationCenter.current()
48 | .requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] _, _ in
49 | guard let self else { DispatchQueue.main.async { completion(.unknown) }; return }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
50 | self.refreshStatus(completion)
51 | }
[28/31] Compiling PermissionPilotCore NotificationAuthorizer.swift
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/LocationAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'LocationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// callback. Driven from the main thread (the probe/manager are main-actor driven),
7 | /// so the manager is created on main and its delegate callbacks arrive there.
8 | final class LocationAuthorizer: NSObject, CLLocationManagerDelegate {
| `- note: class 'LocationAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = LocationAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'LocationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private let manager = CLLocationManager()
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:9:16: warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
6 | /// asynchronously. `UNUserNotificationCenter.current()` requires a real app bundle,
7 | /// so we degrade to `.unknown` for unbundled processes (unit tests, `swift run`).
8 | final class NotificationAuthorizer {
| `- note: class 'NotificationAuthorizer' does not conform to the 'Sendable' protocol
9 | static let shared = NotificationAuthorizer()
| |- warning: static property 'shared' is not concurrency-safe because non-'Sendable' type 'NotificationAuthorizer' may have shared mutable state; this is an error in the Swift 6 language mode
| |- note: add '@MainActor' to make static property 'shared' part of global actor 'MainActor'
| `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
10 |
11 | private let lock = NSLock()
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:34:40: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
32 | guard hasBundle else {
33 | store(.unknown)
34 | DispatchQueue.main.async { completion?(.unknown) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
35 | return
36 | }
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:40:40: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
38 | let status = PermissionStatus.from(settings.authorizationStatus)
39 | self?.store(status)
40 | DispatchQueue.main.async { completion?(status) }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
41 | }
42 | }
/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/NotificationAuthorizer.swift:49:66: warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
47 | UNUserNotificationCenter.current()
48 | .requestAuthorization(options: [.alert, .sound, .badge]) { [weak self] _, _ in
49 | guard let self else { DispatchQueue.main.async { completion(.unknown) }; return }
| |- warning: sending 'completion' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'completion' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
50 | self.refreshStatus(completion)
51 | }
[29/47] Compiling PermissionPilotUI Localization.swift
[30/47] Compiling PermissionPilotUI ManualAddHelper.swift
[31/48] Compiling PermissionPilotUI PermissionRow.swift
[32/48] Compiling PermissionPilotUI PermissionTile.swift
[33/48] Compiling PermissionPilotUI StepIndicator.swift
[34/48] Compiling PermissionPilotUI Theme.swift
[35/48] Compiling PermissionPilotUI PermissionsView.swift
[36/48] Compiling PermissionPilotUI PermissionGrid.swift
[37/48] Compiling PermissionPilotUI PermissionPilotUI.swift
[38/48] Compiling PermissionPilotUI FinderReveal.swift
[39/48] Compiling PermissionPilotUI JustInTimePermissionButton.swift
[40/48] Emitting module PermissionPilotUI
[41/48] Compiling PermissionPilotUI AppBundleDragSource.swift
[42/48] Compiling PermissionPilotUI DragToAuthorizeView.swift
[43/48] Compiling PermissionPilotUI PPDesign.swift
[44/48] Compiling PermissionPilotUI PermissionChecklist.swift
[45/48] Compiling PermissionPilotUI resource_bundle_accessor.swift
[46/56] Compiling PermissionPilot OnboardingPresenter.swift
[47/56] Compiling PermissionPilot resource_bundle_accessor.swift
[48/56] Compiling PermissionPilot OnboardingConfiguration.swift
[49/56] Compiling PermissionPilot Localization.swift
[50/56] Emitting module PermissionPilot
[51/56] Compiling PermissionPilot OnboardingView.swift
[52/56] Compiling PermissionPilot OnboardingState.swift
[53/56] Compiling PermissionPilot PermissionPilot.swift
[54/62] Compiling PermissionPilotDemo SnapshotMode.swift
[55/62] Compiling PermissionPilotDemo DemoMain.swift
[56/62] Compiling PermissionPilotDemo DemoContentView.swift
[57/62] Compiling PermissionPilotDemo AppDelegate.swift
[58/62] Compiling PermissionPilotDemo HeroBanner.swift
[59/62] Emitting module PermissionPilotDemo
[59/62] Write Objects.LinkFileList
[60/62] Linking PermissionPilotDemo
[61/62] Applying PermissionPilotDemo
Build complete! (17.42s)
Build complete.
{
"default_localization" : "en",
"dependencies" : [
],
"manifest_display_name" : "PermissionPilot",
"name" : "PermissionPilot",
"path" : "/Users/admin/builder/spi-builder-workspace",
"platforms" : [
{
"name" : "macos",
"version" : "12.0"
}
],
"products" : [
{
"name" : "PermissionPilotCore",
"targets" : [
"PermissionPilotCore"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "PermissionPilotUI",
"targets" : [
"PermissionPilotUI"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "PermissionPilot",
"targets" : [
"PermissionPilot"
],
"type" : {
"library" : [
"automatic"
]
}
},
{
"name" : "PermissionPilotDemo",
"targets" : [
"PermissionPilotDemo"
],
"type" : {
"executable" : null
}
}
],
"targets" : [
{
"c99name" : "PermissionPilotUI",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotUI",
"path" : "Sources/PermissionPilotUI",
"product_memberships" : [
"PermissionPilotUI",
"PermissionPilot",
"PermissionPilotDemo"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotUI/Resources/en.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en"
}
}
}
],
"sources" : [
"AppBundleDragSource.swift",
"DragToAuthorizeView.swift",
"FinderReveal.swift",
"JustInTimePermissionButton.swift",
"Localization.swift",
"ManualAddHelper.swift",
"PPDesign.swift",
"PermissionChecklist.swift",
"PermissionGrid.swift",
"PermissionPilotUI.swift",
"PermissionRow.swift",
"PermissionTile.swift",
"PermissionsView.swift",
"StepIndicator.swift",
"Theme.swift"
],
"target_dependencies" : [
"PermissionPilotCore"
],
"type" : "library"
},
{
"c99name" : "PermissionPilotTests",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotTests",
"path" : "Tests/PermissionPilotTests",
"sources" : [
"PermissionPilotTests.swift"
],
"target_dependencies" : [
"PermissionPilotCore",
"PermissionPilotUI",
"PermissionPilot"
],
"type" : "test"
},
{
"c99name" : "PermissionPilotDemo",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotDemo",
"path" : "Example/PermissionPilotDemo",
"product_memberships" : [
"PermissionPilotDemo"
],
"sources" : [
"AppDelegate.swift",
"DemoContentView.swift",
"DemoMain.swift",
"HeroBanner.swift",
"SnapshotMode.swift"
],
"target_dependencies" : [
"PermissionPilot"
],
"type" : "executable"
},
{
"c99name" : "PermissionPilotCore",
"module_type" : "SwiftTarget",
"name" : "PermissionPilotCore",
"path" : "Sources/PermissionPilotCore",
"product_memberships" : [
"PermissionPilotCore",
"PermissionPilotUI",
"PermissionPilot",
"PermissionPilotDemo"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilotCore/Resources/en.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en"
}
}
}
],
"sources" : [
"BluetoothAuthorizer.swift",
"Localization.swift",
"LocationAuthorizer.swift",
"NotificationAuthorizer.swift",
"Permission.swift",
"PermissionInfo.swift",
"PermissionManager.swift",
"PermissionPilotCore.swift",
"PermissionProbe.swift",
"PermissionStatus.swift",
"PermissionStatusMapping.swift",
"Relauncher.swift",
"SystemPromptWatch.swift",
"SystemSettingsLink.swift"
],
"type" : "library"
},
{
"c99name" : "PermissionPilot",
"module_type" : "SwiftTarget",
"name" : "PermissionPilot",
"path" : "Sources/PermissionPilot",
"product_memberships" : [
"PermissionPilot",
"PermissionPilotDemo"
],
"resources" : [
{
"path" : "/Users/admin/builder/spi-builder-workspace/Sources/PermissionPilot/Resources/en.lproj/Localizable.strings",
"rule" : {
"process" : {
"localization" : "en"
}
}
}
],
"sources" : [
"Localization.swift",
"OnboardingConfiguration.swift",
"OnboardingPresenter.swift",
"OnboardingState.swift",
"OnboardingView.swift",
"PermissionPilot.swift"
],
"target_dependencies" : [
"PermissionPilotCore",
"PermissionPilotUI"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
Done.