Source formatting --check completed for 12 Swift files. Swift layout regression cases passed. Linting Swift files at paths ~/Developer/Projects/NeXTsound/Scripts/swift-layout.swift, ~/Developer/Projects/NeXTsound/Shared/Package.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/DSPSettings.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/EQResponse.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/FactoryPreset.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/SoundProfile.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/SpeakerEnclosure.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/WireCodec.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/WireModels.swift, ~/Developer/Projects/NeXTsound/Shared/Tests/NeXTsoundCoreTests/EQResponseTests.swift, ~/Developer/Projects/NeXTsound/Shared/Tests/NeXTsoundCoreTests/ProfileTests.swift, ~/Developer/Projects/NeXTsound/Shared/Tests/NeXTsoundCoreTests/WireCodecTests.swift Linting 'Package.swift' (2/12) Linting 'swift-layout.swift' (1/12) Linting 'DSPSettings.swift' (3/12) Linting 'EQResponse.swift' (4/12) Linting 'SoundProfile.swift' (6/12) Linting 'FactoryPreset.swift' (5/12) Linting 'WireCodec.swift' (7/12) Linting 'SpeakerEnclosure.swift' (8/12) Linting 'WireModels.swift' (9/12) Linting 'EQResponseTests.swift' (10/12) Linting 'ProfileTests.swift' (11/12) Linting 'WireCodecTests.swift' (12/12) Done linting! Found 0 violations, 0 serious in 12 files. Arm 15.3.1 and Pico SDK a1438dff1d38bd9c65dbd693f0e5db4b9ae91779 ready. PICO_SDK_PATH is ~/Developer/Projects/NeXTsound/.tools/pico-sdk Target board (PICO_BOARD) is 'waveshare_rp2350_zero'. Using board configuration from ~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/boards/include/boards/waveshare_rp2350_zero.h Pico Platform (PICO_PLATFORM) is 'rp2350-arm-s'. Build type is Release Forcing fetch of picotool from git Downloading Picotool Using picotool from ~/Developer/Projects/NeXTsound/.tools/picotool/picotool/picotool TinyUSB available at ~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/hw/bsp/rp2040; enabling build support for USB. -- Configuring done (0.5s) -- Generating done (0.1s) -- Build files have been written to: ~/Developer/Projects/NeXTsound/.build/firmware [1/11] cd ~/Developer/Projects/NeXTsound/.build/firmware/pico-sdk/src/rp2350/boot_stage2 && /opt/homebrew/bin/cmake -E touch_nocreate ~/Developer/Projects/NeXTsound/Firmware/CMakeLists.txt [2/11] Building C object Core/CMakeFiles/nxs_device.dir/render.c.o [3/11] Performing build step for 'picotoolBuild' [1/3] Performing build step for 'enc_bootloader' ninja: no work to do. [2/3] No install step for 'enc_bootloader' [3/3] Completed 'enc_bootloader' [4/11] Building C object Core/CMakeFiles/nxs_storage.dir/storage.c.o [5/11] Linking C static library Core/libnxs_storage.a [6/11] Linking C static library Core/libnxs_device.a [7/11] Performing install step for 'picotoolBuild' [1/4] Performing build step for 'enc_bootloader' ninja: no work to do. [2/4] No install step for 'enc_bootloader' [3/4] Completed 'enc_bootloader' [3/4] Install the project... -- Install configuration: "Release" [8/11] Performing test step for 'picotoolBuild' picotool v2.3.1 (Darwin, AppleClang-21.0.0.21000334, Release) This version of picotool was compiled without USB support. Some commands are not available. [9/11] Completed 'picotoolBuild' [10/11] Building C object CMakeFiles/nxs_firmware.dir/USB/control.c.o [11/11] Linking CXX executable nxs_firmware.elf SRAM-only ELF: 2 load segments; entry 0x20000178 SRAM guard rejects the flash-linked negative control. Storage linker guard accepts the boundary and rejects a one-byte overlap. text data bss dec hex filename 68036 0 18836 86872 15358 ~/Developer/Projects/NeXTsound/.build/firmware/nxs_firmware.elf File ~/Developer/Projects/NeXTsound/.build/firmware/nxs_firmware.uf2 family ID 'rp2350-arm-s': Program Information name: NeXTsound development firmware version: 8ba6410c-dirty description: USB audio and HID control mono I2S muted start binary start: 0x10000000 binary end: 0x1000f1c4 target chip: RP2350 image type: ARM Secure Fixed Pin Information none Build Information sdk version: 2.2.0 pico_board: waveshare_rp2350_zero boot2_name: boot2_generic_03h build date: Oct 18 2026 build attributes: Release Metadata Block 1 address: 0x10000138 next block address: 0x1000f1b0 block type: image def target chip: RP2350 image type: ARM Secure extra security: not enabled Metadata Block 2 address: 0x1000f1b0 next block address: 0x10000138 block type: ignored -- Configuring done (0.1s) -- Generating done (0.0s) -- Build files have been written to: ~/Developer/Projects/NeXTsound/.build/c-protocol [1/35] Building C object firmware-tests/CMakeFiles/nxs_pio_tests.dir/pio_tests.c.o [2/35] Building C object firmware-tests/CMakeFiles/nxs_reset_tests.dir~/Developer/Projects/NeXTsound/Firmware/USB/reset.c.o [3/35] Building C object firmware-core/CMakeFiles/nxs_device.dir/render.c.o [4/35] Building C object CMakeFiles/nxs_flash_geometry_tests.dir~/Developer/Projects/NeXTsound/Firmware/Tests/flash_geometry_tests.c.o [5/35] Building C object firmware-tests/CMakeFiles/nxs_reset_tests.dir~/Developer/Projects/NeXTsound/Firmware/USB/descriptors.c.o [6/35] Building C object firmware-core/CMakeFiles/nxs_storage.dir/storage.c.o [7/35] Building C object firmware-tests/CMakeFiles/nxs_descriptor_tests.dir~/Developer/Projects/NeXTsound/Firmware/USB/descriptors.c.o [8/35] Building C object firmware-tests/CMakeFiles/nxs_reset_tests.dir/reset_tests.c.o [9/35] Building C object firmware-tests/CMakeFiles/nxs_descriptor_tests.dir/descriptor_tests.c.o [10/35] Building C object CMakeFiles/nxs_protocol_tests.dir/Tests/CProtocolTests/protocol_tests.c.o [11/35] Building C object CMakeFiles/nxs_audio_tests.dir~/Developer/Projects/NeXTsound/Firmware/Tests/audio_tests.c.o [12/35] Building C object firmware-tests/CMakeFiles/nxs_control_tests.dir~/Developer/Projects/NeXTsound/Firmware/USB/control.c.o [13/35] Building C object CMakeFiles/nxs_device_tests.dir~/Developer/Projects/NeXTsound/Firmware/Tests/device_tests.c.o [14/35] Building C object CMakeFiles/nxs_dsp_tests.dir/Tests/CDSPTests/dsp_tests.c.o [15/35] Linking C static library firmware-core/libnxs_storage.a [16/35] Building C object firmware-tests/CMakeFiles/nxs_rp2_iso_tests.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c.o [17/35] Building C object firmware-tests/CMakeFiles/nxs_rp2_iso_tests.dir/usb_iso_tests.c.o [18/35] Building C object firmware-tests/CMakeFiles/nxs_rp2_iso_tests.dir~/Developer/Projects/NeXTsound/Firmware/ThirdParty/TinyUSB/rp2040/dcd_rp2040.c.o [19/35] Building C object firmware-tests/CMakeFiles/nxs_rp2_iso_unpatched_tests.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c.o [20/35] Linking C executable nxs_protocol_tests [21/35] Building C object firmware-tests/CMakeFiles/nxs_rp2_iso_unpatched_tests.dir/usb_iso_tests.c.o [22/35] Building C object firmware-tests/CMakeFiles/nxs_rp2_iso_unpatched_tests.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c.o [23/35] Linking C executable nxs_dsp_tests [24/35] Linking C static library firmware-core/libnxs_device.a [25/35] Linking C executable nxs_flash_geometry_tests [26/35] Linking C executable nxs_storage_tests [27/35] Linking C executable firmware-tests/nxs_pio_tests [28/35] Linking C executable nxs_render_tests [29/35] Linking C executable nxs_audio_tests [30/35] Linking C executable firmware-tests/nxs_rp2_iso_unpatched_tests [31/35] Linking C executable firmware-tests/nxs_rp2_iso_tests [32/35] Linking C executable nxs_device_tests [33/35] Linking C executable firmware-tests/nxs_reset_tests [34/35] Linking C executable firmware-tests/nxs_control_tests [35/35] Linking C executable firmware-tests/nxs_descriptor_tests Test project ~/Developer/Projects/NeXTsound/.build/c-protocol Start 1: protocol 1/20 Test #1: protocol ......................... Passed 0.34 sec Start 2: dsp 2/20 Test #2: dsp .............................. Passed 0.28 sec Start 3: device 3/20 Test #3: device ........................... Passed 0.21 sec Start 4: storage 4/20 Test #4: storage .......................... Passed 0.35 sec Start 5: flash_geometry 5/20 Test #5: flash_geometry ................... Passed 0.20 sec Start 6: audio 6/20 Test #6: audio ............................ Passed 0.20 sec Start 7: render 7/20 Test #7: render ........................... Passed 0.22 sec Start 8: pio 8/20 Test #8: pio .............................. Passed 0.20 sec Start 9: descriptor 9/20 Test #9: descriptor ....................... Passed 0.20 sec Start 10: reset 10/20 Test #10: reset ............................ Passed 0.20 sec Start 11: control 11/20 Test #11: control .......................... Passed 0.23 sec Start 12: control_mount 12/20 Test #12: control_mount .................... Passed 0.01 sec Start 13: control_packet 13/20 Test #13: control_packet ................... Passed 0.01 sec Start 14: control_short-read 14/20 Test #14: control_short-read ............... Passed 0.01 sec Start 15: control_inflight 15/20 Test #15: control_inflight ................. Passed 0.01 sec Start 16: control_storage-status 16/20 Test #16: control_storage-status ........... Passed 0.01 sec Start 17: control_storage-flow 17/20 Test #17: control_storage-flow ............. Passed 0.01 sec Start 18: control_reset-flow 18/20 Test #18: control_reset-flow ............... Passed 0.01 sec Start 19: rp2_iso 19/20 Test #19: rp2_iso .......................... Passed 0.21 sec Start 20: rp2_iso_unpatched 20/20 Test #20: rp2_iso_unpatched ................ Passed 0.20 sec 100% tests passed out of 20 Total Test time (real) = 3.10 sec Building for debugging... [1 / 2] NeXTsoundCoreTests-product Build complete! (0,22 sec) Test Suite 'All tests' started at 2026-10-18 14:01:08.849. Test Suite 'All tests' passed at 2026-10-18 14:01:08.854. Executed 0 tests, with 0 failures (0 unexpected) in 0.000 (0.005) seconds 􀟈 Test run started. 􀄵 Testing Library Version: 2084 􀄵 Target Platform: arm64e-apple-macos14.0 􀟈 Suite WireCodecTests started. 􀟈 Suite EQResponseTests started. 􀟈 Suite ProfileTests started. 􀟈 Test rejectsOversizedPayloadAndInvalidRequestID() started. 􀟈 Test matchesTheSharedGoldenPacket() started. 􀟈 Test peakingResponseUsesTheFirmwareCoefficients() started. 􀟈 Test unknownSpeakerAndVolumeDataRemainAbsent() started. 􀟈 Test snapshotRoundTripPreservesIdentityAndParameters() started. 􀟈 Test rejectsEmbeddedNullsInDeviceStrings() started. 􀟈 Test diagnosticRoundTripAndVersionValidation() started. 􀟈 Test highPassHasTheButterworthCutoffResponse() started. 􀟈 Test rejectsInvalidSettings() started. 􀟈 Test diagnosticRequestsRequireMinorOneAndEchoTheRevision() started. 􀟈 Test rejectsInvalidFrequencies(_:) started. 􀟈 Test previewExcludesMuteAttenuationAndNonlinearLimiting() started. 􀟈 Test runtimeStatusRoundTripPreservesDiagnostics() started. 􀟈 Test rejectsUnknownVersionsAndDirtyPadding() started. 􀟈 Test acknowledgementsRequireMatchingRequestAndOperation() started. 􀟈 Test rejectsInvalidFrequencies(_:) started. 􀟈 Test rejectsPersistenceWithoutVerifiedFlash() started. 􀟈 Test namedProfileRoundTripPreservesSpeakerAndEnclosure() started. 􀟈 Test datasheetSpecificationsRequireASource() started. 􀟈 Test invalidEnclosuresCannotBeSaved() started. 􀟈 Test capabilityRoundTripUsesTheSharedBounds() started. 􀟈 Test catalogChangesDoNotAlterProfileSnapshots() started. 􀟈 Test rejectsTheWrongNumberOfBands() started. 􀟈 Test rejectsAnEmptyProfileName() started. 􀟈 Test jsonDecoderAlsoRejectsInvalidProfileContents() started. 􀟈 Test invalidRevisionsCannotWrapOrBeSaved() started. 􀟈 Test invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test factoryPresetsAreMutedListeningStartingPoints() started. 􀟈 Test rejectsUnknownProfileVersionsBeforeDecodingTheirContents() started. 􀟈 Test directEncodersRejectInvalidProfiles() started. 􀟈 Test rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument frequency → nan to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → inf to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → -inf to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → 0.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → 0.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → -1.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → 25000.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → 24000.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → inf to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → nan to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument impedance → 0.0 to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument impedance → inf to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument impedance → -1.0 to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument impedance → -inf to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument impedance → nan to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument length → 0 to rejectsIncorrectReportLengths(_:) started. 􁁛 Test highPassHasTheButterworthCutoffResponse() passed after 0.001 seconds. 􁁛 Test runtimeStatusRoundTripPreservesDiagnostics() passed after 0.001 seconds. 􁁛 Test peakingResponseUsesTheFirmwareCoefficients() passed after 0.001 seconds. 􀟈 Test case passing 1 argument length → 1 to rejectsIncorrectReportLengths(_:) started. 􁁛 Test previewExcludesMuteAttenuationAndNonlinearLimiting() passed after 0.001 seconds. 􀟈 Test case passing 1 argument length → 19 to rejectsIncorrectReportLengths(_:) started. 􁁛 Test snapshotRoundTripPreservesIdentityAndParameters() passed after 0.001 seconds. 􀟈 Test case passing 1 argument length → 119 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 20 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 257 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 512 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 255 to rejectsIncorrectReportLengths(_:) started. 􁁛 Test rejectsInvalidSettings() passed after 0.001 seconds. 􁁛 Test rejectsUnknownVersionsAndDirtyPadding() passed after 0.001 seconds. 􁁛 Test rejectsEmbeddedNullsInDeviceStrings() passed after 0.001 seconds. 􁁛 Test diagnosticRequestsRequireMinorOneAndEchoTheRevision() passed after 0.001 seconds. 􁁛 Test datasheetSpecificationsRequireASource() passed after 0.001 seconds. 􁁛 Test catalogChangesDoNotAlterProfileSnapshots() passed after 0.001 seconds. 􁁛 Test rejectsInvalidFrequencies(_:) with 5 test cases passed after 0.001 seconds. 􁁛 Test rejectsInvalidFrequencies(_:) with 5 test cases passed after 0.001 seconds. 􁁛 Test rejectsTheWrongNumberOfBands() passed after 0.001 seconds. 􁁛 Test diagnosticRoundTripAndVersionValidation() passed after 0.001 seconds. 􁁛 Test rejectsPersistenceWithoutVerifiedFlash() passed after 0.001 seconds. 􁁛 Test acknowledgementsRequireMatchingRequestAndOperation() passed after 0.001 seconds. 􁁛 Test unknownSpeakerAndVolumeDataRemainAbsent() passed after 0.001 seconds. 􁁛 Test namedProfileRoundTripPreservesSpeakerAndEnclosure() passed after 0.001 seconds. 􁁛 Test rejectsOversizedPayloadAndInvalidRequestID() passed after 0.001 seconds. 􁁛 Test factoryPresetsAreMutedListeningStartingPoints() passed after 0.001 seconds. 􁁛 Test capabilityRoundTripUsesTheSharedBounds() passed after 0.001 seconds. 􁁛 Test directEncodersRejectInvalidProfiles() passed after 0.001 seconds. 􁁛 Test invalidSpeakerValuesAreRejected(_:) with 5 test cases passed after 0.001 seconds. 􁁛 Test invalidRevisionsCannotWrapOrBeSaved() passed after 0.001 seconds. 􁁛 Test rejectsAnEmptyProfileName() passed after 0.001 seconds. 􁁛 Test rejectsUnknownProfileVersionsBeforeDecodingTheirContents() passed after 0.001 seconds. 􁁛 Test jsonDecoderAlsoRejectsInvalidProfileContents() passed after 0.001 seconds. 􁁛 Suite EQResponseTests passed after 0.001 seconds. 􁁛 Test invalidEnclosuresCannotBeSaved() passed after 0.001 seconds. 􁁛 Test rejectsIncorrectReportLengths(_:) with 8 test cases passed after 0.001 seconds. 􁁛 Suite ProfileTests passed after 0.001 seconds. 􁁛 Test matchesTheSharedGoldenPacket() passed after 0.005 seconds. 􁁛 Suite WireCodecTests passed after 0.005 seconds. 􁁛 Test run with 31 tests in 3 suites passed after 0.005 seconds. Building for production... [4 / 17] [11 / 22] NeXTsoundProtocol [16 / 23] NeXTsoundCore Build complete! (1,58 sec)