The Swift Package Index logo.Swift Package Index

Track the adoption of Swift 6 strict concurrency checks for data race safety. How many packages are Ready for Swift 6?

Build Information

Successful build of Tonic, reference main (8f103c), with Swift 6.1 for Linux on 30 Apr 2025 04:13:12 UTC.

Swift 6 data race errors: 312

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4609320-0":/host -w "$PWD" registry.gitlab.com/finestructure/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

 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:286:16: warning: static property 'dorianFlat5' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
284 |
285 |     /// Dorian ♭5 scale
286 |     static let dorianFlat5 = Scale(intervals: [.P1, .M2, .m3, .P4, .d5, .M6, .m7], description: "Dorian ♭5")
    |                |- warning: static property 'dorianFlat5' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'dorianFlat5' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
287 |
288 |     /// Phrygian ♭4 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:289:16: warning: static property 'phrygianFlat4' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
287 |
288 |     /// Phrygian ♭4 scale
289 |     static let phrygianFlat4 = Scale(intervals: [.P1, .m2, .m3, .M3, .P5, .m6, .m7], description: "Phrygian ♭4")
    |                |- warning: static property 'phrygianFlat4' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'phrygianFlat4' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
290 |
291 |     /// Lydian ♭3 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:292:16: warning: static property 'lydianFlat3' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
290 |
291 |     /// Lydian ♭3 scale
292 |     static let lydianFlat3 = Scale(intervals: [.P1, .M2, .m3, .d5, .P5, .M6, .M7], description: "Lydian ♭3")
    |                |- warning: static property 'lydianFlat3' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'lydianFlat3' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
293 |
294 |     /// Lydian ♭6 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:295:16: warning: static property 'lydianFlat6' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
293 |
294 |     /// Lydian ♭6 scale
295 |     static let lydianFlat6 = Scale(intervals: [.P1, .M2, .M3, .d5, .P5, .m6, .m7], description: "Lydian ♭6")
    |                |- warning: static property 'lydianFlat6' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'lydianFlat6' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
296 |
297 |     /// Lydian ♯6 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:298:16: warning: static property 'lydianSharp6' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
296 |
297 |     /// Lydian ♯6 scale
298 |     static let lydianSharp6 = Scale(intervals: [.P1, .M2, .M3, .d5, .P5, .m7, .M7], description: "Lydian ♯6")
    |                |- warning: static property 'lydianSharp6' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'lydianSharp6' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
299 |
300 |     /// Lydian ♯2 ♯6 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:301:16: warning: static property 'lydianSharp2Sharp6' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
299 |
300 |     /// Lydian ♯2 ♯6 scale
301 |     static let lydianSharp2Sharp6 = Scale(intervals: [.P1, .m3, .M3, .d5, .P5, .m7, .M7], description: "Lydian ♯2 ♯6")
    |                |- warning: static property 'lydianSharp2Sharp6' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'lydianSharp2Sharp6' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
302 |
303 |     /// Mixolydian ♭2 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:304:16: warning: static property 'mixolydianFlat2' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
302 |
303 |     /// Mixolydian ♭2 scale
304 |     static let mixolydianFlat2 = Scale(intervals: [.P1, .m2, .M3, .P4, .P5, .M6, .m7], description: "Mixolydian ♭2")
    |                |- warning: static property 'mixolydianFlat2' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'mixolydianFlat2' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
305 |
306 |     /// Mixolydian augmented scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:307:16: warning: static property 'mixolydianAugmented' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
305 |
306 |     /// Mixolydian augmented scale
307 |     static let mixolydianAugmented = Scale(intervals: [.P1, .M2, .M3, .P4, .m6, .M6, .m7], description: "Mixolydian Augmented")
    |                |- warning: static property 'mixolydianAugmented' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'mixolydianAugmented' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
308 |
309 |     /// Locrian diminished scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:310:16: warning: static property 'locrianDiminished' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
308 |
309 |     /// Locrian diminished scale
310 |     static let locrianDiminished = Scale(intervals: [.P1, .m2, .m3, .P4, .d5, .m6, .M6], description: "Locrian Diminished")
    |                |- warning: static property 'locrianDiminished' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'locrianDiminished' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
311 |
312 |     /// Locrian diminished ♭♭3 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:313:16: warning: static property 'locrianDiminishedFlatFlat3' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
311 |
312 |     /// Locrian diminished ♭♭3 scale
313 |     static let locrianDiminishedFlatFlat3 = Scale(intervals: [.P1, .m2, .P4, .d5, .m6, .M6], description: "Locrian Diminished ♭♭3")
    |                |- warning: static property 'locrianDiminishedFlatFlat3' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'locrianDiminishedFlatFlat3' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
314 |
315 |     /// Ionian ♯2 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:316:16: warning: static property 'ionianSharp2' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
314 |
315 |     /// Ionian ♯2 scale
316 |     static let ionianSharp2 = Scale(intervals: [.P1, .m3, .M3, .P4, .P5, .M6, .M7], description: "Ionian ♯2")
    |                |- warning: static property 'ionianSharp2' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ionianSharp2' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
317 |
318 |     /// Super locrian Diminished ♭♭3 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:319:16: warning: static property 'superLocrianDiminshedFlatFlat3' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
317 |
318 |     /// Super locrian Diminished ♭♭3 scale
319 |     static let superLocrianDiminshedFlatFlat3 = Scale(intervals: [.P1, .m2, .M2, .M3, .d5, .m6, .M6], description: "Super Locrian Diminished ♭♭3")
    |                |- warning: static property 'superLocrianDiminshedFlatFlat3' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'superLocrianDiminshedFlatFlat3' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
