The Swift Package Index logo.Swift Package Index

Build Information

Successful build of Citadel, reference main (ae8562), with Swift 6.1 for Linux on 4 Apr 2026 15:49:56 UTC.

Swift 6 data race errors: 33

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" -e JAVA_HOME="/root/.sdkman/candidates/java/current" -e SPI_BUILD="1" -e SPI_PROCESSING="1" registry.gitlab.com/swiftpackageindex/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

Build Log

 54 |         public var rawValue: UInt32
 55 |
    :
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
    |                           |- warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'permissions' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:63:27: warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
    |                           |- warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'acmodtime' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |         public static let extended = Flags(rawValue: 0x80000000)
 65 |     }
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:64:27: warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
    |                           |- warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'extended' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 65 |     }
 66 |
[1012/1027] Compiling Citadel SFTPFile.swift
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:48:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 46 |
 47 |         return channel.pipeline.addHandlers(
 48 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:49:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
 47 |         return channel.pipeline.addHandlers(
 48 |             SSHChannelDataUnwrapper(),
 49 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
 50 |             deserializeHandler,
 51 |             serializeHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:50:13: warning: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 48 |             SSHChannelDataUnwrapper(),
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
    |             `- warning: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/Codec.swift:507:1: note: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' has been explicitly marked unavailable here
505 |
506 | @available(*, unavailable)
507 | extension ByteToMessageHandler: Sendable {}
    | `- note: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' has been explicitly marked unavailable here
508 |
509 | // MARK: ByteToMessageHandler: Test Helpers
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:51:13: warning: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
 51 |             serializeHandler,
    |             `- warning: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 52 |             sftpInboundHandler,
 53 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/Codec.swift:810:1: note: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' has been explicitly marked unavailable here
808 |
809 | @available(*, unavailable)
810 | extension MessageToByteHandler: Sendable {}
    | `- note: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' has been explicitly marked unavailable here
811 |
812 | extension MessageToByteHandler {
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:52:13: warning: type 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 50 |             deserializeHandler,
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
    |             `- warning: type 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 53 |             CloseErrorHandler(logger: logger)
 54 |         ).map {
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClientInboundHandler.swift:6:13: note: class 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 4 | import Logging
 5 |
 6 | final class SFTPClientInboundHandler: ChannelInboundHandler {
   |             `- note: class 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 7 |     typealias InboundIn = SFTPMessage
 8 |
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:53:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
 53 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
 54 |         ).map {
 55 |             let client = SFTPClient(channel: channel, responses: responses, logger: logger)
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:60:27: warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 58 |         }
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
    |                           |- warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'size' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:61:27: warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
    |                           |- warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'uidgid' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:62:27: warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
    |                           |- warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'permissions' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:63:27: warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
    |                           |- warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'acmodtime' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |         public static let extended = Flags(rawValue: 0x80000000)
 65 |     }
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:64:27: warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
    |                           |- warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'extended' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 65 |     }
 66 |
[1013/1027] Compiling Citadel SFTPBasicEnums.swift
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:48:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 46 |
 47 |         return channel.pipeline.addHandlers(
 48 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:49:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
 47 |         return channel.pipeline.addHandlers(
 48 |             SSHChannelDataUnwrapper(),
 49 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
 50 |             deserializeHandler,
 51 |             serializeHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:50:13: warning: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 48 |             SSHChannelDataUnwrapper(),
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
    |             `- warning: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/Codec.swift:507:1: note: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' has been explicitly marked unavailable here
505 |
506 | @available(*, unavailable)
507 | extension ByteToMessageHandler: Sendable {}
    | `- note: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' has been explicitly marked unavailable here
508 |
509 | // MARK: ByteToMessageHandler: Test Helpers
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:51:13: warning: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
 51 |             serializeHandler,
    |             `- warning: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 52 |             sftpInboundHandler,
 53 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/Codec.swift:810:1: note: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' has been explicitly marked unavailable here
808 |
809 | @available(*, unavailable)
810 | extension MessageToByteHandler: Sendable {}
    | `- note: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' has been explicitly marked unavailable here
811 |
812 | extension MessageToByteHandler {
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:52:13: warning: type 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 50 |             deserializeHandler,
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
    |             `- warning: type 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 53 |             CloseErrorHandler(logger: logger)
 54 |         ).map {
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClientInboundHandler.swift:6:13: note: class 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 4 | import Logging
 5 |
 6 | final class SFTPClientInboundHandler: ChannelInboundHandler {
   |             `- note: class 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 7 |     typealias InboundIn = SFTPMessage
 8 |
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:53:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
 53 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
 54 |         ).map {
 55 |             let client = SFTPClient(channel: channel, responses: responses, logger: logger)
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:60:27: warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 58 |         }
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
    |                           |- warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'size' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:61:27: warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
    |                           |- warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'uidgid' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:62:27: warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
    |                           |- warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'permissions' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:63:27: warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
    |                           |- warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'acmodtime' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |         public static let extended = Flags(rawValue: 0x80000000)
 65 |     }
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:64:27: warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
    |                           |- warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'extended' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 65 |     }
 66 |
