The Swift Package Index logo.Swift Package Index

Build Information

Successful build of ReefCalculator, reference 1.4.0 (62954c), with Swift 6.1 for Wasm on 28 May 2025 14:43:36 UTC.

Swift 6 data race errors: 8

Build Command

bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi -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

========================================
RunAll
========================================
Builder version: 4.63.1
Interrupt handler set up.
========================================
Checkout
========================================
Clone URL: https://github.com/reef-buddy/reef-calculator.git
Reference: 1.4.0
Initialized empty Git repository in /host/spi-builder-workspace/.git/
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: 	git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: 	git branch -m <name>
From https://github.com/reef-buddy/reef-calculator
 * tag               1.4.0      -> FETCH_HEAD
HEAD is now at 62954c0 Update doc
Cloned https://github.com/reef-buddy/reef-calculator.git
Revision (git rev-parse @):
62954c0794b8f9eda1b85ffe6d6283b1269d85fc
SUCCESS checkout https://github.com/reef-buddy/reef-calculator.git at 1.4.0
========================================
Build
========================================
Selected platform:         wasm
Swift version:             6.1
Building package at path:  $PWD
https://github.com/reef-buddy/reef-calculator.git
https://github.com/reef-buddy/reef-calculator.git
WARNING: environment variable SUPPRESS_SWIFT_6_FLAGS is not set
{
  "default_localization" : "en",
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "ReefCalculator",
  "name" : "ReefCalculator",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "ReefCalculator",
      "targets" : [
        "ReefCalculator"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "ReefCalculatorTests",
      "module_type" : "SwiftTarget",
      "name" : "ReefCalculatorTests",
      "path" : "Tests/ReefCalculatorTests",
      "sources" : [
        "Brand/ColumboTests.swift",
        "Brand/HannaTests.swift",
        "Brand/JBLTests.swift",
        "Brand/SalifertTests.swift",
        "Instructions/Builder/StepBuilderTests.swift",
        "Instructions/InstructionsTests.swift",
        "Instructions/Step/AddReagentTests.swift",
        "Instructions/Step/AddWaterTests.swift",
        "Instructions/Step/CountDropletsTests.swift",
        "Instructions/Step/SpoonTests.swift",
        "Instructions/Step/WaitTests.swift",
        "MetricTypeTests.swift",
        "ReefCalculatorTests.swift"
      ],
      "target_dependencies" : [
        "ReefCalculator"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ReefCalculator",
      "module_type" : "SwiftTarget",
      "name" : "ReefCalculator",
      "path" : "Sources/ReefCalculator",
      "product_memberships" : [
        "ReefCalculator"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Sources/ReefCalculator/Resources/en.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "en"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Sources/ReefCalculator/Resources/fr.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "fr"
            }
          }
        }
      ],
      "sources" : [
        "Brand/Brand.swift",
        "Brand/Colombo/Colombo+Calculate.swift",
        "Brand/Colombo/Colombo+Explanation.swift",
        "Brand/Colombo/Colombo+Instruction.swift",
        "Brand/Colombo/Colombo.swift",
        "Brand/Hanna/Hanna+Calculate.swift",
        "Brand/Hanna/Hanna+Explanation.swift",
        "Brand/Hanna/Hanna+Instruction.swift",
        "Brand/Hanna/Hanna.swift",
        "Brand/JBL/JBL+Calculate.swift",
        "Brand/JBL/JBL+Explanation.swift",
        "Brand/JBL/JBL+Instruction.swift",
        "Brand/JBL/JBL.swift",
        "Brand/Salifert/Salifert+Calculate.swift",
        "Brand/Salifert/Salifert+Explanation.swift",
        "Brand/Salifert/Salifert+Instruction.swift",
        "Brand/Salifert/Salifert.swift",
        "Error/InvalidMetricType.swift",
        "Error/UnavailableInstruction.swift",
        "Instructions/Builder/ReagentColor.swift",
        "Instructions/Builder/StepBuilder.swift",
        "Instructions/Instructions.swift",
        "Instructions/Step/AddReagent.swift",
        "Instructions/Step/AddWater.swift",
        "Instructions/Step/CountDroplets.swift",
        "Instructions/Step/FillFlask.swift",
        "Instructions/Step/Shake.swift",
        "Instructions/Step/Spoon.swift",
        "Instructions/Step/Step.swift",
        "Instructions/Step/Syringe.swift",
        "Instructions/Step/Wait.swift",
        "Lib/RedFieldResult.swift",
        "Metric/MetricBaseElement.swift",
        "Metric/MetricMajorElement.swift",
        "Metric/MetricMinorElement.swift",
        "Metric/MetricNutrientsElement.swift",
        "Metric/MetricOtherElement.swift",
        "Metric/MetricPollutantsElement.swift",
        "MetricType.swift",
        "Protocol/MetricProtocol.swift",
        "Protocol/MetricValueProtocol.swift",
        "Protocol/ReefMetricProtocol.swift",
        "Protocol/TankProtocol.swift",
        "ReefCalculator.swift",
        "ResultBuilder/LocalizedStringBuilder.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.7"
}
Running build ...
bash -c docker run --pull=always --rm -v "checkouts-4606859-1":/host -w "$PWD" registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest swift build --swift-sdk wasm32-unknown-wasi -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
wasm-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:7e37457820e5f17452a98118754f345f2619722c485f2db0d8b666940a83afd2
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest
Fetching https://github.com/apple/swift-docc-plugin
[1/2049] Fetching swift-docc-plugin
Fetched https://github.com/apple/swift-docc-plugin from cache (0.63s)
Computing version for https://github.com/apple/swift-docc-plugin
Computed https://github.com/apple/swift-docc-plugin at 1.4.3 (1.62s)
Fetching https://github.com/swiftlang/swift-docc-symbolkit
[1/3391] Fetching swift-docc-symbolkit
Fetched https://github.com/swiftlang/swift-docc-symbolkit from cache (0.46s)
Computing version for https://github.com/swiftlang/swift-docc-symbolkit
Computed https://github.com/swiftlang/swift-docc-symbolkit at 1.0.0 (2.62s)
Creating working copy for https://github.com/apple/swift-docc-plugin
Working copy of https://github.com/apple/swift-docc-plugin resolved at 1.4.3
Creating working copy for https://github.com/swiftlang/swift-docc-symbolkit
Working copy of https://github.com/swiftlang/swift-docc-symbolkit resolved at 1.0.0
[1/1] Compiling plugin Swift-DocC Preview
[2/2] Compiling plugin Swift-DocC
Building for debugging...
[2/7] Copying Localizable.strings
[2/7] Copying Info.plist
[4/7] Copying Localizable.strings
[5/7] Write sources
[6/7] Write swift-version-24593BA9C3E375BF.txt
[8/49] Compiling ReefCalculator MetricOtherElement.swift
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:18:16: warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
    |                |- warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'base' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:19:16: warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    |                |- warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'major' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:20:16: warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
    |                |- warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'minor' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:21:16: warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
    |                |- warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'pollutant' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:22:16: warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
    |                |- warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'other' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
 24 |     // base
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:23:16: warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    :
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
    |                |- warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'nutrient' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 24 |     // base
 25 |     case density