320 |
321 |     /// Ultraphrygian scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:322:16: warning: static property 'ultraphrygian' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
320 |
321 |     /// Ultraphrygian scale
322 |     static let ultraphrygian = Scale(intervals: [.P1, .m2, .m3, .M3, .P5, .m6, .M6], description: "Ultraphrygian")
    |                |- warning: static property 'ultraphrygian' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ultraphrygian' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
323 |
324 |     /// Ionian Augmented ♯2 scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:325:16: warning: static property 'ionianAugmentedSharp2' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
323 |
324 |     /// Ionian Augmented ♯2 scale
325 |     static let ionianAugmentedSharp2 = Scale(intervals: [.P1, .m3, .M3, .P4, .m6, .M6, .M7], description: "Ionian Augmented ♯2")
    |                |- warning: static property 'ionianAugmentedSharp2' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ionianAugmentedSharp2' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
326 |
327 |     /// Major blues hexatonic scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:328:16: warning: static property 'majorBluesHexatonic' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
326 |
327 |     /// Major blues hexatonic scale
328 |     static let majorBluesHexatonic = Scale(intervals: [.P1, .M2, .m3, .M3, .P5, .M6], description: "Major Blues Hexatonic")
    |                |- warning: static property 'majorBluesHexatonic' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'majorBluesHexatonic' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
329 |
330 |     /// Minor blues hexatonic scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:331:16: warning: static property 'minorBluesHexatonic' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
329 |
330 |     /// Minor blues hexatonic scale
331 |     static let minorBluesHexatonic = Scale(intervals: [.P1, .m3, .P4, .d5, .P5, .m7], description: "Minor Blues Hexatonic")
    |                |- warning: static property 'minorBluesHexatonic' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'minorBluesHexatonic' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
332 |
333 |     /// Man gong scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:334:16: warning: static property 'manGong' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
332 |
333 |     /// Man gong scale
334 |     static let manGong = Scale(intervals: [.P1, .m3, .P4, .m6, .m7], description: "Man Gong")
    |                |- warning: static property 'manGong' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'manGong' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
335 |
336 |     /// Ritsusen scale
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
/host/spi-builder-workspace/Sources/Tonic/Scale+Shortcuts.swift:337:16: warning: static property 'ritsusen' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
335 |
336 |     /// Ritsusen scale
337 |     static let ritsusen = Scale(intervals: [.P1, .M2, .P4, .P5, .M6], description: "Ritsusen")
    |                |- warning: static property 'ritsusen' is not concurrency-safe because non-'Sendable' type 'Scale' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ritsusen' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
