The Swift Package Index logo.Swift Package Index

Build Information

Successful build of Narratore, reference main (18a9cb), with Swift 6.2 for Wasm on 22 Jun 2025 19:18:50 UTC.

Swift 6 data race errors: 0

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:wasm-6.2-latest swift build --swift-sdk wasm32-unknown-wasi 2>&1

Build Log

========================================
RunAll
========================================
Builder version: 4.64.0
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/broomburgo/Narratore.git
Reference: main
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
 * branch            main       -> FETCH_HEAD
 * [new branch]      main       -> origin/main
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 main
========================================
Build
========================================
Selected platform:         wasm
Swift version:             6.2
Building package at path:  $PWD
https://github.com/broomburgo/Narratore.git
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4609320-3":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:wasm-6.2-latest swift build --swift-sdk wasm32-unknown-wasi 2>&1
wasm-6.2-latest: Pulling from finestructure/spi-images
Digest: sha256:44384f43f933eaa0f42803e9ef7c3d8388c5841ccc831a15a5edf63d8c273423
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:wasm-6.2-latest
Building for debugging...
[0/2] Write sources
[1/2] Write swift-version-24593BA9C3E375BF.txt
[3/10] Compiling Narratore DSL.swift
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:17:30: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 15 |       anchor: anchor,
 16 |       getStep: .init {
 17 |         let messages = await getMessages($0)
    |                              `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 18 |
 19 |         return .tell(tags: tags, getMessages: {
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:41:50: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 39 |     _ update: @escaping Update<Scene.Game>
 40 |   ) -> SceneStep<Scene> {
 41 |     .init(anchor: anchor, getStep: .init { _ in .init(update: update) })
    |                                                  `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 42 |   }
 43 |
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:53:9: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 51 |       anchor: anchor,
 52 |       getStep: .init {
 53 |         await .init(choice: .init(options: getOptions($0), tags: tags))
    |         `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 54 |       }
 55 |     )
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:69:10: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 67 |       anchor: anchor,
 68 |       getStep: .init { context in
 69 |         .init(textRequest: .init(
    |          `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 70 |           message: getMessage(),
 71 |           validate: validate,
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:72:22: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 70 |           message: getMessage(),
 71 |           validate: validate,
 72 |           getStep: { await ifValid(context, $0) },
    |                      `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 73 |           tags: tags
 74 |         ))
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:86:10: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 84 |       anchor: nil,
 85 |       getStep: .init { _ in
 86 |         .init(
    |          `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 87 |           jump: .init(
 88 |             narration: .init(
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:102:50: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
100 |   /// Creates a step that will be skipped; useful to establish a simple anchor that will not make the player acknowledge a narration or make a choice.
101 |   public static func skip(anchor: Scene.Anchor? = nil) -> SceneStep<Scene> {
102 |     .init(anchor: anchor, getStep: .init { _ in .skip })
    |                                                  `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
103 |   }
104 |
/host/spi-builder-workspace/Sources/Narratore/DSL.swift:122:10: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
120 |       anchor: anchor,
121 |       getStep: .init { _ in
122 |         .tell(
    |          `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
123 |           tags: tags,
124 |           getMessages: { [.init(id: id, text: self)] },
[4/10] Emitting module Narratore
[5/11] Compiling Narratore ResultBuilders.swift
/host/spi-builder-workspace/Sources/Narratore/ResultBuilders.swift:97:12: warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 95 |         anchor: nil,
 96 |         getStep: .init { _ in
 97 |           .init(
    |            `- warning: capture of non-Sendable type 'Scene.Game.Type' in an isolated closure
 98 |             narration: .init(
 99 |               messages: [.init(id: nil, text: expression)],
[6/11] Compiling Narratore Handler.swift
[7/11] Compiling Narratore Runner.swift
/host/spi-builder-workspace/Sources/Narratore/Runner.swift:157:27: warning: capture of non-Sendable type 'Game.Generate.Type' in an isolated closure
155 |
156 |   init() {
157 |     randomRatio = { await Game.Generate.randomRatio() }
    |                           `- warning: capture of non-Sendable type 'Game.Generate.Type' in an isolated closure
158 |     uniqueString = { await Game.Generate.uniqueString() }
159 |   }
/host/spi-builder-workspace/Sources/Narratore/Runner.swift:158:28: warning: capture of non-Sendable type 'Game.Generate.Type' in an isolated closure
156 |   init() {
157 |     randomRatio = { await Game.Generate.randomRatio() }
158 |     uniqueString = { await Game.Generate.uniqueString() }
    |                            `- warning: capture of non-Sendable type 'Game.Generate.Type' in an isolated closure
159 |   }
160 | }
[8/11] Compiling Narratore Step.swift
/host/spi-builder-workspace/Sources/Narratore/Step.swift:35:22: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 33 | extension Step {
 34 |   public static var skip: Self {
 35 |     .init { _, _ in .advance(nil) }
    |                      `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 36 |   }
 37 |
/host/spi-builder-workspace/Sources/Narratore/Step.swift:40:46: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 38 |   public init(choice: Choice<Game>) {
 39 |     self.init { info, handling in
 40 |       guard let firstOption = choice.options.first else {
    |                                              `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 41 |         if choice.config.failIfNoOptions {
 42 |           handling.handle(event: .errorProduced(.noOptions(choice: choice)))
/host/spi-builder-workspace/Sources/Narratore/Step.swift:38:15: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 36 |   }
 37 |
 38 |   public init(choice: Choice<Game>) {
    |               `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 39 |     self.init { info, handling in
 40 |       guard let firstOption = choice.options.first else {
/host/spi-builder-workspace/Sources/Narratore/Step.swift:54:15: warning: capture of non-Sendable type 'Game.Generate.Type' in an isolated closure
 52 |       for option in choice.options {
 53 |         await playerOptions.append(.init(
 54 |           id: Game.Generate.uniqueString(),
    |               `- warning: capture of non-Sendable type 'Game.Generate.Type' in an isolated closure
 55 |           message: option.message,
 56 |           tags: option.tags
/host/spi-builder-workspace/Sources/Narratore/Step.swift:97:18: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 95 |   public init(textRequest: TextRequest<Game>) {
 96 |     self.init { info, handling in
 97 |       let next = await handling.answer(request: .init(
    |                  `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 98 |         message: textRequest.message,
 99 |         validate: {
/host/spi-builder-workspace/Sources/Narratore/Step.swift:95:15: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 93 |   }
 94 |
 95 |   public init(textRequest: TextRequest<Game>) {
    |               `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 96 |     self.init { info, handling in
 97 |       let next = await handling.answer(request: .init(
/host/spi-builder-workspace/Sources/Narratore/Step.swift:100:11: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 98 |         message: textRequest.message,
 99 |         validate: {
100 |           switch textRequest.validate($0) {
    |           `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
101 |           case .valid(let validated):
102 |             .valid(.init(value: validated.text))
/host/spi-builder-workspace/Sources/Narratore/Step.swift:95:15: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 93 |   }
 94 |
 95 |   public init(textRequest: TextRequest<Game>) {
    |               `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
 96 |     self.init { info, handling in
 97 |       let next = await handling.answer(request: .init(
/host/spi-builder-workspace/Sources/Narratore/Step.swift:133:36: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
131 |   public init(narration: Narration<Game>) {
132 |     self.init { info, handling in
133 |       let next: Next<Game, Void> = if !narration.messages.isEmpty || !narration.tags.isEmpty {
    |                                    `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
134 |         await handling.acknowledge(narration: .init(
135 |           messages: narration.messages,
/host/spi-builder-workspace/Sources/Narratore/Step.swift:131:15: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
129 |   }
130 |
131 |   public init(narration: Narration<Game>) {
    |               `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
132 |     self.init { info, handling in
133 |       let next: Next<Game, Void> = if !narration.messages.isEmpty || !narration.tags.isEmpty {
/host/spi-builder-workspace/Sources/Narratore/Step.swift:162:36: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
160 |   public init(jump: Jump<Game>) {
161 |     self.init { info, handling in
162 |       let next: Next<Game, Void> = if !jump.narration.messages.isEmpty || !jump.narration.tags.isEmpty {
    |                                    `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
163 |         await handling.acknowledge(narration: .init(
164 |           messages: jump.narration.messages,
/host/spi-builder-workspace/Sources/Narratore/Step.swift:160:15: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
158 |   }
159 |
160 |   public init(jump: Jump<Game>) {
    |               `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
161 |     self.init { info, handling in
162 |       let next: Next<Game, Void> = if !jump.narration.messages.isEmpty || !jump.narration.tags.isEmpty {
/host/spi-builder-workspace/Sources/Narratore/Step.swift:189:15: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
187 |   }
188 |
189 |   public init(update: @escaping Update<Game>) {
    |               `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
190 |     self.init { info, _ in
191 |       await update(&info.world)
/host/spi-builder-workspace/Sources/Narratore/Step.swift:191:21: warning: capture of non-Sendable type 'Game.Type' in an isolated closure
189 |   public init(update: @escaping Update<Game>) {
190 |     self.init { info, _ in
191 |       await update(&info.world)
    |                     `- warning: capture of non-Sendable type 'Game.Type' in an isolated closure
192 |       return .advance(nil)
193 |     }
[9/11] Compiling Narratore Setting.swift
[10/11] Compiling Narratore Script.swift
[11/11] Compiling Narratore Story.swift
/host/spi-builder-workspace/Sources/Narratore/Story.swift:68:29: warning: capture of non-Sendable type 'Self.Game.Type' in an isolated closure
 66 |
 67 |       guard helper.id == Self.id else {
 68 |         throw Failure<Game>.invalidSceneId(expected: Self.id, received: helper.id)
    |                             `- warning: capture of non-Sendable type 'Self.Game.Type' in an isolated closure
 69 |       }
 70 |
Build complete! (8.01s)
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"
}
wasm-6.2-latest: Pulling from finestructure/spi-images
Digest: sha256:44384f43f933eaa0f42803e9ef7c3d8388c5841ccc831a15a5edf63d8c273423
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:wasm-6.2-latest
Done.