[1014/1027] Compiling Citadel SFTPFileFlags.swift
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:48:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 46 |
 47 |         return channel.pipeline.addHandlers(
 48 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:49:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
 47 |         return channel.pipeline.addHandlers(
 48 |             SSHChannelDataUnwrapper(),
 49 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
 50 |             deserializeHandler,
 51 |             serializeHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:50:13: warning: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 48 |             SSHChannelDataUnwrapper(),
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
    |             `- warning: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/Codec.swift:507:1: note: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' has been explicitly marked unavailable here
505 |
506 | @available(*, unavailable)
507 | extension ByteToMessageHandler: Sendable {}
    | `- note: conformance of 'ByteToMessageHandler<Decoder>' to 'Sendable' has been explicitly marked unavailable here
508 |
509 | // MARK: ByteToMessageHandler: Test Helpers
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:51:13: warning: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 49 |             SSHOutboundChannelDataWrapper(),
 50 |             deserializeHandler,
 51 |             serializeHandler,
    |             `- warning: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
 52 |             sftpInboundHandler,
 53 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/Codec.swift:810:1: note: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' has been explicitly marked unavailable here
808 |
809 | @available(*, unavailable)
810 | extension MessageToByteHandler: Sendable {}
    | `- note: conformance of 'MessageToByteHandler<Encoder>' to 'Sendable' has been explicitly marked unavailable here
811 |
812 | extension MessageToByteHandler {
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:52:13: warning: type 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 50 |             deserializeHandler,
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
    |             `- warning: type 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 53 |             CloseErrorHandler(logger: logger)
 54 |         ).map {
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClientInboundHandler.swift:6:13: note: class 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 4 | import Logging
 5 |
 6 | final class SFTPClientInboundHandler: ChannelInboundHandler {
   |             `- note: class 'SFTPClientInboundHandler' does not conform to the 'Sendable' protocol
 7 |     typealias InboundIn = SFTPMessage
 8 |
/host/spi-builder-workspace/Sources/Citadel/SFTP/Client/SFTPClient.swift:53:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
 51 |             serializeHandler,
 52 |             sftpInboundHandler,
 53 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
 54 |         ).map {
 55 |             let client = SFTPClient(channel: channel, responses: responses, logger: logger)
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:60:27: warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 58 |         }
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
    |                           |- warning: static property 'size' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'size' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:61:27: warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 59 |
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
    |                           |- warning: static property 'uidgid' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'uidgid' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:62:27: warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 60 |         public static let size = Flags(rawValue: 0x00000001)
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
    |                           |- warning: static property 'permissions' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'permissions' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:63:27: warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 61 |         public static let uidgid = Flags(rawValue: 0x00000002)
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
    |                           |- warning: static property 'acmodtime' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'acmodtime' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |         public static let extended = Flags(rawValue: 0x80000000)
 65 |     }
/host/spi-builder-workspace/Sources/Citadel/SFTP/SFTPFileFlags.swift:64:27: warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
 51 |
 52 | public struct SFTPFileAttributes: CustomDebugStringConvertible, Sendable, Hashable {
 53 |     public struct Flags: OptionSet, Hashable {
    |                   `- note: consider making struct 'Flags' conform to the 'Sendable' protocol
 54 |         public var rawValue: UInt32
 55 |
    :
 62 |         public static let permissions = Flags(rawValue: 0x00000004)
 63 |         public static let acmodtime = Flags(rawValue: 0x00000008)
 64 |         public static let extended = Flags(rawValue: 0x80000000)
    |                           |- warning: static property 'extended' is not concurrency-safe because non-'Sendable' type 'SFTPFileAttributes.Flags' may have shared mutable state; this is an error in the Swift 6 language mode
    |                           |- note: add '@MainActor' to make static property 'extended' part of global actor 'MainActor'
    |                           `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 65 |     }
 66 |
[1015/1027] Compiling Citadel AES.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[1016/1027] Compiling Citadel DH-Helpers.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[1017/1027] Compiling Citadel DiffieHellmanGroup14Sha1.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[1018/1027] Compiling Citadel DiffieHellmanGroup14Sha256.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[1019/1027] Compiling Citadel RSA.swift
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha1.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
/host/spi-builder-workspace/Sources/Citadel/Algorithms/DiffieHellmanGroup14Sha256.swift:19:23: warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
 17 |     private var sharedSecret: Data?
 18 |     public let ourKey: Insecure.RSA.PrivateKey
 19 |     public static var ourKey: Insecure.RSA.PrivateKey?
    |                       |- warning: static property 'ourKey' is not concurrency-safe because it is nonisolated global shared mutable state; this is an error in the Swift 6 language mode
    |                       |- note: convert 'ourKey' to a 'let' constant to make 'Sendable' shared state immutable
    |                       |- note: add '@MainActor' to make static property 'ourKey' part of global actor 'MainActor'
    |                       `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     private struct _KeyExchangeResult {
[1020/1027] Compiling Citadel SSHKeyTypeDetection.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 |             handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 |         case .directTCPIP(let request):
170 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 |             }
173 |
174 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 |                 return delegate.initializeDirectTCPIPChannel(
176 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
   |                      `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 |                 return channel.pipeline.addHandlers([
324 |                     NIOSSHHandler(
    |                     `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 |                         role: .server(server),
326 |                         allocator: channel.allocator,
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 79 |
 80 | @available(*, unavailable)
 81 | extension NIOSSHHandler: Sendable {}
    | `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 82 |
 83 | extension NIOSSHHandler {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
331 |                         }
332 |                     ),
333 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 |                 ])
335 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
    :
339 |         return try await bootstrap.bind(host: host, port: port).map { channel in
340 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
341 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 |     }
343 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:524:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
522 |         )
523 |
524 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
525 |             do {
526 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
527 |                 for try await chunk in stream {
528 |                     switch chunk {
[1021/1027] Compiling Citadel Server.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 |             handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 |         case .directTCPIP(let request):
170 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 |             }
173 |
174 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 |                 return delegate.initializeDirectTCPIPChannel(
176 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
   |                      `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 |                 return channel.pipeline.addHandlers([
324 |                     NIOSSHHandler(
    |                     `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 |                         role: .server(server),
326 |                         allocator: channel.allocator,
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 79 |
 80 | @available(*, unavailable)
 81 | extension NIOSSHHandler: Sendable {}
    | `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 82 |
 83 | extension NIOSSHHandler {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
331 |                         }
332 |                     ),
333 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 |                 ])
335 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
    :
339 |         return try await bootstrap.bind(host: host, port: port).map { channel in
340 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
341 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 |     }
343 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:524:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
522 |         )
523 |
524 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
525 |             do {
526 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
527 |                 for try await chunk in stream {
528 |                     switch chunk {
[1022/1027] Compiling Citadel ShellDelegate.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 |             handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 |         case .directTCPIP(let request):
170 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 |             }
173 |
174 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 |                 return delegate.initializeDirectTCPIPChannel(
176 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
   |                      `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 |                 return channel.pipeline.addHandlers([
324 |                     NIOSSHHandler(
    |                     `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 |                         role: .server(server),
326 |                         allocator: channel.allocator,
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 79 |
 80 | @available(*, unavailable)
 81 | extension NIOSSHHandler: Sendable {}
    | `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 82 |
 83 | extension NIOSSHHandler {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
331 |                         }
332 |                     ),
333 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 |                 ])
335 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
    :
339 |         return try await bootstrap.bind(host: host, port: port).map { channel in
340 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
341 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 |     }
343 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:524:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
522 |         )
523 |
524 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
525 |             do {
526 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
527 |                 for try await chunk in stream {
528 |                     switch chunk {
[1023/1027] Compiling Citadel TTY.swift
/host/spi-builder-workspace/Sources/Citadel/Server.swift:40:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 38 |     func handlerAdded(context: ChannelHandlerContext) {
 39 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
 40 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 41 |         }
 42 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:59:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 57 |             guard let shell = shell, let parent = context.channel.parent else {
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 60 |                     return context.channel.close()
 61 |                 }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:60:28: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 58 |                 _ = context.channel.triggerUserOutboundEvent(ChannelFailureEvent()).flatMap {
 59 |                     self.configured.succeed(())
 60 |                     return context.channel.close()
    |                            `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 61 |                 }
 62 |                 return
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:67:30: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 65 |             parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 66 |                 ShellServerSubsystem.setupChannelHanders(
 67 |                     channel: context.channel,
    |                              `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 68 |                     shell: shell,
 69 |                     logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:73:31: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 71 |                 )
 72 |             }.flatMap { () -> EventLoopFuture<Void> in
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
    |                               `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:75:17: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 73 |                 let promise = context.eventLoop.makePromise(of: Void.self)
 74 |                 context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 75 |                 self.configured.succeed(())
    |                 `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:78:17: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 76 |                 return promise.futureResult
 77 |             }.whenFailure { _ in
 78 |                 context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                 `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 79 |             }
 80 |         case let event as SSHChannelRequestEvent.SubsystemRequest:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:91:34: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 89 |                 parent.pipeline.handler(type: NIOSSHHandler.self).flatMap { handler in
 90 |                     SFTPServerSubsystem.setupChannelHanders(
 91 |                         channel: context.channel,
    |                                  `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 92 |                         sftp: sftp,
 93 |                         logger: .init(label: "nl.orlandos.citadel.sftp-server"),
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:97:35: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 95 |                     )
 96 |                 }.flatMap { () -> EventLoopFuture<Void> in
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
    |                                   `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:99:21: warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
 18 | }
 19 |
 20 | final class SubsystemHandler: ChannelDuplexHandler {
    |             `- note: class 'SubsystemHandler' does not conform to the 'Sendable' protocol
 21 |     typealias InboundIn = SSHChannelData
 22 |     typealias InboundOut = SSHChannelData
    :
 97 |                     let promise = context.eventLoop.makePromise(of: Void.self)
 98 |                     context.channel.triggerUserOutboundEvent(ChannelSuccessEvent(), promise: promise)
 99 |                     self.configured.succeed(())
    |                     `- warning: capture of 'self' with non-sendable type 'SubsystemHandler' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
/host/spi-builder-workspace/Sources/Citadel/Server.swift:102:21: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
100 |                     return promise.futureResult
101 |                 }.whenFailure { _ in
102 |                     context.channel.triggerUserOutboundEvent(ChannelFailureEvent(), promise: nil)
    |                     `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
103 |                 }
104 |             default:
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/Server.swift:114:37: warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
112 |     func channelRead(context: ChannelHandlerContext, data: NIOAny) {
113 |         configured.futureResult.whenSuccess {
114 |             context.fireChannelRead(data)
    |                                     `- warning: capture of 'data' with non-sendable type 'NIOAny' in a '@Sendable' closure
115 |         }
116 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/NIOAny.swift:45:15: note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 43 | ///         }
 44 | ///     }
 45 | public struct NIOAny {
    |               `- note: struct 'NIOAny' does not conform to the 'Sendable' protocol
 46 |     @usableFromInline
 47 |     let _storage: _NIOAny
/host/spi-builder-workspace/Sources/Citadel/Server.swift:168:49: warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
166 |             handlers.append(ExecHandler(delegate: exec, username: username))
167 |
168 |             return channel.pipeline.addHandlers(handlers)
    |                                                 `- warning: type 'any ChannelHandler' does not conform to the 'Sendable' protocol
169 |         case .directTCPIP(let request):
170 |             guard let delegate = directTCPIP else {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:174:48: warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
172 |             }
173 |
174 |             return channel.pipeline.addHandler(DataToBufferCodec()).flatMap {
    |                                                `- warning: type 'DataToBufferCodec' does not conform to the 'Sendable' protocol
175 |                 return delegate.initializeDirectTCPIPChannel(
176 |                     channel,
/host/spi-builder-workspace/Sources/Citadel/DirectTCPIP/Client/DirectTCPIP+Client.swift:4:22: note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | internal final class DataToBufferCodec: ChannelDuplexHandler {
   |                      `- note: class 'DataToBufferCodec' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Server.swift:324:21: warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
322 |
323 |                 return channel.pipeline.addHandlers([
324 |                     NIOSSHHandler(
    |                     `- warning: conformance of 'NIOSSHHandler' to 'Sendable' is unavailable; this is an error in the Swift 6 language mode
325 |                         role: .server(server),
326 |                         allocator: channel.allocator,
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/NIOSSHHandler.swift:81:1: note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 79 |
 80 | @available(*, unavailable)
 81 | extension NIOSSHHandler: Sendable {}
    | `- note: conformance of 'NIOSSHHandler' to 'Sendable' has been explicitly marked unavailable here
 82 |
 83 | extension NIOSSHHandler {
/host/spi-builder-workspace/Sources/Citadel/Server.swift:333:21: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
    :
331 |                         }
332 |                     ),
333 |                     CloseErrorHandler(logger: logger)
    |                     `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
334 |                 ])
335 |             }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:341:11: warning: type 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
    :
339 |         return try await bootstrap.bind(host: host, port: port).map { channel in
340 |             SSHServer(channel: channel, logger: logger, delegate: delegate)
341 |         }.get()
    |           `- warning: type 'SSHServer' does not conform to the 'Sendable' protocol
342 |     }
343 | }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:102:47: warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
100 |         }
101 |
102 |         done.futureResult.whenFailure(context.fireErrorCaught)
    |                                               `- warning: converting non-sendable function value to '@Sendable (any Error) -> Void' may introduce data races
103 |     }
104 |
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in a '@Sendable' closure
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:76:31: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
 76 |                     try await self.delegate.startShell(
    |                               `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:79:34: warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- warning: capture of 'shellContext' with non-sendable type 'SSHShellContext' in an isolated closure; this is an error in the Swift 6 language mode
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/SFTP/Server/SFTPServer.swift:35:15: note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 33 | }
 34 |
 35 | public struct SSHShellContext {
    |               `- note: consider making struct 'SSHShellContext' conform to the 'Sendable' protocol
 36 |     public struct WindowSize {
 37 |         public let columns: Int
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:84:46: warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
 82 |
 83 |                 group.addTask {
 84 |                     for try await message in self.outbound.stream {
    |                                              `- warning: capture of 'self' with non-sendable type 'ShellServerInboundHandler' in an isolated closure; this is an error in the Swift 6 language mode
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:134:13: warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
132 |
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
    |             `- warning: type 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:4:13: note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 2 | import NIOSSH
 3 |
 4 | final class SSHChannelDataUnwrapper: ChannelInboundHandler {
   |             `- note: class 'SSHChannelDataUnwrapper' does not conform to the 'Sendable' protocol
 5 |     typealias InboundIn = SSHChannelData
 6 |     typealias InboundOut = ByteBuffer
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:135:13: warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
133 |         return channel.pipeline.addHandlers(
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
    |             `- warning: type 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
/host/spi-builder-workspace/Sources/Citadel/ChannelUnwrapper.swift:30:13: note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
28 | }
29 |
30 | final class SSHOutboundChannelDataWrapper: ChannelOutboundHandler {
   |             `- note: class 'SSHOutboundChannelDataWrapper' does not conform to the 'Sendable' protocol
31 |     typealias OutboundIn = ByteBuffer
32 |     typealias OutboundOut = SSHChannelData
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:136:13: warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 43 | }
 44 |
 45 | final class ShellServerInboundHandler: ChannelInboundHandler {
    |             `- note: class 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
 46 |     typealias InboundIn = ByteBuffer
 47 |
    :
134 |             SSHChannelDataUnwrapper(),
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
    |             `- warning: type 'ShellServerInboundHandler' does not conform to the 'Sendable' protocol
137 |             CloseErrorHandler(logger: logger)
138 |         )
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:137:13: warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
135 |             SSHOutboundChannelDataWrapper(),
136 |             shellInboundHandler,
137 |             CloseErrorHandler(logger: logger)
    |             `- warning: type 'CloseErrorHandler' does not conform to the 'Sendable' protocol
138 |         )
139 |     }
/host/spi-builder-workspace/Sources/Citadel/Server.swift:6:13: note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  4 | import NIOConcurrencyHelpers
  5 |
  6 | final class CloseErrorHandler: ChannelInboundHandler {
    |             `- note: class 'CloseErrorHandler' does not conform to the 'Sendable' protocol
  7 |     typealias InboundIn = Any
  8 |     let logger: Logger
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:124:13: warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
122 |         context.channel.setOption(ChannelOptions.allowRemoteHalfClosure, value: true).whenFailure { error in
123 |             self.logger.debug("Failed to set allowRemoteHalfClosure: \(error)")
124 |             context.fireErrorCaught(error)
    |             `- warning: capture of 'context' with non-sendable type 'ChannelHandlerContext' in a '@Sendable' closure
125 |         }
126 |     }
/host/spi-builder-workspace/.build/checkouts/swift-nio/Sources/NIOCore/ChannelPipeline.swift:1859:20: note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1857 | /// at the right point in time. Often, the right behaviour is to react to an event and then forward it to the next
1858 | /// `ChannelHandler`.
1859 | public final class ChannelHandlerContext: ChannelInvoker {
     |                    `- note: class 'ChannelHandlerContext' does not conform to the 'Sendable' protocol
1860 |     // visible for ChannelPipeline to modify
1861 |     fileprivate var next: Optional<ChannelHandlerContext>
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:285:17: warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
283 |                 streamContinuation.yield(.stderr(stderr))
284 |             case .eof(let error):
285 |                 self.logger.debug("EOF triggered, ending the command stream.")
    |                 `- warning: capture of 'self' with non-sendable type 'SSHClient' in a '@Sendable' closure; this is an error in the Swift 6 language mode
286 |                 if let error {
287 |                     streamContinuation.finish(throwing: error)
/host/spi-builder-workspace/Sources/Citadel/Client.swift:112:20: note: class 'SSHClient' does not conform to the 'Sendable' protocol
110 |
111 | /// Represents an SSH connection.
112 | public final class SSHClient {
    |                    `- note: class 'SSHClient' does not conform to the 'Sendable' protocol
113 |     private(set) var session: SSHClientSession
114 |     private var userInitiatedClose = false
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:75:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 73 |         done.completeWithTask {
 74 |             try await withThrowingTaskGroup(of: Void.self) { group in
 75 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 76 |                     try await self.delegate.startShell(
    |                               `- note: closure captures non-Sendable 'self'
 77 |                         inbound: self.inbound.stream,
 78 |                         outbound: ShellOutboundWriter(continuation: self.outbound.continuation),
 79 |                         context: shellContext
    |                                  `- note: closure captures non-Sendable 'shellContext'
 80 |                     )
 81 |                 }
/host/spi-builder-workspace/Sources/Citadel/Shell/Server/ShellDelegate.swift:83:31: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 81 |                 }
 82 |
 83 |                 group.addTask {
    |                               `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
 84 |                     for try await message in self.outbound.stream {
    |                                              `- note: closure captures 'self' which is accessible to code in the current task
 85 |                         switch message.event {
 86 |                         case .stdout(let data):
/host/spi-builder-workspace/Sources/Citadel/TTY/Client/TTY.swift:524:14: warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
522 |         )
523 |
524 |         Task {
    |              `- warning: passing closure as a 'sending' parameter risks causing data races between code in the current task and concurrent execution of the closure; this is an error in the Swift 6 language mode
525 |             do {
526 |                 let stream = try await executeCommandStream(command, inShell: inShell)
    |                                        `- note: closure captures 'self' which is accessible to code in the current task
527 |                 for try await chunk in stream {
528 |                     switch chunk {
[1024/1028] Wrapping AST for Citadel for debugging
[1026/1035] Compiling CitadelServerExample Extensions.swift
[1027/1035] Compiling CitadelServerExample Terminal.swift
[1028/1035] Compiling CitadelServerExample HostKeyFile.swift
[1029/1035] Compiling CitadelServerExample Server.swift
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:24:42: warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
22 |         }
23 |
24 |         let server = try await SSHServer.host(
   |                                          `- warning: non-sendable result type 'SSHServer' cannot be sent from nonisolated context in call to static method 'host(host:port:hostKeys:algorithms:protocolOptions:logger:authenticationDelegate:group:)'; this is an error in the Swift 6 language mode
25 |             host: "localhost",
26 |             port: 2323,
/host/spi-builder-workspace/Sources/Citadel/Server.swift:241:20: note: class 'SSHServer' does not conform to the 'Sendable' protocol
239 | /// The server can be closed using the `close()` method.
240 | /// - Note: This class is not thread safe.
241 | public final class SSHServer {
    |                    `- note: class 'SSHServer' does not conform to the 'Sendable' protocol
242 |     let channel: Channel
243 |     let delegate: CitadelServerDelegate
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:1:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
 1 | import Citadel
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'Citadel'
 2 | import Crypto
 3 | import Foundation
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:76:36: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
74 |     ) {
75 |         if case .password(.init(password: password)) = request.request, request.username == username {
76 |             return responsePromise.succeed(.success)
   |                                    `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
77 |         }
78 |
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:229:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
227 |
228 | /// The outcome of a user authentication attempt.
229 | public enum NIOSSHUserAuthenticationOutcome {
    |             `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
230 |     case success
231 |     case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:5:1: warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 3 | import Foundation
 4 | import NIO
 5 | import NIOSSH
   | `- warning: add '@preconcurrency' to suppress 'Sendable'-related warnings from module 'NIOSSH'
 6 |
 7 | @main struct ExampleSSHServer {
/host/spi-builder-workspace/Sources/CitadelServerExample/Server.swift:79:32: warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
77 |         }
78 |
79 |         return responsePromise.succeed(.failure)
   |                                `- warning: type 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
80 |     }
81 | }
/host/spi-builder-workspace/.build/checkouts/swift-nio-ssh/Sources/NIOSSH/User Authentication/UserAuthenticationMethod.swift:229:13: note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
227 |
228 | /// The outcome of a user authentication attempt.
229 | public enum NIOSSHUserAuthenticationOutcome {
    |             `- note: enum 'NIOSSHUserAuthenticationOutcome' does not conform to the 'Sendable' protocol
230 |     case success
231 |     case partialSuccess(remainingMethods: NIOSSHAvailableUserAuthenticationMethods)
[1030/1035] Compiling CitadelServerExample BasicCommands.swift
[1031/1035] Emitting module CitadelServerExample
[1032/1035] Compiling CitadelServerExample EchoShell.swift
[1033/1036] Wrapping AST for CitadelServerExample for debugging
[1034/1036] Write Objects.LinkFileList
[1035/1036] Linking CitadelServerExample
Build complete! (185.27s)
Build complete.
{
  "dependencies" : [
    {
      "identity" : "swift-nio-ssh",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "0.3.4",
            "upper_bound" : "0.4.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/Wellz26/swift-nio-ssh.git"
    },
    {
      "identity" : "swift-nio",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "2.81.0",
            "upper_bound" : "3.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-nio.git"
    },
    {
      "identity" : "swift-log",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-log.git"
    },
    {
      "identity" : "bigint",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "5.2.0",
            "upper_bound" : "6.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/attaswift/BigInt.git"
    },
    {
      "identity" : "swift-crypto",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "3.12.3",
            "upper_bound" : "4.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-crypto.git"
    },
    {
      "identity" : "colorizeswift",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.5.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/mtynior/ColorizeSwift.git"
    }
  ],
  "manifest_display_name" : "Citadel",
  "name" : "Citadel",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "macos",
      "version" : "14.0"
    },
    {
      "name" : "ios",
      "version" : "17.0"
    }
  ],
  "products" : [
    {
      "name" : "Citadel",
      "targets" : [
        "Citadel"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    },
    {
      "name" : "CitadelServerExample",
      "targets" : [
        "CitadelServerExample"
      ],
      "type" : {
        "executable" : null
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "CitadelTests",
      "module_type" : "SwiftTarget",
      "name" : "CitadelTests",
      "path" : "Tests/CitadelTests",
      "product_dependencies" : [
        "NIOSSH",
        "BigInt",
        "Logging"
      ],
      "sources" : [
        "Citadel2Tests.swift",
        "EndToEndTests.swift",
        "KeyTests.swift",
        "RemotePortForwardTests.swift",
        "WithExecTests.swift"
      ],
      "target_dependencies" : [
        "Citadel"
      ],
      "type" : "test"
    },
    {
      "c99name" : "CitadelServerExample",
      "module_type" : "SwiftTarget",
      "name" : "CitadelServerExample",
      "path" : "Sources/CitadelServerExample",
      "product_dependencies" : [
        "ColorizeSwift"
      ],
      "product_memberships" : [
        "CitadelServerExample"
      ],
      "sources" : [
        "EchoShell/BasicCommands.swift",
        "EchoShell/EchoShell.swift",
        "EchoShell/Extensions.swift",
        "EchoShell/Terminal.swift",
        "HostKeyFile.swift",
        "Server.swift"
      ],
      "target_dependencies" : [
        "Citadel"
      ],
      "type" : "executable"
    },
    {
      "c99name" : "Citadel",
      "module_type" : "SwiftTarget",
      "name" : "Citadel",
      "path" : "Sources/Citadel",
      "product_dependencies" : [
        "NIOSSH",
        "NIO",
        "Crypto",
        "_CryptoExtras",
        "BigInt",
        "Logging"
      ],
      "product_memberships" : [
        "Citadel",
        "CitadelServerExample"
      ],
      "sources" : [
        "Algorithms/AES.swift",
        "Algorithms/DH-Helpers.swift",
        "Algorithms/DiffieHellmanGroup14Sha1.swift",
        "Algorithms/DiffieHellmanGroup14Sha256.swift",
        "Algorithms/RSA.swift",
        "BCrypt.swift",
        "ByteBufferHelpers.swift",
        "ChannelUnwrapper.swift",
        "Client.swift",
        "ClientSession.swift",
        "DirectTCPIP/Client/DirectTCPIP+Client.swift",
        "DirectTCPIP/Server/DirectTCPIP+Server.swift",
        "Errors.swift",
        "Exec/Client/ExecClient.swift",
        "Exec/Server/ExecDelegate.swift",
        "Exec/Server/ExecHandler.swift",
        "NIOGlueHandler.swift",
        "OpenSSHKey.swift",
        "RemotePortForward/Client/RemotePortForward+Client.swift",
        "RemotePortForward/Server/RemotePortForward+Server.swift",
        "SFTP/Client/SFTPClient.swift",
        "SFTP/Client/SFTPClientInboundHandler.swift",
        "SFTP/Client/SFTPFile.swift",
        "SFTP/SFTPBasicEnums.swift",
        "SFTP/SFTPFileFlags.swift",
        "SFTP/SFTPMessage.swift",
        "SFTP/SFTPMessageParser.swift",
        "SFTP/SFTPSerializer.swift",
        "SFTP/Server/SFTPServer.swift",
        "SFTP/Server/SFTPServerInboundHandler.swift",
        "SSHAuthenticationMethod.swift",
        "SSHCert.swift",
        "SSHConnectionPoolSettings.swift",
        "SSHKeyTypeDetection.swift",
        "Server.swift",
        "Shell/Server/ShellDelegate.swift",
        "TTY/Client/TTY.swift"
      ],
      "target_dependencies" : [
        "CCitadelBcrypt"
      ],
      "type" : "library"
    },
    {
      "c99name" : "CCitadelBcrypt",
      "module_type" : "ClangTarget",
      "name" : "CCitadelBcrypt",
      "path" : "Sources/CCitadelBcrypt",
      "product_memberships" : [
        "Citadel",
        "CitadelServerExample"
      ],
      "sources" : [
        "bcrypt-kdf.c",
        "bcrypt.c",
        "blf.c"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.9"
}
basic-6.1-latest: Pulling from swiftpackageindex/spi-images
Digest: sha256:108e10880bce35e9496fba26782956e40a8e91a2a227f9b90af7e4cd93d2c183
Status: Image is up to date for registry.gitlab.com/swiftpackageindex/spi-images:basic-6.1-latest
Done.