338 |
339 | }
/host/spi-builder-workspace/Sources/Tonic/Scale.swift:6:15: note: consider making struct 'Scale' conform to the 'Sendable' protocol
 4 |
 5 | /// A set of intervals from the root (tonic).
 6 | public struct Scale: OptionSet, Hashable {
   |               `- note: consider making struct 'Scale' conform to the 'Sendable' protocol
 7 |     public let rawValue: Int
 8 |
[24/26] Compiling Tonic Interval.swift
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:7:16: warning: static property 'circleOfFifths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | public extension Key {
  6 |
  7 |     static let circleOfFifths: [Key] = [.C, .G, .D, .A, .E, .B, .Fs, .Cs]
    |                |- warning: static property 'circleOfFifths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'circleOfFifths' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  8 |     static let circleOfFourths: [Key] = [.F, .Bb, .Eb, .Ab, .Db, .Gb, .Cb]
  9 |
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:8:16: warning: static property 'circleOfFourths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
  6 |
  7 |     static let circleOfFifths: [Key] = [.C, .G, .D, .A, .E, .B, .Fs, .Cs]
  8 |     static let circleOfFourths: [Key] = [.F, .Bb, .Eb, .Ab, .Db, .Gb, .Cb]
    |                |- warning: static property 'circleOfFourths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'circleOfFourths' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  9 |
 10 |     // MARK: - Major keys
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:13:16: warning: static property 'Cb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 11 |
 12 |     /// C♭ Major
 13 |     static let Cb = Key(root: NoteClass(.C, accidental: .flat), scale: .major)
    |                |- warning: static property 'Cb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     /// G♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:16:16: warning: static property 'Gb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 14 |
 15 |     /// G♭ Major
 16 |     static let Gb = Key(root: NoteClass(.G, accidental: .flat), scale: .major)
    |                |- warning: static property 'Gb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 17 |
 18 |     /// D♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:19:16: warning: static property 'Db' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 17 |
 18 |     /// D♭ Major
 19 |     static let Db = Key(root: NoteClass(.D, accidental: .flat), scale: .major)
    |                |- warning: static property 'Db' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Db' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     /// A♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:22:16: warning: static property 'Ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 20 |
 21 |     /// A♭ Major
 22 |     static let Ab = Key(root: NoteClass(.A, accidental: .flat), scale: .major)
    |                |- warning: static property 'Ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Ab' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |
 24 |     /// E♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:25:16: warning: static property 'Eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 23 |
 24 |     /// E♭ Major
 25 |     static let Eb = Key(root: NoteClass(.E, accidental: .flat), scale: .major)
    |                |- warning: static property 'Eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Eb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 26 |
 27 |     /// B♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:28:16: warning: static property 'Bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 26 |
 27 |     /// B♭ Major
 28 |     static let Bb = Key(root: NoteClass(.B, accidental: .flat), scale: .major)
    |                |- warning: static property 'Bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 29 |
 30 |     /// F Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:31:16: warning: static property 'F' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 29 |
 30 |     /// F Major
 31 |     static let F = Key(root: NoteClass(.F), scale: .major)
    |                |- warning: static property 'F' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'F' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 32 |
 33 |     /// C Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:34:16: warning: static property 'C' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |
 33 |     /// C Major
 34 |     static let C = Key(root: NoteClass(.C), scale: .major)
    |                |- warning: static property 'C' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'C' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |
 36 |     /// G Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:37:16: warning: static property 'G' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 35 |
 36 |     /// G Major
 37 |     static let G = Key(root: NoteClass(.G), scale: .major)
    |                |- warning: static property 'G' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'G' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |
 39 |     /// D Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:40:16: warning: static property 'D' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 38 |
 39 |     /// D Major
 40 |     static let D = Key(root: NoteClass(.D), scale: .major)
    |                |- warning: static property 'D' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'D' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 41 |
 42 |     /// A Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:43:16: warning: static property 'A' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 41 |
 42 |     /// A Major
 43 |     static let A = Key(root: NoteClass(.A), scale: .major)
    |                |- warning: static property 'A' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'A' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 44 |
 45 |     /// E Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:46:16: warning: static property 'E' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 44 |
 45 |     /// E Major
 46 |     static let E = Key(root: NoteClass(.E), scale: .major)
    |                |- warning: static property 'E' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'E' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 47 |
 48 |     /// B Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:49:16: warning: static property 'B' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 47 |
 48 |     /// B Major
 49 |     static let B = Key(root: NoteClass(.B), scale: .major)
    |                |- warning: static property 'B' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'B' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |
 51 |     /// F♯ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:52:16: warning: static property 'Fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 50 |
 51 |     /// F♯ Major
 52 |     static let Fs = Key(root: NoteClass(.F, accidental: .sharp), scale: .major)
    |                |- warning: static property 'Fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 53 |
 54 |     /// C♯ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:55:16: warning: static property 'Cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 53 |
 54 |     /// C♯ Major
 55 |     static let Cs = Key(root: NoteClass(.C, accidental: .sharp), scale: .major)
    |                |- warning: static property 'Cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 56 |
 57 |     // MARK: - Minor keys
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:60:16: warning: static property 'ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 58 |
 59 |     /// A♭ Minor
 60 |     static let ab = Key(root: NoteClass(.A, accidental: .flat), scale: .minor)
    |                |- warning: static property 'ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ab' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 61 |
 62 |     /// E♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:63:16: warning: static property 'eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 61 |
 62 |     /// E♭ Minor
 63 |     static let eb = Key(root: NoteClass(.E, accidental: .flat), scale: .minor)
    |                |- warning: static property 'eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'eb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |
 65 |     /// B♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:66:16: warning: static property 'bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 64 |
 65 |     /// B♭ Minor
 66 |     static let bb = Key(root: NoteClass(.B, accidental: .flat), scale: .minor)
    |                |- warning: static property 'bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'bb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 67 |
 68 |     /// F Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:69:16: warning: static property 'f' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 67 |
 68 |     /// F Minor
 69 |     static let f = Key(root: NoteClass(.F), scale: .minor)
    |                |- warning: static property 'f' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'f' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 70 |
 71 |     /// C Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:72:16: warning: static property 'c' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 70 |
 71 |     /// C Minor
 72 |     static let c = Key(root: NoteClass(.C), scale: .minor)
    |                |- warning: static property 'c' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'c' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 73 |
 74 |     /// G Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:75:16: warning: static property 'g' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 73 |
 74 |     /// G Minor
 75 |     static let g = Key(root: NoteClass(.G), scale: .minor)
    |                |- warning: static property 'g' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'g' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 76 |
 77 |     /// D Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:78:16: warning: static property 'd' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 76 |
 77 |     /// D Minor
 78 |     static let d = Key(root: NoteClass(.D), scale: .minor)
    |                |- warning: static property 'd' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'd' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 79 |
 80 |     /// A Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:81:16: warning: static property 'a' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 79 |
 80 |     /// A Minor
 81 |     static let a = Key(root: NoteClass(.A), scale: .minor)
    |                |- warning: static property 'a' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'a' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 82 |
 83 |     /// E Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:84:16: warning: static property 'e' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 82 |
 83 |     /// E Minor
 84 |     static let e = Key(root: NoteClass(.E), scale: .minor)
    |                |- warning: static property 'e' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'e' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 85 |
 86 |     /// B Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:87:16: warning: static property 'b' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 85 |
 86 |     /// B Minor
 87 |     static let b = Key(root: NoteClass(.B), scale: .minor)
    |                |- warning: static property 'b' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'b' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 88 |
 89 |     /// F♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:90:16: warning: static property 'fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 88 |
 89 |     /// F♯ Minor
 90 |     static let fs = Key(root: NoteClass(.F, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'fs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 91 |
 92 |     /// C♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:93:16: warning: static property 'cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 91 |
 92 |     /// C♯ Minor
 93 |     static let cs = Key(root: NoteClass(.C, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'cs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 94 |
 95 |     /// G♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:96:16: warning: static property 'gs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 94 |
 95 |     /// G♯ Minor
 96 |     static let gs = Key(root: NoteClass(.G, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'gs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'gs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 97 |
 98 |     /// D♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:99:16: warning: static property 'ds' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 97 |
 98 |     /// D♯ Minor
 99 |     static let ds = Key(root: NoteClass(.D, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'ds' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ds' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 |
101 |     /// A♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:102:16: warning: static property 'as' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
100 |
101 |     /// A♯ Minor
102 |     static let `as` = Key(root: NoteClass(.A, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'as' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'as' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 |
104 |     /// A♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:105:16: warning: static property 'Abm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
103 |
104 |     /// A♭ Minor
105 |     static let Abm = Key(root: NoteClass(.A, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Abm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Abm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
106 |
107 |     /// E♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:108:16: warning: static property 'Ebm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
106 |
107 |     /// E♭ Minor
108 |     static let Ebm = Key(root: NoteClass(.E, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Ebm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Ebm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
109 |
110 |     /// B♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:111:16: warning: static property 'Bbm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
109 |
110 |     /// B♭ Minor
111 |     static let Bbm = Key(root: NoteClass(.B, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Bbm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bbm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
112 |
113 |     /// F Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:114:16: warning: static property 'Fm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
112 |
113 |     /// F Minor
114 |     static let Fm = Key(root: NoteClass(.F), scale: .minor)
    |                |- warning: static property 'Fm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
115 |
116 |     /// C Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:117:16: warning: static property 'Cm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
115 |
116 |     /// C Minor
117 |     static let Cm = Key(root: NoteClass(.C), scale: .minor)
    |                |- warning: static property 'Cm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
118 |
119 |     /// G Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:120:16: warning: static property 'Gm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
118 |
119 |     /// G Minor
120 |     static let Gm = Key(root: NoteClass(.G), scale: .minor)
    |                |- warning: static property 'Gm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 |
122 |     /// D Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:123:16: warning: static property 'Dm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
121 |
122 |     /// D Minor
123 |     static let Dm = Key(root: NoteClass(.D), scale: .minor)
    |                |- warning: static property 'Dm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Dm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
124 |
125 |     /// A Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:126:16: warning: static property 'Am' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
124 |
125 |     /// A Minor
126 |     static let Am = Key(root: NoteClass(.A), scale: .minor)
    |                |- warning: static property 'Am' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Am' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 |     /// E Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:129:16: warning: static property 'Em' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
127 |
128 |     /// E Minor
129 |     static let Em = Key(root: NoteClass(.E), scale: .minor)
    |                |- warning: static property 'Em' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Em' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
130 |
131 |     /// B Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:132:16: warning: static property 'Bm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
130 |
131 |     /// B Minor
132 |     static let Bm = Key(root: NoteClass(.B), scale: .minor)
    |                |- warning: static property 'Bm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
133 |
134 |     /// F♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:135:16: warning: static property 'Fsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
133 |
134 |     /// F♯ Minor
135 |     static let Fsm = Key(root: NoteClass(.F, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Fsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
136 |
137 |     /// C♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:138:16: warning: static property 'Csm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
136 |
137 |     /// C♯ Minor
138 |     static let Csm = Key(root: NoteClass(.C, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Csm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Csm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
139 |
140 |     /// G♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:141:16: warning: static property 'Gsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
139 |
140 |     /// G♯ Minor
141 |     static let Gsm = Key(root: NoteClass(.G, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Gsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
142 |
143 |     /// D♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:144:16: warning: static property 'Dsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
142 |
143 |     /// D♯ Minor
144 |     static let Dsm = Key(root: NoteClass(.D, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Dsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Dsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
145 |
146 |     /// A♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:147:16: warning: static property 'Asm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
145 |
146 |     /// A♯ Minor
147 |     static let Asm = Key(root: NoteClass(.A, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Asm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Asm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
148 | }
149 |
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
[25/26] Compiling Tonic Key+Shortcuts.swift
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:7:16: warning: static property 'circleOfFifths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | public extension Key {
  6 |
  7 |     static let circleOfFifths: [Key] = [.C, .G, .D, .A, .E, .B, .Fs, .Cs]
    |                |- warning: static property 'circleOfFifths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'circleOfFifths' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  8 |     static let circleOfFourths: [Key] = [.F, .Bb, .Eb, .Ab, .Db, .Gb, .Cb]
  9 |
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:8:16: warning: static property 'circleOfFourths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
  6 |
  7 |     static let circleOfFifths: [Key] = [.C, .G, .D, .A, .E, .B, .Fs, .Cs]
  8 |     static let circleOfFourths: [Key] = [.F, .Bb, .Eb, .Ab, .Db, .Gb, .Cb]
    |                |- warning: static property 'circleOfFourths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'circleOfFourths' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  9 |
 10 |     // MARK: - Major keys
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:13:16: warning: static property 'Cb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 11 |
 12 |     /// C♭ Major
 13 |     static let Cb = Key(root: NoteClass(.C, accidental: .flat), scale: .major)
    |                |- warning: static property 'Cb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     /// G♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:16:16: warning: static property 'Gb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 14 |
 15 |     /// G♭ Major
 16 |     static let Gb = Key(root: NoteClass(.G, accidental: .flat), scale: .major)
    |                |- warning: static property 'Gb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 17 |
 18 |     /// D♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:19:16: warning: static property 'Db' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 17 |
 18 |     /// D♭ Major
 19 |     static let Db = Key(root: NoteClass(.D, accidental: .flat), scale: .major)
    |                |- warning: static property 'Db' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Db' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     /// A♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:22:16: warning: static property 'Ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 20 |
 21 |     /// A♭ Major
 22 |     static let Ab = Key(root: NoteClass(.A, accidental: .flat), scale: .major)
    |                |- warning: static property 'Ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Ab' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |
 24 |     /// E♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:25:16: warning: static property 'Eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 23 |
 24 |     /// E♭ Major
 25 |     static let Eb = Key(root: NoteClass(.E, accidental: .flat), scale: .major)
    |                |- warning: static property 'Eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Eb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 26 |
 27 |     /// B♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:28:16: warning: static property 'Bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 26 |
 27 |     /// B♭ Major
 28 |     static let Bb = Key(root: NoteClass(.B, accidental: .flat), scale: .major)
    |                |- warning: static property 'Bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 29 |
 30 |     /// F Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:31:16: warning: static property 'F' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 29 |
 30 |     /// F Major
 31 |     static let F = Key(root: NoteClass(.F), scale: .major)
    |                |- warning: static property 'F' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'F' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 32 |
 33 |     /// C Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:34:16: warning: static property 'C' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |
 33 |     /// C Major
 34 |     static let C = Key(root: NoteClass(.C), scale: .major)
    |                |- warning: static property 'C' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'C' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |
 36 |     /// G Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:37:16: warning: static property 'G' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 35 |
 36 |     /// G Major
 37 |     static let G = Key(root: NoteClass(.G), scale: .major)
    |                |- warning: static property 'G' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'G' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |
 39 |     /// D Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:40:16: warning: static property 'D' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 38 |
 39 |     /// D Major
 40 |     static let D = Key(root: NoteClass(.D), scale: .major)
    |                |- warning: static property 'D' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'D' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 41 |
 42 |     /// A Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:43:16: warning: static property 'A' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 41 |
 42 |     /// A Major
 43 |     static let A = Key(root: NoteClass(.A), scale: .major)
    |                |- warning: static property 'A' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'A' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 44 |
 45 |     /// E Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:46:16: warning: static property 'E' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 44 |
 45 |     /// E Major
 46 |     static let E = Key(root: NoteClass(.E), scale: .major)
    |                |- warning: static property 'E' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'E' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 47 |
 48 |     /// B Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:49:16: warning: static property 'B' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 47 |
 48 |     /// B Major
 49 |     static let B = Key(root: NoteClass(.B), scale: .major)
    |                |- warning: static property 'B' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'B' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |
 51 |     /// F♯ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:52:16: warning: static property 'Fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 50 |
 51 |     /// F♯ Major
 52 |     static let Fs = Key(root: NoteClass(.F, accidental: .sharp), scale: .major)
    |                |- warning: static property 'Fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 53 |
 54 |     /// C♯ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:55:16: warning: static property 'Cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 53 |
 54 |     /// C♯ Major
 55 |     static let Cs = Key(root: NoteClass(.C, accidental: .sharp), scale: .major)
    |                |- warning: static property 'Cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 56 |
 57 |     // MARK: - Minor keys
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:60:16: warning: static property 'ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 58 |
 59 |     /// A♭ Minor
 60 |     static let ab = Key(root: NoteClass(.A, accidental: .flat), scale: .minor)
    |                |- warning: static property 'ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ab' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 61 |
 62 |     /// E♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:63:16: warning: static property 'eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 61 |
 62 |     /// E♭ Minor
 63 |     static let eb = Key(root: NoteClass(.E, accidental: .flat), scale: .minor)
    |                |- warning: static property 'eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'eb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |
 65 |     /// B♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:66:16: warning: static property 'bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 64 |
 65 |     /// B♭ Minor
 66 |     static let bb = Key(root: NoteClass(.B, accidental: .flat), scale: .minor)
    |                |- warning: static property 'bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'bb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 67 |
 68 |     /// F Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:69:16: warning: static property 'f' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 67 |
 68 |     /// F Minor
 69 |     static let f = Key(root: NoteClass(.F), scale: .minor)
    |                |- warning: static property 'f' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'f' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 70 |
 71 |     /// C Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:72:16: warning: static property 'c' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 70 |
 71 |     /// C Minor
 72 |     static let c = Key(root: NoteClass(.C), scale: .minor)
    |                |- warning: static property 'c' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'c' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 73 |
 74 |     /// G Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:75:16: warning: static property 'g' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 73 |
 74 |     /// G Minor
 75 |     static let g = Key(root: NoteClass(.G), scale: .minor)
    |                |- warning: static property 'g' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'g' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 76 |
 77 |     /// D Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:78:16: warning: static property 'd' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 76 |
 77 |     /// D Minor
 78 |     static let d = Key(root: NoteClass(.D), scale: .minor)
    |                |- warning: static property 'd' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'd' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 79 |
 80 |     /// A Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:81:16: warning: static property 'a' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 79 |
 80 |     /// A Minor
 81 |     static let a = Key(root: NoteClass(.A), scale: .minor)
    |                |- warning: static property 'a' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'a' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 82 |
 83 |     /// E Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:84:16: warning: static property 'e' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 82 |
 83 |     /// E Minor
 84 |     static let e = Key(root: NoteClass(.E), scale: .minor)
    |                |- warning: static property 'e' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'e' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 85 |
 86 |     /// B Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:87:16: warning: static property 'b' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 85 |
 86 |     /// B Minor
 87 |     static let b = Key(root: NoteClass(.B), scale: .minor)
    |                |- warning: static property 'b' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'b' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 88 |
 89 |     /// F♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:90:16: warning: static property 'fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 88 |
 89 |     /// F♯ Minor
 90 |     static let fs = Key(root: NoteClass(.F, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'fs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 91 |
 92 |     /// C♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:93:16: warning: static property 'cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 91 |
 92 |     /// C♯ Minor
 93 |     static let cs = Key(root: NoteClass(.C, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'cs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 94 |
 95 |     /// G♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:96:16: warning: static property 'gs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 94 |
 95 |     /// G♯ Minor
 96 |     static let gs = Key(root: NoteClass(.G, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'gs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'gs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 97 |
 98 |     /// D♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:99:16: warning: static property 'ds' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 97 |
 98 |     /// D♯ Minor
 99 |     static let ds = Key(root: NoteClass(.D, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'ds' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ds' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 |
101 |     /// A♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:102:16: warning: static property 'as' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
100 |
101 |     /// A♯ Minor
102 |     static let `as` = Key(root: NoteClass(.A, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'as' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'as' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 |
104 |     /// A♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:105:16: warning: static property 'Abm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
103 |
104 |     /// A♭ Minor
105 |     static let Abm = Key(root: NoteClass(.A, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Abm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Abm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
106 |
107 |     /// E♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:108:16: warning: static property 'Ebm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
106 |
107 |     /// E♭ Minor
108 |     static let Ebm = Key(root: NoteClass(.E, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Ebm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Ebm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
109 |
110 |     /// B♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:111:16: warning: static property 'Bbm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
109 |
110 |     /// B♭ Minor
111 |     static let Bbm = Key(root: NoteClass(.B, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Bbm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bbm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
112 |
113 |     /// F Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:114:16: warning: static property 'Fm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
112 |
113 |     /// F Minor
114 |     static let Fm = Key(root: NoteClass(.F), scale: .minor)
    |                |- warning: static property 'Fm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
115 |
116 |     /// C Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:117:16: warning: static property 'Cm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
115 |
116 |     /// C Minor
117 |     static let Cm = Key(root: NoteClass(.C), scale: .minor)
    |                |- warning: static property 'Cm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
118 |
119 |     /// G Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:120:16: warning: static property 'Gm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
118 |
119 |     /// G Minor
120 |     static let Gm = Key(root: NoteClass(.G), scale: .minor)
    |                |- warning: static property 'Gm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 |
122 |     /// D Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:123:16: warning: static property 'Dm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
121 |
122 |     /// D Minor
123 |     static let Dm = Key(root: NoteClass(.D), scale: .minor)
    |                |- warning: static property 'Dm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Dm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
124 |
125 |     /// A Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:126:16: warning: static property 'Am' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
124 |
125 |     /// A Minor
126 |     static let Am = Key(root: NoteClass(.A), scale: .minor)
    |                |- warning: static property 'Am' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Am' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 |     /// E Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:129:16: warning: static property 'Em' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
127 |
128 |     /// E Minor
129 |     static let Em = Key(root: NoteClass(.E), scale: .minor)
    |                |- warning: static property 'Em' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Em' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
130 |
131 |     /// B Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:132:16: warning: static property 'Bm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
130 |
131 |     /// B Minor
132 |     static let Bm = Key(root: NoteClass(.B), scale: .minor)
    |                |- warning: static property 'Bm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
133 |
134 |     /// F♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:135:16: warning: static property 'Fsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
133 |
134 |     /// F♯ Minor
135 |     static let Fsm = Key(root: NoteClass(.F, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Fsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
136 |
137 |     /// C♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:138:16: warning: static property 'Csm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
136 |
137 |     /// C♯ Minor
138 |     static let Csm = Key(root: NoteClass(.C, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Csm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Csm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
139 |
140 |     /// G♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:141:16: warning: static property 'Gsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
139 |
140 |     /// G♯ Minor
141 |     static let Gsm = Key(root: NoteClass(.G, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Gsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
142 |
143 |     /// D♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:144:16: warning: static property 'Dsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
142 |
143 |     /// D♯ Minor
144 |     static let Dsm = Key(root: NoteClass(.D, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Dsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Dsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
145 |
146 |     /// A♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:147:16: warning: static property 'Asm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
145 |
146 |     /// A♯ Minor
147 |     static let Asm = Key(root: NoteClass(.A, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Asm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Asm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
148 | }
149 |
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
[26/26] Compiling Tonic Key.swift
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:7:16: warning: static property 'circleOfFifths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
  5 | public extension Key {
  6 |
  7 |     static let circleOfFifths: [Key] = [.C, .G, .D, .A, .E, .B, .Fs, .Cs]
    |                |- warning: static property 'circleOfFifths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'circleOfFifths' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  8 |     static let circleOfFourths: [Key] = [.F, .Bb, .Eb, .Ab, .Db, .Gb, .Cb]
  9 |
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:8:16: warning: static property 'circleOfFourths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
  6 |
  7 |     static let circleOfFifths: [Key] = [.C, .G, .D, .A, .E, .B, .Fs, .Cs]
  8 |     static let circleOfFourths: [Key] = [.F, .Bb, .Eb, .Ab, .Db, .Gb, .Cb]
    |                |- warning: static property 'circleOfFourths' is not concurrency-safe because non-'Sendable' type '[Key]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'circleOfFourths' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
  9 |
 10 |     // MARK: - Major keys
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:13:16: warning: static property 'Cb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 11 |
 12 |     /// C♭ Major
 13 |     static let Cb = Key(root: NoteClass(.C, accidental: .flat), scale: .major)
    |                |- warning: static property 'Cb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 14 |
 15 |     /// G♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:16:16: warning: static property 'Gb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 14 |
 15 |     /// G♭ Major
 16 |     static let Gb = Key(root: NoteClass(.G, accidental: .flat), scale: .major)
    |                |- warning: static property 'Gb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 17 |
 18 |     /// D♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:19:16: warning: static property 'Db' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 17 |
 18 |     /// D♭ Major
 19 |     static let Db = Key(root: NoteClass(.D, accidental: .flat), scale: .major)
    |                |- warning: static property 'Db' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Db' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |
 21 |     /// A♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:22:16: warning: static property 'Ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 20 |
 21 |     /// A♭ Major
 22 |     static let Ab = Key(root: NoteClass(.A, accidental: .flat), scale: .major)
    |                |- warning: static property 'Ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Ab' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |
 24 |     /// E♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:25:16: warning: static property 'Eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 23 |
 24 |     /// E♭ Major
 25 |     static let Eb = Key(root: NoteClass(.E, accidental: .flat), scale: .major)
    |                |- warning: static property 'Eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Eb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 26 |
 27 |     /// B♭ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:28:16: warning: static property 'Bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 26 |
 27 |     /// B♭ Major
 28 |     static let Bb = Key(root: NoteClass(.B, accidental: .flat), scale: .major)
    |                |- warning: static property 'Bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 29 |
 30 |     /// F Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:31:16: warning: static property 'F' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 29 |
 30 |     /// F Major
 31 |     static let F = Key(root: NoteClass(.F), scale: .major)
    |                |- warning: static property 'F' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'F' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 32 |
 33 |     /// C Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:34:16: warning: static property 'C' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 32 |
 33 |     /// C Major
 34 |     static let C = Key(root: NoteClass(.C), scale: .major)
    |                |- warning: static property 'C' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'C' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 35 |
 36 |     /// G Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:37:16: warning: static property 'G' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 35 |
 36 |     /// G Major
 37 |     static let G = Key(root: NoteClass(.G), scale: .major)
    |                |- warning: static property 'G' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'G' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 38 |
 39 |     /// D Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:40:16: warning: static property 'D' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 38 |
 39 |     /// D Major
 40 |     static let D = Key(root: NoteClass(.D), scale: .major)
    |                |- warning: static property 'D' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'D' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 41 |
 42 |     /// A Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:43:16: warning: static property 'A' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 41 |
 42 |     /// A Major
 43 |     static let A = Key(root: NoteClass(.A), scale: .major)
    |                |- warning: static property 'A' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'A' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 44 |
 45 |     /// E Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:46:16: warning: static property 'E' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 44 |
 45 |     /// E Major
 46 |     static let E = Key(root: NoteClass(.E), scale: .major)
    |                |- warning: static property 'E' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'E' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 47 |
 48 |     /// B Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:49:16: warning: static property 'B' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 47 |
 48 |     /// B Major
 49 |     static let B = Key(root: NoteClass(.B), scale: .major)
    |                |- warning: static property 'B' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'B' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 50 |
 51 |     /// F♯ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:52:16: warning: static property 'Fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 50 |
 51 |     /// F♯ Major
 52 |     static let Fs = Key(root: NoteClass(.F, accidental: .sharp), scale: .major)
    |                |- warning: static property 'Fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 53 |
 54 |     /// C♯ Major
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:55:16: warning: static property 'Cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 53 |
 54 |     /// C♯ Major
 55 |     static let Cs = Key(root: NoteClass(.C, accidental: .sharp), scale: .major)
    |                |- warning: static property 'Cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 56 |
 57 |     // MARK: - Minor keys
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:60:16: warning: static property 'ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 58 |
 59 |     /// A♭ Minor
 60 |     static let ab = Key(root: NoteClass(.A, accidental: .flat), scale: .minor)
    |                |- warning: static property 'ab' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ab' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 61 |
 62 |     /// E♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:63:16: warning: static property 'eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 61 |
 62 |     /// E♭ Minor
 63 |     static let eb = Key(root: NoteClass(.E, accidental: .flat), scale: .minor)
    |                |- warning: static property 'eb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'eb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 64 |
 65 |     /// B♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:66:16: warning: static property 'bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 64 |
 65 |     /// B♭ Minor
 66 |     static let bb = Key(root: NoteClass(.B, accidental: .flat), scale: .minor)
    |                |- warning: static property 'bb' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'bb' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 67 |
 68 |     /// F Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:69:16: warning: static property 'f' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 67 |
 68 |     /// F Minor
 69 |     static let f = Key(root: NoteClass(.F), scale: .minor)
    |                |- warning: static property 'f' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'f' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 70 |
 71 |     /// C Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:72:16: warning: static property 'c' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 70 |
 71 |     /// C Minor
 72 |     static let c = Key(root: NoteClass(.C), scale: .minor)
    |                |- warning: static property 'c' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'c' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 73 |
 74 |     /// G Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:75:16: warning: static property 'g' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 73 |
 74 |     /// G Minor
 75 |     static let g = Key(root: NoteClass(.G), scale: .minor)
    |                |- warning: static property 'g' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'g' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 76 |
 77 |     /// D Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:78:16: warning: static property 'd' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 76 |
 77 |     /// D Minor
 78 |     static let d = Key(root: NoteClass(.D), scale: .minor)
    |                |- warning: static property 'd' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'd' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 79 |
 80 |     /// A Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:81:16: warning: static property 'a' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 79 |
 80 |     /// A Minor
 81 |     static let a = Key(root: NoteClass(.A), scale: .minor)
    |                |- warning: static property 'a' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'a' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 82 |
 83 |     /// E Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:84:16: warning: static property 'e' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 82 |
 83 |     /// E Minor
 84 |     static let e = Key(root: NoteClass(.E), scale: .minor)
    |                |- warning: static property 'e' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'e' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 85 |
 86 |     /// B Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:87:16: warning: static property 'b' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 85 |
 86 |     /// B Minor
 87 |     static let b = Key(root: NoteClass(.B), scale: .minor)
    |                |- warning: static property 'b' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'b' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 88 |
 89 |     /// F♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:90:16: warning: static property 'fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 88 |
 89 |     /// F♯ Minor
 90 |     static let fs = Key(root: NoteClass(.F, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'fs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'fs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 91 |
 92 |     /// C♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:93:16: warning: static property 'cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 91 |
 92 |     /// C♯ Minor
 93 |     static let cs = Key(root: NoteClass(.C, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'cs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'cs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 94 |
 95 |     /// G♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:96:16: warning: static property 'gs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 94 |
 95 |     /// G♯ Minor
 96 |     static let gs = Key(root: NoteClass(.G, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'gs' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'gs' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 97 |
 98 |     /// D♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:99:16: warning: static property 'ds' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
 97 |
 98 |     /// D♯ Minor
 99 |     static let ds = Key(root: NoteClass(.D, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'ds' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'ds' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
100 |
101 |     /// A♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:102:16: warning: static property 'as' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
100 |
101 |     /// A♯ Minor
102 |     static let `as` = Key(root: NoteClass(.A, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'as' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'as' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
103 |
104 |     /// A♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:105:16: warning: static property 'Abm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
103 |
104 |     /// A♭ Minor
105 |     static let Abm = Key(root: NoteClass(.A, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Abm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Abm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
106 |
107 |     /// E♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:108:16: warning: static property 'Ebm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
106 |
107 |     /// E♭ Minor
108 |     static let Ebm = Key(root: NoteClass(.E, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Ebm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Ebm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
109 |
110 |     /// B♭ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:111:16: warning: static property 'Bbm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
109 |
110 |     /// B♭ Minor
111 |     static let Bbm = Key(root: NoteClass(.B, accidental: .flat), scale: .minor)
    |                |- warning: static property 'Bbm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bbm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
112 |
113 |     /// F Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:114:16: warning: static property 'Fm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
112 |
113 |     /// F Minor
114 |     static let Fm = Key(root: NoteClass(.F), scale: .minor)
    |                |- warning: static property 'Fm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
115 |
116 |     /// C Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:117:16: warning: static property 'Cm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
115 |
116 |     /// C Minor
117 |     static let Cm = Key(root: NoteClass(.C), scale: .minor)
    |                |- warning: static property 'Cm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Cm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
118 |
119 |     /// G Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:120:16: warning: static property 'Gm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
118 |
119 |     /// G Minor
120 |     static let Gm = Key(root: NoteClass(.G), scale: .minor)
    |                |- warning: static property 'Gm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
121 |
122 |     /// D Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:123:16: warning: static property 'Dm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
121 |
122 |     /// D Minor
123 |     static let Dm = Key(root: NoteClass(.D), scale: .minor)
    |                |- warning: static property 'Dm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Dm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
124 |
125 |     /// A Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:126:16: warning: static property 'Am' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
124 |
125 |     /// A Minor
126 |     static let Am = Key(root: NoteClass(.A), scale: .minor)
    |                |- warning: static property 'Am' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Am' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
127 |
128 |     /// E Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:129:16: warning: static property 'Em' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
127 |
128 |     /// E Minor
129 |     static let Em = Key(root: NoteClass(.E), scale: .minor)
    |                |- warning: static property 'Em' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Em' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
130 |
131 |     /// B Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:132:16: warning: static property 'Bm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
130 |
131 |     /// B Minor
132 |     static let Bm = Key(root: NoteClass(.B), scale: .minor)
    |                |- warning: static property 'Bm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Bm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
133 |
134 |     /// F♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:135:16: warning: static property 'Fsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
133 |
134 |     /// F♯ Minor
135 |     static let Fsm = Key(root: NoteClass(.F, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Fsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Fsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
136 |
137 |     /// C♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:138:16: warning: static property 'Csm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
136 |
137 |     /// C♯ Minor
138 |     static let Csm = Key(root: NoteClass(.C, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Csm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Csm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
139 |
140 |     /// G♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:141:16: warning: static property 'Gsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
139 |
140 |     /// G♯ Minor
141 |     static let Gsm = Key(root: NoteClass(.G, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Gsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Gsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
142 |
143 |     /// D♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:144:16: warning: static property 'Dsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
142 |
143 |     /// D♯ Minor
144 |     static let Dsm = Key(root: NoteClass(.D, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Dsm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Dsm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
145 |
146 |     /// A♯ Minor
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
/host/spi-builder-workspace/Sources/Tonic/Key+Shortcuts.swift:147:16: warning: static property 'Asm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
145 |
146 |     /// A♯ Minor
147 |     static let Asm = Key(root: NoteClass(.A, accidental: .sharp), scale: .minor)
    |                |- warning: static property 'Asm' is not concurrency-safe because non-'Sendable' type 'Key' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'Asm' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
148 | }
149 |
/host/spi-builder-workspace/Sources/Tonic/Key.swift:8:15: note: consider making struct 'Key' conform to the 'Sendable' protocol
 6 | ///
 7 | /// A key is composed of a Root ``Note``, and a ``Scale``.
 8 | public struct Key: Equatable {
   |               `- note: consider making struct 'Key' conform to the 'Sendable' protocol
 9 |     /// The primary note class of the key, also known as the tonic
10 |     public let root: NoteClass
Build complete! (6.59s)
Build complete.
{
  "dependencies" : [
  ],
  "manifest_display_name" : "Tonic",
  "name" : "Tonic",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
  ],
  "products" : [
    {
      "name" : "Tonic",
      "targets" : [
        "Tonic"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "TonicTests",
      "module_type" : "SwiftTarget",
      "name" : "TonicTests",
      "path" : "Tests/TonicTests",
      "sources" : [
        "BitSetTests.swift",
        "ChordTests.swift",
        "IntervalTests.swift",
        "KeyTests.swift",
        "NoteTests.swift",
        "PerformanceTests.swift",
        "ReadMeTests.swift",
        "ScaleTests.swift",
        "TonicTests.swift"
      ],
      "target_dependencies" : [
        "Tonic"
      ],
      "type" : "test"
    },
    {
      "c99name" : "Tonic",
      "module_type" : "SwiftTarget",
      "name" : "Tonic",
      "path" : "Sources/Tonic",
      "product_memberships" : [
        "Tonic"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Sources/Tonic/Tonic.docc",
          "rule" : {
            "process" : {
            }
          }
        }
      ],
      "sources" : [
        "Accidental.swift",
        "BitSet.swift",
        "Chord+Shortcuts.swift",
        "Chord.swift",
        "ChordTable.swift",
        "ChordType.swift",
        "Interval.swift",
        "Key+Shortcuts.swift",
        "Key.swift",
        "Letter.swift",
        "Note+MiddleCStandard.swift",
        "Note+Shortcuts.swift",
        "Note.swift",
        "NoteClass+Shortcuts.swift",
        "NoteClass.swift",
        "NoteSet.swift",
        "Octave.swift",
        "Pitch.swift",
        "PitchColor.swift",
        "Scale+Shortcuts.swift",
        "Scale.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.6"
}
basic-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:3bdcac04179f4ed3e5b8e9dbd6e74bbf5ebc0f4fde48bbaad7d1e5c757e65bcb
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:basic-6.1-latest
Done.