[9/49] Compiling ReefCalculator MetricPollutantsElement.swift
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:18:16: warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
    |                |- warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'base' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:19:16: warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    |                |- warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'major' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:20:16: warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
    |                |- warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'minor' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:21:16: warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
    |                |- warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'pollutant' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:22:16: warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
    |                |- warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'other' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
 24 |     // base
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:23:16: warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    :
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
    |                |- warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'nutrient' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 24 |     // base
 25 |     case density
[10/49] Compiling ReefCalculator MetricType.swift
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:18:16: warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
    |                |- warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'base' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:19:16: warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    |                |- warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'major' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:20:16: warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
    |                |- warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'minor' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:21:16: warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
    |                |- warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'pollutant' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:22:16: warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
    |                |- warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'other' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
 24 |     // base
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:23:16: warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    :
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
    |                |- warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'nutrient' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 24 |     // base
 25 |     case density
[11/49] Compiling ReefCalculator MetricProtocol.swift
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:18:16: warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
    |                |- warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'base' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:19:16: warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    |                |- warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'major' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:20:16: warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
    |                |- warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'minor' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:21:16: warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
    |                |- warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'pollutant' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:22:16: warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
    |                |- warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'other' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
 24 |     // base
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:23:16: warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    :
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
    |                |- warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'nutrient' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 24 |     // base
 25 |     case density
