Build Information
Successful build of Narratore, reference 0.3.0 (18a9cb), with Swift 6.4 for Android on 21 Sep 2026 16:29:19 UTC.
Swift 6 data race errors: 0
Build Command
bash -c docker run --pull=always --rm -v "checkouts-54344843-2":/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:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1Build Log
========================================
RunAll
========================================
Builder version: 5.1.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/broomburgo/Narratore.git
Reference: 0.3.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/broomburgo/Narratore
* tag 0.3.0 -> FETCH_HEAD
HEAD is now at 18a9cb4 Strict concurrency checking + several improvements (#2)
Cloned https://github.com/broomburgo/Narratore.git
Revision (git rev-parse @):
18a9cb486e1b2e0d9a1239ba74736cdd588a2ac1
SUCCESS checkout https://github.com/broomburgo/Narratore.git at 0.3.0
========================================
Build
========================================
Selected platform: android
Swift version: 6.4
Building package at path: $PWD
https://github.com/broomburgo/Narratore.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-54344843-2":/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:android-6.4-latest swift build --swift-sdk aarch64-unknown-linux-android28 2>&1
android-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:abadcff584c273feba50641b454858d377ba30b35ea7287a94f45ebd8afd0ea0
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.4-latest
Building for debugging...
[Pre-planning 1 / 66]
[Planning deferred tasks]
[28 / 36] Narratore
/host/spi-builder-workspace/Sources/Narratore/Runner.swift:59:29: [1;33mwarning: [1;39mconformance of 'Game' to protocol 'Setting' may be isolated and cannot be passed to @concurrent context[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/isolated-conformances\IsolatedConformances]8;;\]
[0;36m57 |[0;0m
[0;36m58 |[0;0m let getStep = getSteps[sceneStatus.currentStepIndex]
[0;36m59 |[0;0m let step = await getStep(context: .init(
[0;36m|[0;0m `- [1;33mwarning: [1;39mconformance of 'Game' to protocol 'Setting' may be isolated and cannot be passed to @concurrent context[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/isolated-conformances\IsolatedConformances]8;;\]
[0;36m60 |[0;0m generate: .init(),
[0;36m61 |[0;0m script: status.info.script,
/host/spi-builder-workspace/Sources/Narratore/Runner.swift:64:38: [1;33mwarning: [1;39mconformance of 'Game' to protocol 'Setting' may be isolated and cannot be passed to @concurrent context[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/isolated-conformances\IsolatedConformances]8;;\]
[0;36m62 |[0;0m world: status.info.world
[0;36m63 |[0;0m ))
[0;36m64 |[0;0m let (newInfo, next) = await step.apply(info: status.info, handling: handling)
[0;36m|[0;0m `- [1;33mwarning: [1;39mconformance of 'Game' to protocol 'Setting' may be isolated and cannot be passed to @concurrent context[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/isolated-conformances\IsolatedConformances]8;;\]
[0;36m65 |[0;0m status.info = newInfo
[0;36m66 |[0;0m
/host/spi-builder-workspace/Sources/Narratore/Runner.swift:157:27: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Generate.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m155 |[0;0m
[0;36m156 |[0;0m init() {
[0;36m157 |[0;0m randomRatio = { await Game.Generate.randomRatio() }
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Generate.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m158 |[0;0m uniqueString = { await Game.Generate.uniqueString() }
[0;36m159 |[0;0m }
/host/spi-builder-workspace/Sources/Narratore/Runner.swift:158:28: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Generate.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m156 |[0;0m init() {
[0;36m157 |[0;0m randomRatio = { await Game.Generate.randomRatio() }
[0;36m158 |[0;0m uniqueString = { await Game.Generate.uniqueString() }
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Generate.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m159 |[0;0m }
[0;36m160 |[0;0m }
[#IsolatedConformances]: <https://docs.swift.org/compiler/documentation/diagnostics/isolated-conformances>
[#SendableMetatypes]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes>
[33 / 36] Narratore
/host/spi-builder-workspace/Sources/Narratore/Step.swift:35:22: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m33 |[0;0m extension Step {
[0;36m34 |[0;0m public static var skip: Self {
[0;36m35 |[0;0m .init { _, _ in .advance(nil) }
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m36 |[0;0m }
[0;36m37 |[0;0m
/host/spi-builder-workspace/Sources/Narratore/Step.swift:40:46: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m38 |[0;0m public init(choice: Choice<Game>) {
[0;36m39 |[0;0m self.init { info, handling in
[0;36m40 |[0;0m guard let firstOption = choice.options.first else {
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m41 |[0;0m if choice.config.failIfNoOptions {
[0;36m42 |[0;0m handling.handle(event: .errorProduced(.noOptions(choice: choice)))
/host/spi-builder-workspace/Sources/Narratore/Step.swift:54:15: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Generate.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m52 |[0;0m for option in choice.options {
[0;36m53 |[0;0m await playerOptions.append(.init(
[0;36m54 |[0;0m id: Game.Generate.uniqueString(),
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Generate.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m55 |[0;0m message: option.message,
[0;36m56 |[0;0m tags: option.tags
/host/spi-builder-workspace/Sources/Narratore/Step.swift:97:18: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m95 |[0;0m public init(textRequest: TextRequest<Game>) {
[0;36m96 |[0;0m self.init { info, handling in
[0;36m97 |[0;0m let next = await handling.answer(request: .init(
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m98 |[0;0m message: textRequest.message,
[0;36m99 |[0;0m validate: {
/host/spi-builder-workspace/Sources/Narratore/Step.swift:100:11: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m98 |[0;0m message: textRequest.message,
[0;36m99 |[0;0m validate: {
[0;36m100 |[0;0m switch textRequest.validate($0) {
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m101 |[0;0m case .valid(let validated):
[0;36m102 |[0;0m .valid(.init(value: validated.text))
/host/spi-builder-workspace/Sources/Narratore/Step.swift:133:36: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m131 |[0;0m public init(narration: Narration<Game>) {
[0;36m132 |[0;0m self.init { info, handling in
[0;36m133 |[0;0m let next: Next<Game, Void> = if !narration.messages.isEmpty || !narration.tags.isEmpty {
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m134 |[0;0m await handling.acknowledge(narration: .init(
[0;36m135 |[0;0m messages: narration.messages,
/host/spi-builder-workspace/Sources/Narratore/Step.swift:162:36: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m160 |[0;0m public init(jump: Jump<Game>) {
[0;36m161 |[0;0m self.init { info, handling in
[0;36m162 |[0;0m let next: Next<Game, Void> = if !jump.narration.messages.isEmpty || !jump.narration.tags.isEmpty {
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m163 |[0;0m await handling.acknowledge(narration: .init(
[0;36m164 |[0;0m messages: jump.narration.messages,
/host/spi-builder-workspace/Sources/Narratore/Step.swift:191:21: [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m189 |[0;0m public init(update: @escaping Update<Game>) {
[0;36m190 |[0;0m self.init { info, _ in
[0;36m191 |[0;0m await update(&info.world)
[0;36m|[0;0m `- [1;33mwarning: [1;39mcapture of non-Sendable type 'Game.Type' in an isolated closure[0;0m [#]8;;https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes\SendableMetatypes]8;;\]
[0;36m192 |[0;0m return .advance(nil)
[0;36m193 |[0;0m }
[#SendableMetatypes]: <https://docs.swift.org/compiler/documentation/diagnostics/sendable-metatypes>
Build complete! (4.15 secs)
Build complete.
{
"dependencies" : [
],
"manifest_display_name" : "Narratore",
"name" : "Narratore",
"path" : "/host/spi-builder-workspace",
"platforms" : [
{
"name" : "ios",
"version" : "13.0"
},
{
"name" : "macos",
"version" : "14.0"
}
],
"products" : [
{
"name" : "Narratore",
"targets" : [
"Narratore"
],
"type" : {
"library" : [
"automatic"
]
}
}
],
"targets" : [
{
"c99name" : "NarratoreTests",
"module_type" : "SwiftTarget",
"name" : "NarratoreTests",
"path" : "Tests/NarratoreTests",
"sources" : [
"NarratoreTests.swift",
"TestValuesAndMocks.swift"
],
"target_dependencies" : [
"Narratore"
],
"type" : "test"
},
{
"c99name" : "Narratore",
"module_type" : "SwiftTarget",
"name" : "Narratore",
"path" : "Sources/Narratore",
"product_memberships" : [
"Narratore"
],
"sources" : [
"DSL.swift",
"Handler.swift",
"ResultBuilders.swift",
"Runner.swift",
"Script.swift",
"Setting.swift",
"Step.swift",
"Story.swift"
],
"type" : "library"
}
],
"tools_version" : "6.0"
}
android-6.4-latest: Pulling from saguaro1/spi-images
Digest: sha256:abadcff584c273feba50641b454858d377ba30b35ea7287a94f45ebd8afd0ea0
Status: Image is up to date for registry.gitlab.com/saguaro1/spi-images:android-6.4-latest
Done.