Build Information
Successful build of SynheartBehavior, reference v0.5.0 (fb451e), with Swift 6.1 for Linux on 4 Oct 2026 15:58:04 UTC.
Swift 6 data race errors: 1
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344844-1":/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:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -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>&1Build 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: linux
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-1":/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:basic-6.1-latest swift build --triple x86_64-unknown-linux-gnu -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
basic-6.1-latest: Pulling from saguaro1/spi-images
Digest: sha256:bebe373f64586285d153a73cebf57004d534988a7110464fd581e50dd24c756b
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:basic-6.1-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/17] 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 }
[4/18] Compiling SynheartBehavior ScrollSignalCollector.swift
[5/18] Compiling SynheartBehavior SessionManager.swift
[6/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 |
[7/18] Compiling SynheartBehavior MotionSignalCollector.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:68:13: warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
66 | sessionStartMs = startMs
67 | sampleQueue.async(flags: .barrier) {
68 | self.samples.removeAll()
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
69 | self.lastBatchEndMs = startMs
70 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:86:46: warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
84 | stopBatchTimer()
85 | batchHandler = nil
86 | sampleQueue.async(flags: .barrier) { self.samples.removeAll() }
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
87 | }
88 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:92:13: warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
90 | func ingest(tsMs: Double, x: Double, y: Double, z: Double) {
91 | sampleQueue.async(flags: .barrier) {
92 | self.samples.append((tsMs, x, y, z))
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
93 | }
94 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:149:17: warning: capture of 'self' with non-sendable type 'MotionSignalCollector?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
147 | self.batchTimer?.invalidate()
148 | self.batchTimer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true) { [weak self] _ in
149 | self?.flushBatch()
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
150 | }
151 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:146:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
144 | let interval = Self.batchIntervalMs / 1_000
145 | DispatchQueue.main.async { [weak self] in
146 | guard let self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
147 | self.batchTimer?.invalidate()
148 | self.batchTimer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true) { [weak self] _ in
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:156:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
154 | private func stopBatchTimer() {
155 | DispatchQueue.main.async { [weak self] in
156 | self?.batchTimer?.invalidate()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
157 | self?.batchTimer = nil
158 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:36: warning: sending 'handler' risks causing data races; this is an error in the Swift 6 language mode
172 | }
173 | if batch.isEmpty { return }
174 | DispatchQueue.main.async { handler(batch) }
| |- warning: sending 'handler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'handler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
175 | }
176 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:44: warning: sending 'batch' risks causing data races; this is an error in the Swift 6 language mode
172 | }
173 | if batch.isEmpty { return }
174 | DispatchQueue.main.async { handler(batch) }
| |- warning: sending 'batch' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'batch' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
175 | }
176 |
[8/18] Compiling SynheartBehavior NotificationCollector.swift
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:68:13: warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
66 | sessionStartMs = startMs
67 | sampleQueue.async(flags: .barrier) {
68 | self.samples.removeAll()
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
69 | self.lastBatchEndMs = startMs
70 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:86:46: warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
84 | stopBatchTimer()
85 | batchHandler = nil
86 | sampleQueue.async(flags: .barrier) { self.samples.removeAll() }
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
87 | }
88 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:92:13: warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
90 | func ingest(tsMs: Double, x: Double, y: Double, z: Double) {
91 | sampleQueue.async(flags: .barrier) {
92 | self.samples.append((tsMs, x, y, z))
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector' in a '@Sendable' closure; this is an error in the Swift 6 language mode
93 | }
94 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:149:17: warning: capture of 'self' with non-sendable type 'MotionSignalCollector?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
16 | /// not start the sensor. Inert off iOS.
17 | /// Privacy: raw motion values and timing only, never location.
18 | internal final class MotionSignalCollector {
| `- note: class 'MotionSignalCollector' does not conform to the 'Sendable' protocol
19 | /// One raw sample as handed to the batch handler: `ts_ms`, `ax`, `ay`, `az`.
20 | typealias RawSample = [String: Any]
:
147 | self.batchTimer?.invalidate()
148 | self.batchTimer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true) { [weak self] _ in
149 | self?.flushBatch()
| `- warning: capture of 'self' with non-sendable type 'MotionSignalCollector?' in a '@Sendable' closure; this is an error in the Swift 6 language mode
150 | }
151 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:146:23: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
144 | let interval = Self.batchIntervalMs / 1_000
145 | DispatchQueue.main.async { [weak self] in
146 | guard let self else { return }
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
147 | self.batchTimer?.invalidate()
148 | self.batchTimer = Timer.scheduledTimer(withTimeInterval: interval, repeats: true) { [weak self] _ in
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:156:13: warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
154 | private func stopBatchTimer() {
155 | DispatchQueue.main.async { [weak self] in
156 | self?.batchTimer?.invalidate()
| |- warning: sending 'self' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'self' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
157 | self?.batchTimer = nil
158 | }
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:36: warning: sending 'handler' risks causing data races; this is an error in the Swift 6 language mode
172 | }
173 | if batch.isEmpty { return }
174 | DispatchQueue.main.async { handler(batch) }
| |- warning: sending 'handler' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'handler' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
175 | }
176 |
/host/spi-builder-workspace/Sources/SynheartBehavior/MotionSignalCollector.swift:174:44: warning: sending 'batch' risks causing data races; this is an error in the Swift 6 language mode
172 | }
173 | if batch.isEmpty { return }
174 | DispatchQueue.main.async { handler(batch) }
| |- warning: sending 'batch' risks causing data races; this is an error in the Swift 6 language mode
| `- note: task-isolated 'batch' is captured by a main actor-isolated closure. main actor-isolated uses in closure may race against later nonisolated uses
175 | }
176 |
[9/18] Compiling SynheartBehavior InputSignalCollector.swift
[10/18] Compiling SynheartBehavior InterruptionTrackers.swift
[11/18] Compiling SynheartBehavior BehaviorStats.swift
[12/18] Compiling SynheartBehavior CallCollector.swift
[13/18] Compiling SynheartBehavior AttentionSignalCollector.swift
[14/18] Compiling SynheartBehavior BehaviorConfig.swift
[15/18] Compiling SynheartBehavior EventBatcher.swift
[16/18] Compiling SynheartBehavior GestureSignalCollector.swift
[17/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 }
[18/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 }
Build complete! (5.75s)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "SynheartBehavior",
"name" : "SynheartBehavior",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "macos",
"version" : "10.15"
}
],
"products" : [
{
"name" : "SynheartBehavior",
"targets" : [
"SynheartBehavior"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "SynheartBehaviorTests",
"module_type" : "SwiftTarget",
"name" : "SynheartBehaviorTests",
"path" : "Tests/SynheartBehaviorTests",
"sources" : [
"CollectorTests.swift",
"InterruptionTrackersTests.swift",
"SynheartBehaviorTests.swift"
],
"target_dependencies" : [
"SynheartBehavior"
],
"type" : "test"
},
{
"c99name" : "SynheartBehavior",
"module_type" : "SwiftTarget",
"name" : "SynheartBehavior",
"path" : "Sources/SynheartBehavior",
"product_memberships" : [
"SynheartBehavior"
],
"sources" : [
"AttentionSignalCollector.swift",
"BehaviorConfig.swift",
"BehaviorEvent.swift",
"BehaviorSession.swift",
"BehaviorStats.swift",
"CallCollector.swift",
"EventBatcher.swift",
"GestureSignalCollector.swift",
"InputSignalCollector.swift",
"InterruptionTrackers.swift",
"MotionSignalCollector.swift",
"NotificationCollector.swift",
"ScrollSignalCollector.swift",
"SessionManager.swift",
"SynheartBehavior.swift"
],
"type" : "library"
}
],
"tools_version" : "5.9"
}
basic-6.1-latest: Pulling from saguaro1/spi-images
Digest: sha256:bebe373f64586285d153a73cebf57004d534988a7110464fd581e50dd24c756b
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:basic-6.1-latest
Done.