[12/49] Compiling ReefCalculator MetricValueProtocol.swift
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:18:16: warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
    |                |- warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'base' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:19:16: warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    |                |- warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'major' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:20:16: warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
    |                |- warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'minor' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:21:16: warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
    |                |- warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'pollutant' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:22:16: warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
    |                |- warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'other' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
 24 |     // base
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:23:16: warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    :
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
    |                |- warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'nutrient' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 24 |     // base
 25 |     case density
[13/54] Compiling ReefCalculator Wait.swift
[14/54] Compiling ReefCalculator RedFieldResult.swift
[15/54] Compiling ReefCalculator MetricBaseElement.swift
[16/54] Compiling ReefCalculator MetricMajorElement.swift
[17/54] Compiling ReefCalculator MetricMinorElement.swift
[18/54] Compiling ReefCalculator MetricNutrientsElement.swift
[19/54] Compiling ReefCalculator UnavailableInstruction.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/UnavailableInstruction.swift:3:7: warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class UnavailableInstruction: Error {}
  |       `- warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[20/54] Compiling ReefCalculator ReagentColor.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/UnavailableInstruction.swift:3:7: warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class UnavailableInstruction: Error {}
  |       `- warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[21/54] Compiling ReefCalculator StepBuilder.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/UnavailableInstruction.swift:3:7: warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class UnavailableInstruction: Error {}
  |       `- warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[22/54] Compiling ReefCalculator Instructions.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/UnavailableInstruction.swift:3:7: warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class UnavailableInstruction: Error {}
  |       `- warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[23/54] Compiling ReefCalculator AddReagent.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/UnavailableInstruction.swift:3:7: warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class UnavailableInstruction: Error {}
  |       `- warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[24/54] Compiling ReefCalculator AddWater.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/UnavailableInstruction.swift:3:7: warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class UnavailableInstruction: Error {}
  |       `- warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[25/54] Emitting module ReefCalculator
/host/spi-builder-workspace/Sources/ReefCalculator/Error/InvalidMetricType.swift:3:7: warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class InvalidMetricType: Error {}
  |       `- warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
/host/spi-builder-workspace/Sources/ReefCalculator/Error/UnavailableInstruction.swift:3:7: warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class UnavailableInstruction: Error {}
  |       `- warning: non-final class 'UnavailableInstruction' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:18:16: warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
    |                |- warning: static property 'base' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'base' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:19:16: warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    |                |- warning: static property 'major' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'major' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:20:16: warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
    |                |- warning: static property 'minor' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'minor' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:21:16: warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
    |                |- warning: static property 'pollutant' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'pollutant' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:22:16: warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
 20 |     static let minor: [MetricType] = [.li, .si, .i2, .ba, .mo, .ni, .mn, .as, .be, .cr, .co, .fe, .cu, .se, .ag, .v, .zn, .sn]
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
    |                |- warning: static property 'other' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'other' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
 24 |     // base
