The Swift Package Index logo.Swift Package Index

Build Information

Failed to build SynheartBehavior, reference v0.5.0 (fb451e), with Swift 6.1 for Wasm on 4 Oct 2026 15:58:04 UTC.

Build Command

bash -c docker run --pull=always --rm -v "checkouts-54344844-3":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 5.1.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/synheart-ai/synheart-behavior-swift.git
Reference: v0.5.0
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/synheart-ai/synheart-behavior-swift
 * tag               v0.5.0     -> FETCH_HEAD
HEAD is now at fb451e4 Merge pull request #13 from synheart-ai/feat/call-notification-motion-collectors
Cloned https://github.com/synheart-ai/synheart-behavior-swift.git
Revision (git rev-parse @):
fb451e44c0058bb84717f98c1c0cc90a40cad03e
SUCCESS checkout https://github.com/synheart-ai/synheart-behavior-swift.git at v0.5.0
========================================
Build
========================================
Selected platform:         wasm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/synheart-ai/synheart-behavior-swift.git
https://github.com/synheart-ai/synheart-behavior-swift.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344844-3":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi -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 2>&1
wasm-6.1-latest: Pulling from saguaro1/spi-images
Digest: sha256:beceeede496da67681f4fa220a6b97cc098a0178841a413735f598dc6bbaf4c8
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:wasm-6.1-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/17] Compiling SynheartBehavior InputSignalCollector.swift
[4/17] Compiling SynheartBehavior InterruptionTrackers.swift
[5/18] Compiling SynheartBehavior EventBatcher.swift
[6/18] Compiling SynheartBehavior GestureSignalCollector.swift
[7/18] Compiling SynheartBehavior MotionSignalCollector.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:67:35: error: cannot infer contextual base in reference to member 'barrier'
 65 |     func startSession(startMs: Double) {
 66 |         sessionStartMs = startMs
 67 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 68 |             self.samples.removeAll()
 69 |             self.lastBatchEndMs = startMs
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:86:35: error: cannot infer contextual base in reference to member 'barrier'
 84 |         stopBatchTimer()
 85 |         batchHandler = nil
 86 |         sampleQueue.async(flags: .barrier) { self.samples.removeAll() }
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 87 |     }
 88 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:91:35: error: cannot infer contextual base in reference to member 'barrier'
 89 |     /// Feed one sample already in m/s². Used by the platform source and by tests.
 90 |     func ingest(tsMs: Double, x: Double, y: Double, z: Double) {
 91 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 92 |             self.samples.append((tsMs, x, y, z))
 93 |         }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:145:9: error: cannot find 'DispatchQueue' in scope