/host/spi-builder-workspace/Sources/ReefCalculator/MetricType.swift:23:16: warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
 15 |
 16 | // swiftlint:disable identifier_name
 17 | public enum MetricType: String, ReefMetricProtocol {
    |             `- note: consider making enum 'MetricType' conform to the 'Sendable' protocol
 18 |     static let base: [MetricType] = [.density, .kh, .ph]
 19 |     static let major: [MetricType] = [.ci, .na, .mg, .s, .ca, .k, .br, .sr, .b, .f]
    :
 21 |     static let pollutant: [MetricType] = [.no2, .al, .sb, .bi, .pb, .cd, .la, .tl, .ti, .w, .hg, .sio2, .nh4]
 22 |     static let other: [MetricType] = [.gh, .o2, .co2]
 23 |     static let nutrient: [MetricType] = [.no3, .p, .po4]
    |                |- warning: static property 'nutrient' is not concurrency-safe because non-'Sendable' type '[MetricType]' may have shared mutable state; this is an error in the Swift 6 language mode
    |                |- note: add '@MainActor' to make static property 'nutrient' part of global actor 'MainActor'
    |                `- note: disable concurrency-safety checks if accesses are protected by an external synchronization mechanism
 24 |     // base
 25 |     case density
[26/54] Compiling ReefCalculator Brand.swift
[27/54] Compiling ReefCalculator Colombo+Calculate.swift
[28/54] Compiling ReefCalculator Colombo+Explanation.swift
[29/54] Compiling ReefCalculator Colombo+Instruction.swift
[30/54] Compiling ReefCalculator Colombo.swift
[31/54] Compiling ReefCalculator Hanna+Calculate.swift
[32/54] Compiling ReefCalculator JBL.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/InvalidMetricType.swift:3:7: warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class InvalidMetricType: Error {}
  |       `- warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[33/54] Compiling ReefCalculator Salifert+Calculate.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/InvalidMetricType.swift:3:7: warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class InvalidMetricType: Error {}
  |       `- warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[34/54] Compiling ReefCalculator Salifert+Explanation.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/InvalidMetricType.swift:3:7: warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class InvalidMetricType: Error {}
  |       `- warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[35/54] Compiling ReefCalculator Salifert+Instruction.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/InvalidMetricType.swift:3:7: warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class InvalidMetricType: Error {}
  |       `- warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[36/54] Compiling ReefCalculator Salifert.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/InvalidMetricType.swift:3:7: warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class InvalidMetricType: Error {}
  |       `- warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[37/54] Compiling ReefCalculator InvalidMetricType.swift
/host/spi-builder-workspace/Sources/ReefCalculator/Error/InvalidMetricType.swift:3:7: warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
1 | import Foundation
2 |
3 | class InvalidMetricType: Error {}
  |       `- warning: non-final class 'InvalidMetricType' cannot conform to 'Sendable'; use '@unchecked Sendable'; this is an error in the Swift 6 language mode
4 |
[38/54] Compiling ReefCalculator Hanna+Explanation.swift
[39/54] Compiling ReefCalculator Hanna+Instruction.swift
[40/54] Compiling ReefCalculator Hanna.swift
[41/54] Compiling ReefCalculator JBL+Calculate.swift
[42/54] Compiling ReefCalculator JBL+Explanation.swift
[43/54] Compiling ReefCalculator JBL+Instruction.swift
[44/54] Compiling ReefCalculator CountDroplets.swift
[45/54] Compiling ReefCalculator FillFlask.swift
[46/54] Compiling ReefCalculator Shake.swift
[47/54] Compiling ReefCalculator Spoon.swift
[48/54] Compiling ReefCalculator Step.swift
[49/54] Compiling ReefCalculator Syringe.swift
[50/54] Compiling ReefCalculator ReefMetricProtocol.swift
[51/54] Compiling ReefCalculator TankProtocol.swift
[52/54] Compiling ReefCalculator ReefCalculator.swift
[53/54] Compiling ReefCalculator LocalizedStringBuilder.swift
[54/54] Compiling ReefCalculator resource_bundle_accessor.swift
Build complete! (32.72s)
Build complete.
{
  "default_localization" : "en",
  "dependencies" : [
    {
      "identity" : "swift-docc-plugin",
      "requirement" : {
        "range" : [
          {
            "lower_bound" : "1.0.0",
            "upper_bound" : "2.0.0"
          }
        ]
      },
      "type" : "sourceControl",
      "url" : "https://github.com/apple/swift-docc-plugin"
    }
  ],
  "manifest_display_name" : "ReefCalculator",
  "name" : "ReefCalculator",
  "path" : "/host/spi-builder-workspace",
  "platforms" : [
    {
      "name" : "ios",
      "version" : "13.0"
    },
    {
      "name" : "macos",
      "version" : "12.0"
    }
  ],
  "products" : [
    {
      "name" : "ReefCalculator",
      "targets" : [
        "ReefCalculator"
      ],
      "type" : {
        "library" : [
          "automatic"
        ]
      }
    }
  ],
  "targets" : [
    {
      "c99name" : "ReefCalculatorTests",
      "module_type" : "SwiftTarget",
      "name" : "ReefCalculatorTests",
      "path" : "Tests/ReefCalculatorTests",
      "sources" : [
        "Brand/ColumboTests.swift",
        "Brand/HannaTests.swift",
        "Brand/JBLTests.swift",
        "Brand/SalifertTests.swift",
        "Instructions/Builder/StepBuilderTests.swift",
        "Instructions/InstructionsTests.swift",
        "Instructions/Step/AddReagentTests.swift",
        "Instructions/Step/AddWaterTests.swift",
        "Instructions/Step/CountDropletsTests.swift",
        "Instructions/Step/SpoonTests.swift",
        "Instructions/Step/WaitTests.swift",
        "MetricTypeTests.swift",
        "ReefCalculatorTests.swift"
      ],
      "target_dependencies" : [
        "ReefCalculator"
      ],
      "type" : "test"
    },
    {
      "c99name" : "ReefCalculator",
      "module_type" : "SwiftTarget",
      "name" : "ReefCalculator",
      "path" : "Sources/ReefCalculator",
      "product_memberships" : [
        "ReefCalculator"
      ],
      "resources" : [
        {
          "path" : "/host/spi-builder-workspace/Sources/ReefCalculator/Resources/en.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "en"
            }
          }
        },
        {
          "path" : "/host/spi-builder-workspace/Sources/ReefCalculator/Resources/fr.lproj/Localizable.strings",
          "rule" : {
            "process" : {
              "localization" : "fr"
            }
          }
        }
      ],
      "sources" : [
        "Brand/Brand.swift",
        "Brand/Colombo/Colombo+Calculate.swift",
        "Brand/Colombo/Colombo+Explanation.swift",
        "Brand/Colombo/Colombo+Instruction.swift",
        "Brand/Colombo/Colombo.swift",
        "Brand/Hanna/Hanna+Calculate.swift",
        "Brand/Hanna/Hanna+Explanation.swift",
        "Brand/Hanna/Hanna+Instruction.swift",
        "Brand/Hanna/Hanna.swift",
        "Brand/JBL/JBL+Calculate.swift",
        "Brand/JBL/JBL+Explanation.swift",
        "Brand/JBL/JBL+Instruction.swift",
        "Brand/JBL/JBL.swift",
        "Brand/Salifert/Salifert+Calculate.swift",
        "Brand/Salifert/Salifert+Explanation.swift",
        "Brand/Salifert/Salifert+Instruction.swift",
        "Brand/Salifert/Salifert.swift",
        "Error/InvalidMetricType.swift",
        "Error/UnavailableInstruction.swift",
        "Instructions/Builder/ReagentColor.swift",
        "Instructions/Builder/StepBuilder.swift",
        "Instructions/Instructions.swift",
        "Instructions/Step/AddReagent.swift",
        "Instructions/Step/AddWater.swift",
        "Instructions/Step/CountDroplets.swift",
        "Instructions/Step/FillFlask.swift",
        "Instructions/Step/Shake.swift",
        "Instructions/Step/Spoon.swift",
        "Instructions/Step/Step.swift",
        "Instructions/Step/Syringe.swift",
        "Instructions/Step/Wait.swift",
        "Lib/RedFieldResult.swift",
        "Metric/MetricBaseElement.swift",
        "Metric/MetricMajorElement.swift",
        "Metric/MetricMinorElement.swift",
        "Metric/MetricNutrientsElement.swift",
        "Metric/MetricOtherElement.swift",
        "Metric/MetricPollutantsElement.swift",
        "MetricType.swift",
        "Protocol/MetricProtocol.swift",
        "Protocol/MetricValueProtocol.swift",
        "Protocol/ReefMetricProtocol.swift",
        "Protocol/TankProtocol.swift",
        "ReefCalculator.swift",
        "ResultBuilder/LocalizedStringBuilder.swift"
      ],
      "type" : "library"
    }
  ],
  "tools_version" : "5.7"
}
wasm-6.1-latest: Pulling from finestructure/spi-images
Digest: sha256:7e37457820e5f17452a98118754f345f2619722c485f2db0d8b666940a83afd2
Status: Image is up to date for registry.gitlab.com/finestructure/spi-images:wasm-6.1-latest
Done.