143 |     private func startBatchTimer() {
144 |         let interval = Self.batchIntervalMs / 1_000
145 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
146 |             guard let self else { return }
147 |             self.batchTimer?.invalidate()
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:155:9: error: cannot find 'DispatchQueue' in scope
153 |
154 |     private func stopBatchTimer() {
155 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
156 |             self?.batchTimer?.invalidate()
157 |             self?.batchTimer = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:165:59: error: cannot infer contextual base in reference to member 'barrier'
163 |     func flushBatch(nowMs: Double = Date().timeIntervalSince1970 * 1_000) {
164 |         guard let handler = batchHandler, config.emitRawMotionSamples else { return }
165 |         let batch: [RawSample] = sampleQueue.sync(flags: .barrier) {
    |                                                           `- error: cannot infer contextual base in reference to member 'barrier'
166 |             let since = lastBatchEndMs
167 |             let recent = samples.filter { $0.ts > since && $0.ts <= nowMs }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:9: error: cannot find 'DispatchQueue' in scope
172 |         }
173 |         if batch.isEmpty { return }
174 |         DispatchQueue.main.async { handler(batch) }
    |         `- error: cannot find 'DispatchQueue' in scope
175 |     }
176 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:89:20: error: cannot find 'DispatchWorkItem' in scope
 87 |         guard tracker.received(id: id, atMs: nowMs) else { return }
 88 |         emit(action: "received")
 89 |         let task = DispatchWorkItem { [weak self] in
    |                    `- error: cannot find 'DispatchWorkItem' in scope
 90 |             guard let self else { return }
 91 |             self.pendingIgnored[id] = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:9: error: cannot find 'DispatchQueue' in scope
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |         `- error: cannot find 'DispatchQueue' in scope
 97 |     }
 98 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:50: error: cannot call value of non-function type 'Date'
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |                                                  `- error: cannot call value of non-function type 'Date'
 97 |     }
 98 |
[8/18] Compiling SynheartBehavior NotificationCollector.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:67:35: error: cannot infer contextual base in reference to member 'barrier'
 65 |     func startSession(startMs: Double) {
 66 |         sessionStartMs = startMs
 67 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 68 |             self.samples.removeAll()
 69 |             self.lastBatchEndMs = startMs
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:86:35: error: cannot infer contextual base in reference to member 'barrier'
 84 |         stopBatchTimer()
 85 |         batchHandler = nil
 86 |         sampleQueue.async(flags: .barrier) { self.samples.removeAll() }
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 87 |     }
 88 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:91:35: error: cannot infer contextual base in reference to member 'barrier'
 89 |     /// Feed one sample already in m/s². Used by the platform source and by tests.
 90 |     func ingest(tsMs: Double, x: Double, y: Double, z: Double) {
 91 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 92 |             self.samples.append((tsMs, x, y, z))
 93 |         }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:145:9: error: cannot find 'DispatchQueue' in scope
143 |     private func startBatchTimer() {
144 |         let interval = Self.batchIntervalMs / 1_000
145 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
146 |             guard let self else { return }
147 |             self.batchTimer?.invalidate()
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:155:9: error: cannot find 'DispatchQueue' in scope
153 |
154 |     private func stopBatchTimer() {
155 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
156 |             self?.batchTimer?.invalidate()
157 |             self?.batchTimer = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:165:59: error: cannot infer contextual base in reference to member 'barrier'
163 |     func flushBatch(nowMs: Double = Date().timeIntervalSince1970 * 1_000) {
164 |         guard let handler = batchHandler, config.emitRawMotionSamples else { return }
165 |         let batch: [RawSample] = sampleQueue.sync(flags: .barrier) {
    |                                                           `- error: cannot infer contextual base in reference to member 'barrier'
166 |             let since = lastBatchEndMs
167 |             let recent = samples.filter { $0.ts > since && $0.ts <= nowMs }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:9: error: cannot find 'DispatchQueue' in scope
172 |         }
173 |         if batch.isEmpty { return }
174 |         DispatchQueue.main.async { handler(batch) }
    |         `- error: cannot find 'DispatchQueue' in scope
175 |     }
176 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:89:20: error: cannot find 'DispatchWorkItem' in scope
 87 |         guard tracker.received(id: id, atMs: nowMs) else { return }
 88 |         emit(action: "received")
 89 |         let task = DispatchWorkItem { [weak self] in
    |                    `- error: cannot find 'DispatchWorkItem' in scope
 90 |             guard let self else { return }
 91 |             self.pendingIgnored[id] = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:9: error: cannot find 'DispatchQueue' in scope
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |         `- error: cannot find 'DispatchQueue' in scope
 97 |     }
 98 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:50: error: cannot call value of non-function type 'Date'
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |                                                  `- error: cannot call value of non-function type 'Date'
 97 |     }
 98 |
[9/18] Compiling SynheartBehavior ScrollSignalCollector.swift
[10/18] Compiling SynheartBehavior SessionManager.swift
[11/18] Compiling SynheartBehavior BehaviorStats.swift
[12/18] Compiling SynheartBehavior CallCollector.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[13/18] Emitting module SynheartBehavior
/host/spi-builder-workspace/Sources/SynheartBehavior/BehaviorEvent.swift:34:24: warning: static property 'isoFormatter' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |
 33 |     /// ISO 8601 date formatter for generating timestamps.
 34 |     private static let isoFormatter: ISO8601DateFormatter = {
    |                        |- warning: static property 'isoFormatter' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'isoFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |         let formatter = ISO8601DateFormatter()
 36 |         formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
Foundation.ISO8601DateFormatter:1:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 2 |     open var timeZone: TimeZone! { get set }
 3 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
[14/18] Compiling SynheartBehavior BehaviorEvent.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/BehaviorEvent.swift:34:24: warning: static property 'isoFormatter' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |
 33 |     /// ISO 8601 date formatter for generating timestamps.
 34 |     private static let isoFormatter: ISO8601DateFormatter = {
    |                        |- warning: static property 'isoFormatter' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'isoFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |         let formatter = ISO8601DateFormatter()
 36 |         formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
Foundation.ISO8601DateFormatter:1:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 2 |     open var timeZone: TimeZone! { get set }
 3 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
[15/18] Compiling SynheartBehavior BehaviorSession.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/BehaviorEvent.swift:34:24: warning: static property 'isoFormatter' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |
 33 |     /// ISO 8601 date formatter for generating timestamps.
 34 |     private static let isoFormatter: ISO8601DateFormatter = {
    |                        |- warning: static property 'isoFormatter' is not concurrency-safe because non-'Sendable' type 'ISO8601DateFormatter' may have shared mutable state; this is an error in the Swift 6 language mode
    |                        |- note: add '@MainActor' to make static property 'isoFormatter' part of global actor 'MainActor'
    |                        `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |         let formatter = ISO8601DateFormatter()
 36 |         formatter.formatOptions = [.withInternetDateTime, .withFractionalSeconds]
Foundation.ISO8601DateFormatter:1:12: note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 1 | open class ISO8601DateFormatter : Formatter, NSSecureCoding {
   |            `- note: class 'ISO8601DateFormatter' does not conform to the 'Sendable' protocol
 2 |     open var timeZone: TimeZone! { get set }
 3 |     open var formatOptions: ISO8601DateFormatter.Options { get set }
[16/18] Compiling SynheartBehavior AttentionSignalCollector.swift
[17/18] Compiling SynheartBehavior BehaviorConfig.swift
[18/18] Compiling SynheartBehavior SynheartBehavior.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/SynheartBehavior.swift:122:27: warning: capture of 'self' with non-sendable type 'SynheartBehavior?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
 11 | /// This SDK collects digital behavioral signals from smartphones without
 12 | /// collecting any text, content, or PII - only timing-based signals.
 13 | public class SynheartBehavior {
    |              `- note: class 'SynheartBehavior' does not conform to the 'Sendable' protocol
 14 |     private var config: BehaviorConfig
 15 |     private var isInitialized = false
    :
120 |             streamLock.unlock()
121 |             continuation.onTermination = { [weak self] _ in
122 |                 guard let self else { return }
    |                           `- warning: capture of 'self' with non-sendable type 'SynheartBehavior?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
123 |                 self.streamLock.lock()
124 |                 self.streamContinuations.removeValue(forKey: id)
/host/spi-builder-workspace/Sources/SynheartBehavior/SynheartBehavior.swift:135:28: warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
133 |         let conts = Array(streamContinuations.values)
134 |         streamLock.unlock()
135 |         for c in conts { c.yield(event) }
    |                            |- warning: sending 'event' risks causing data races; this is an error in the Swift 6 language mode
    |                            `- note: task-isolated 'event' is passed as a 'sending' parameter; Uses in callee may race with later task-isolated uses
136 |     }
137 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344844-3":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/saguaro1/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi 2>&1
wasm-6.1-latest: Pulling from saguaro1/spi-images
Digest: sha256:beceeede496da67681f4fa220a6b97cc098a0178841a413735f598dc6bbaf4c8
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:wasm-6.1-latest
[0/1] Planning build
Building for debugging...
[0/1] Write swift-version-24593BA9C3E375BF.txt
[2/16] Compiling SynheartBehavior InputSignalCollector.swift
[3/16] Compiling SynheartBehavior InterruptionTrackers.swift
[4/17] Compiling SynheartBehavior EventBatcher.swift
[5/17] Compiling SynheartBehavior GestureSignalCollector.swift
[6/17] Compiling SynheartBehavior MotionSignalCollector.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:67:35: error: cannot infer contextual base in reference to member 'barrier'
 65 |     func startSession(startMs: Double) {
 66 |         sessionStartMs = startMs
 67 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 68 |             self.samples.removeAll()
 69 |             self.lastBatchEndMs = startMs
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:86:35: error: cannot infer contextual base in reference to member 'barrier'
 84 |         stopBatchTimer()
 85 |         batchHandler = nil
 86 |         sampleQueue.async(flags: .barrier) { self.samples.removeAll() }
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 87 |     }
 88 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:91:35: error: cannot infer contextual base in reference to member 'barrier'
 89 |     /// Feed one sample already in m/s². Used by the platform source and by tests.
 90 |     func ingest(tsMs: Double, x: Double, y: Double, z: Double) {
 91 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 92 |             self.samples.append((tsMs, x, y, z))
 93 |         }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:145:9: error: cannot find 'DispatchQueue' in scope
143 |     private func startBatchTimer() {
144 |         let interval = Self.batchIntervalMs / 1_000
145 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
146 |             guard let self else { return }
147 |             self.batchTimer?.invalidate()
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:155:9: error: cannot find 'DispatchQueue' in scope
153 |
154 |     private func stopBatchTimer() {
155 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
156 |             self?.batchTimer?.invalidate()
157 |             self?.batchTimer = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:165:59: error: cannot infer contextual base in reference to member 'barrier'
163 |     func flushBatch(nowMs: Double = Date().timeIntervalSince1970 * 1_000) {
164 |         guard let handler = batchHandler, config.emitRawMotionSamples else { return }
165 |         let batch: [RawSample] = sampleQueue.sync(flags: .barrier) {
    |                                                           `- error: cannot infer contextual base in reference to member 'barrier'
166 |             let since = lastBatchEndMs
167 |             let recent = samples.filter { $0.ts > since && $0.ts <= nowMs }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:9: error: cannot find 'DispatchQueue' in scope
172 |         }
173 |         if batch.isEmpty { return }
174 |         DispatchQueue.main.async { handler(batch) }
    |         `- error: cannot find 'DispatchQueue' in scope
175 |     }
176 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:89:20: error: cannot find 'DispatchWorkItem' in scope
 87 |         guard tracker.received(id: id, atMs: nowMs) else { return }
 88 |         emit(action: "received")
 89 |         let task = DispatchWorkItem { [weak self] in
    |                    `- error: cannot find 'DispatchWorkItem' in scope
 90 |             guard let self else { return }
 91 |             self.pendingIgnored[id] = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:9: error: cannot find 'DispatchQueue' in scope
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |         `- error: cannot find 'DispatchQueue' in scope
 97 |     }
 98 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:50: error: cannot call value of non-function type 'Date'
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |                                                  `- error: cannot call value of non-function type 'Date'
 97 |     }
 98 |
[7/17] Compiling SynheartBehavior NotificationCollector.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:67:35: error: cannot infer contextual base in reference to member 'barrier'
 65 |     func startSession(startMs: Double) {
 66 |         sessionStartMs = startMs
 67 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 68 |             self.samples.removeAll()
 69 |             self.lastBatchEndMs = startMs
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:86:35: error: cannot infer contextual base in reference to member 'barrier'
 84 |         stopBatchTimer()
 85 |         batchHandler = nil
 86 |         sampleQueue.async(flags: .barrier) { self.samples.removeAll() }
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 87 |     }
 88 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:91:35: error: cannot infer contextual base in reference to member 'barrier'
 89 |     /// Feed one sample already in m/s². Used by the platform source and by tests.
 90 |     func ingest(tsMs: Double, x: Double, y: Double, z: Double) {
 91 |         sampleQueue.async(flags: .barrier) {
    |                                   `- error: cannot infer contextual base in reference to member 'barrier'
 92 |             self.samples.append((tsMs, x, y, z))
 93 |         }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:145:9: error: cannot find 'DispatchQueue' in scope
143 |     private func startBatchTimer() {
144 |         let interval = Self.batchIntervalMs / 1_000
145 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
146 |             guard let self else { return }
147 |             self.batchTimer?.invalidate()
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:155:9: error: cannot find 'DispatchQueue' in scope
153 |
154 |     private func stopBatchTimer() {
155 |         DispatchQueue.main.async { [weak self] in
    |         `- error: cannot find 'DispatchQueue' in scope
156 |             self?.batchTimer?.invalidate()
157 |             self?.batchTimer = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:165:59: error: cannot infer contextual base in reference to member 'barrier'
163 |     func flushBatch(nowMs: Double = Date().timeIntervalSince1970 * 1_000) {
164 |         guard let handler = batchHandler, config.emitRawMotionSamples else { return }
165 |         let batch: [RawSample] = sampleQueue.sync(flags: .barrier) {
    |                                                           `- error: cannot infer contextual base in reference to member 'barrier'
166 |             let since = lastBatchEndMs
167 |             let recent = samples.filter { $0.ts > since && $0.ts <= nowMs }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:9: error: cannot find 'DispatchQueue' in scope
172 |         }
173 |         if batch.isEmpty { return }
174 |         DispatchQueue.main.async { handler(batch) }
    |         `- error: cannot find 'DispatchQueue' in scope
175 |     }
176 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:89:20: error: cannot find 'DispatchWorkItem' in scope
 87 |         guard tracker.received(id: id, atMs: nowMs) else { return }
 88 |         emit(action: "received")
 89 |         let task = DispatchWorkItem { [weak self] in
    |                    `- error: cannot find 'DispatchWorkItem' in scope
 90 |             guard let self else { return }
 91 |             self.pendingIgnored[id] = nil
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:9: error: cannot find 'DispatchQueue' in scope
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |         `- error: cannot find 'DispatchQueue' in scope
 97 |     }
 98 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:96:50: error: cannot call value of non-function type 'Date'
 94 |         pendingIgnored[id]?.cancel()
 95 |         pendingIgnored[id] = task
 96 |         DispatchQueue.main.asyncAfter(deadline: .now() + ignoredThresholdMs / 1_000, execute: task)
    |                                                  `- error: cannot call value of non-function type 'Date'
 97 |     }
 98 |
[8/17] Compiling SynheartBehavior ScrollSignalCollector.swift
[9/17] Compiling SynheartBehavior SessionManager.swift
[10/17] Compiling SynheartBehavior SynheartBehavior.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
[11/17] Compiling SynheartBehavior BehaviorStats.swift
[12/17] Compiling SynheartBehavior CallCollector.swift
error: emit-module command failed with exit code 1 (use -v to see invocation)
[13/17] Compiling SynheartBehavior BehaviorEvent.swift
[14/17] Compiling SynheartBehavior BehaviorSession.swift
[15/17] Emitting module SynheartBehavior
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:31: error: cannot find 'DispatchQueue' in scope
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                               `- error: cannot find 'DispatchQueue' in scope
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:29:96: error: cannot infer contextual base in reference to member 'concurrent'
 27 |     private var isCollecting = false
 28 |
 29 |     private let sampleQueue = DispatchQueue(label: "ai.synheart.behavior.motion", attributes: .concurrent)
    |                                                                                                `- error: cannot infer contextual base in reference to member 'concurrent'
 30 |     private var samples: [(ts: Double, x: Double, y: Double, z: Double)] = []
 31 |
/host/spi-builder-workspace/Sources/SynheartBehavior/NotificationCollector.swift:29:42: error: cannot find type 'DispatchWorkItem' in scope
 27 |     private weak var sessionManager: SessionManager?
 28 |     private var tracker = NotificationOutcomeTracker()
 29 |     private var pendingIgnored: [String: DispatchWorkItem] = [:]
    |                                          `- error: cannot find type 'DispatchWorkItem' in scope
 30 |     private var enabled: Bool
 31 |     private let installDelegate: Bool
[16/17] Compiling SynheartBehavior AttentionSignalCollector.swift
[17/17] Compiling SynheartBehavior BehaviorConfig.swift
BUILD FAILURE 6.1 wasm