Source formatting --check completed for 137 Swift files. Swift layout regression cases passed. Linting Swift files at paths ~/Developer/Projects/NeXTsound/App/Application/NeXTsoundApp.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Package.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Commands/AboutCommands.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Commands/FrontPanelCommands.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Commands/LibraryCommands.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/CollapsibleSection.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/ControlCaption.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/KeyBank.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/NumericFieldRow.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/PanelFader.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/PanelLED.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/PanelPushButton.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/PanelReadout.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/PanelTitle.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Controls/SlideToggle.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/DotMatrix/DotMatrixFont.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/DotMatrix/DotMatrixGlyphs.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/DotMatrix/DotMatrixMetrics.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/DotMatrix/DotMatrixText.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/DotMatrix/DotMatrixViews.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Extensions/Color+Hex.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Extensions/UTType+NeXTsoundProfile.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Layout/AboutPanelLayout.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Layout/FrontPanelDisplayLayout.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Layout/FrontPanelLayout.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Layout/LibraryPanelLayout.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Layout/PanelRowLayouts.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Layout/WholePointFrame.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/BoardMonitor.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/DriverLibraryModel.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/DriverModelSelection.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/FlashFirmwareSheetModel.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/FrontPanelEditor.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/FrontPanelSaveFeedback.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/LibraryEditor.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/ProfileLibrary.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/WorkbenchError.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Models/WorkbenchModel.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Modifiers/OnEscapeKey.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Modifiers/OnWindowClose.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Modifiers/PanelFocus.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Modifiers/PanelWindowContent.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Modifiers/ProfileFileDialogs.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Modifiers/VFDGlass.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Persistence/AtomicJSONFile.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Persistence/DriverLibraryStore.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Persistence/ProfileFile.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Persistence/ProfileLibraryStore.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Presentation/AboutInfo.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Presentation/FaderScale.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Presentation/FlashPresentation.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Presentation/FrontPanelStatus.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Presentation/LibraryReadoutLines.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Presentation/ResponseCurve.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Presentation/WorkbenchPresentation.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Services/BoardDiscovery.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Services/BoardTransport.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Services/FlashService.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Services/IOHIDBoardDiscovery.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Services/ProcessPicotoolRunner.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/FrontPanelFonts.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/FrontPanelMotion.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/FrontPanelPalette.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/FrontPanelType.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/HSBComponents.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/InsetShadow.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/PanelMetal.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Theme/PhosphorTheme.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/About/AboutPanel.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/DriverModels/DriverForm.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/DriverModels/DriverLibraryView.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/FlashFirmware/FlashFirmwareSheet.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/FrontPanel/FrontPanelControlRow.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/FrontPanel/FrontPanelDisplay.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/FrontPanel/FrontPanelHeader.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/FrontPanel/FrontPanelView.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/Library/BoardRenameForm.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/Library/LibraryPanel.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/Library/ProfileList.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/Library/SpeakerReadout.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Views/WorkbenchWindows.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Controls/ControlCaptionTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Controls/KeyBankTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/DotMatrix/DotMatrixTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/DotMatrix/DotMatrixWrapTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Layout/FrontPanelDisplayLayoutTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Layout/PanelRowLayoutsTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/BoardMonitorTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/BoardSaveTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/BoardStatusTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/BoardStorageTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/DriverLibraryModelTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/DriverModelSelectionTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/FlashFirmwareSheetModelTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/FrontPanelEditorTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/LibraryEditorTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/ProfileLibraryTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/SpeakerSelectionTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Models/WorkbenchModelTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Modifiers/PanelWindowTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Persistence/DriverLibraryStoreTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Persistence/ProfileFileTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Persistence/ProfileLibraryStoreTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Presentation/AboutInfoTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Presentation/FaderScaleTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Presentation/FlashPresentationTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Presentation/FrontPanelStatusTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Presentation/LibraryReadoutLinesTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Presentation/ResponseCurveTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Presentation/WorkbenchPresentationTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Services/FlashServiceTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Support/Fakes.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Support/RenderedPixels.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Theme/HSBComponentsTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tests/NeXTsoundWorkbenchTests/Views/FrontPanelRenderTests.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tools/NeXTsoundDiagnostics/main.swift, ~/Developer/Projects/NeXTsound/App/Workbench/Tools/NeXTsoundWorkbenchRender/RenderWorkbench.swift, ~/Developer/Projects/NeXTsound/Scripts/swift-layout.swift, ~/Developer/Projects/NeXTsound/Shared/Package.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/BoardIdentity.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/ClosedBoxAlignment.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/DSPSettings.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/DriverCatalog.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/DriverLibrary.swift, ~/Developer/Projects/NeXTsound/Shared/Sources/NeXTsoundCore/DriverRecord.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/ClosedBoxAlignmentTests.swift, ~/Developer/Projects/NeXTsound/Shared/Tests/NeXTsoundCoreTests/DriverLibraryTests.swift, ~/Developer/Projects/NeXTsound/Shared/Tests/NeXTsoundCoreTests/DriverRecordTests.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 'NeXTsoundApp.swift' (1/137) Linting 'AboutCommands.swift' (2/137) Linting 'FrontPanelCommands.swift' (3/137) Linting 'LibraryCommands.swift' (4/137) Linting 'CollapsibleSection.swift' (5/137) Linting 'ControlCaption.swift' (6/137) Linting 'PanelFader.swift' (7/137) Linting 'App/Workbench/Package.swift' (10/137) Linting 'KeyBank.swift' (11/137) Linting 'PanelPushButton.swift' (12/137) Linting 'NumericFieldRow.swift' (8/137) Linting 'PanelLED.swift' (9/137) Linting 'PanelReadout.swift' (13/137) Linting 'PanelTitle.swift' (14/137) Linting 'SlideToggle.swift' (15/137) Linting 'DotMatrixFont.swift' (16/137) Linting 'DotMatrixGlyphs.swift' (17/137) Linting 'DotMatrixMetrics.swift' (18/137) Linting 'DotMatrixText.swift' (19/137) Linting 'DotMatrixViews.swift' (20/137) Linting 'Color+Hex.swift' (21/137) Linting 'UTType+NeXTsoundProfile.swift' (22/137) Linting 'AboutPanelLayout.swift' (23/137) Linting 'FrontPanelDisplayLayout.swift' (24/137) Linting 'FrontPanelLayout.swift' (25/137) Linting 'LibraryPanelLayout.swift' (26/137) Linting 'PanelRowLayouts.swift' (27/137) Linting 'WholePointFrame.swift' (28/137) Linting 'BoardMonitor.swift' (29/137) Linting 'DriverLibraryModel.swift' (30/137) Linting 'DriverModelSelection.swift' (31/137) Linting 'FlashFirmwareSheetModel.swift' (32/137) Linting 'FrontPanelEditor.swift' (33/137) Linting 'FrontPanelSaveFeedback.swift' (34/137) Linting 'LibraryEditor.swift' (35/137) Linting 'ProfileLibrary.swift' (36/137) Linting 'WorkbenchError.swift' (37/137) Linting 'WorkbenchModel.swift' (38/137) Linting 'OnEscapeKey.swift' (39/137) Linting 'OnWindowClose.swift' (40/137) Linting 'PanelFocus.swift' (41/137) Linting 'PanelWindowContent.swift' (42/137) Linting 'ProfileFileDialogs.swift' (43/137) Linting 'VFDGlass.swift' (44/137) Linting 'AtomicJSONFile.swift' (45/137) Linting 'DriverLibraryStore.swift' (46/137) Linting 'ProfileFile.swift' (47/137) Linting 'ProfileLibraryStore.swift' (48/137) Linting 'AboutInfo.swift' (49/137) Linting 'FaderScale.swift' (50/137) Linting 'FlashPresentation.swift' (51/137) Linting 'FrontPanelStatus.swift' (52/137) Linting 'LibraryReadoutLines.swift' (53/137) Linting 'ResponseCurve.swift' (54/137) Linting 'WorkbenchPresentation.swift' (55/137) Linting 'BoardDiscovery.swift' (56/137) Linting 'BoardTransport.swift' (57/137) Linting 'FlashService.swift' (58/137) Linting 'IOHIDBoardDiscovery.swift' (59/137) Linting 'ProcessPicotoolRunner.swift' (60/137) Linting 'FrontPanelFonts.swift' (61/137) Linting 'FrontPanelMotion.swift' (62/137) Linting 'FrontPanelPalette.swift' (63/137) Linting 'FrontPanelType.swift' (64/137) Linting 'HSBComponents.swift' (65/137) Linting 'InsetShadow.swift' (66/137) Linting 'PanelMetal.swift' (67/137) Linting 'PhosphorTheme.swift' (68/137) Linting 'AboutPanel.swift' (69/137) Linting 'DriverForm.swift' (70/137) Linting 'DriverLibraryView.swift' (71/137) Linting 'FlashFirmwareSheet.swift' (72/137) Linting 'FrontPanelControlRow.swift' (73/137) Linting 'FrontPanelDisplay.swift' (74/137) Linting 'FrontPanelHeader.swift' (75/137) Linting 'FrontPanelView.swift' (76/137) Linting 'BoardRenameForm.swift' (77/137) Linting 'LibraryPanel.swift' (78/137) Linting 'ProfileList.swift' (79/137) Linting 'SpeakerReadout.swift' (80/137) Linting 'WorkbenchWindows.swift' (81/137) Linting 'ControlCaptionTests.swift' (82/137) Linting 'KeyBankTests.swift' (83/137) Linting 'DotMatrixTests.swift' (84/137) Linting 'DotMatrixWrapTests.swift' (85/137) Linting 'FrontPanelDisplayLayoutTests.swift' (86/137) Linting 'PanelRowLayoutsTests.swift' (87/137) Linting 'BoardMonitorTests.swift' (88/137) Linting 'BoardSaveTests.swift' (89/137) Linting 'BoardStatusTests.swift' (90/137) Linting 'BoardStorageTests.swift' (91/137) Linting 'DriverLibraryModelTests.swift' (92/137) Linting 'DriverModelSelectionTests.swift' (93/137) Linting 'FlashFirmwareSheetModelTests.swift' (94/137) Linting 'FrontPanelEditorTests.swift' (95/137) Linting 'LibraryEditorTests.swift' (96/137) Linting 'ProfileLibraryTests.swift' (97/137) Linting 'SpeakerSelectionTests.swift' (98/137) Linting 'WorkbenchModelTests.swift' (99/137) Linting 'PanelWindowTests.swift' (100/137) Linting 'DriverLibraryStoreTests.swift' (101/137) Linting 'ProfileFileTests.swift' (102/137) Linting 'ProfileLibraryStoreTests.swift' (103/137) Linting 'AboutInfoTests.swift' (104/137) Linting 'FaderScaleTests.swift' (105/137) Linting 'FlashPresentationTests.swift' (106/137) Linting 'FrontPanelStatusTests.swift' (107/137) Linting 'LibraryReadoutLinesTests.swift' (108/137) Linting 'ResponseCurveTests.swift' (109/137) Linting 'WorkbenchPresentationTests.swift' (110/137) Linting 'FlashServiceTests.swift' (111/137) Linting 'Fakes.swift' (112/137) Linting 'RenderedPixels.swift' (113/137) Linting 'HSBComponentsTests.swift' (114/137) Linting 'FrontPanelRenderTests.swift' (115/137) Linting 'main.swift' (116/137) Linting 'RenderWorkbench.swift' (117/137) Linting 'swift-layout.swift' (118/137) Linting 'BoardIdentity.swift' (119/137) Linting 'Shared/Package.swift' (120/137) Linting 'ClosedBoxAlignment.swift' (121/137) Linting 'DSPSettings.swift' (122/137) Linting 'DriverCatalog.swift' (123/137) Linting 'DriverLibrary.swift' (124/137) Linting 'DriverRecord.swift' (125/137) Linting 'EQResponse.swift' (126/137) Linting 'FactoryPreset.swift' (127/137) Linting 'SoundProfile.swift' (128/137) Linting 'SpeakerEnclosure.swift' (129/137) Linting 'WireCodec.swift' (130/137) Linting 'WireModels.swift' (131/137) Linting 'ClosedBoxAlignmentTests.swift' (132/137) Linting 'DriverLibraryTests.swift' (133/137) Linting 'DriverRecordTests.swift' (134/137) Linting 'EQResponseTests.swift' (135/137) Linting 'ProfileTests.swift' (136/137) Linting 'WireCodecTests.swift' (137/137) Done linting! Found 0 violations, 0 serious in 137 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/180] 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/180] 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' [3/180] 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" [4/180] 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. [5/180] Completed 'picotoolBuild' [6/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_platform_common/common.c.o [7/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2350/pico_platform/platform.c.o [8/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_sync/sync.c.o [9/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/hardware_claim/claim.c.o [10/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.o [11/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.o [12/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_sync_spin_lock/sync_spin_lock.c.o [13/180] Building C object CMakeFiles/nxs_firmware.dir/USB/descriptors.c.o [14/180] Building C object CMakeFiles/nxs_firmware.dir/USB/reset.c.o [15/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/sem.c.o [16/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_platform_panic/panic.c.o [17/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.o [18/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/lock_core.c.o [19/180] Building C object CMakeFiles/nxs_firmware.dir/Platform/flash_storage.c.o [20/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/critical_section.c.o [21/180] Building C object CMakeFiles/nxs_firmware.dir/Platform/i2s.c.o [22/180] Building C object CMakeFiles/nxs_firmware.dir/USB/control.c.o [23/180] Building C object CMakeFiles/nxs_firmware.dir/Platform/engine.c.o [24/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_time/timeout_helper.c.o [25/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/mutex.c.o [26/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_irq/irq.c.o [27/180] Building C object CMakeFiles/nxs_firmware.dir/main.c.o [28/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_ticks/ticks.c.o [29/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_pll/pll.c.o [30/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.o [31/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_util/datetime.c.o [32/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_util/queue.c.o [33/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_uart/uart.c.o [34/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_bootrom/bootrom_lock.c.o [35/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_boot_lock/boot_lock.c.o [36/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime/runtime.c.o [37/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.o [38/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.o [39/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_divider/divider.c.o [40/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_flash/flash.c.o [41/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.o [42/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_stack_guard.c.o [43/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.o [44/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_clocks.c.o [45/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_aeabi_dcp.S.o [46/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_fma_dcp.S.o [47/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_timer/timer.c.o [48/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_sci_m33.S.o [49/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_conv_m33.S.o [50/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.o [51/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_util/pheap.c.o [52/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init.c.o [53/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_conv32_vfp.S.o [54/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_common_m33.S.o [55/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_sci_m33_vfp.S.o [56/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_divider/divider_compiler.c.o [57/180] Building ASM object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_crt0/crt0.S.o [58/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_standard_binary_info/standard_binary_info.c.o [59/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_atomic/atomic.c.o [60/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_malloc/malloc.c.o [61/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_xip_cache/xip_cache.c.o [62/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_time/time.c.o [63/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_unique_id/unique_id.c.o [64/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/cdc/cdc_device.c.o [65/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_stdio/stdio.c.o [66/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_multicore/multicore.c.o [67/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_flash/flash.c.o [68/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_math.c.o [69/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_clib_interface/newlib_interface.c.o [70/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/dfu/dfu_device.c.o [71/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_math.c.o [72/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c.o [73/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/dfu/dfu_rt_device.c.o [74/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/midi/midi2_device.c.o [75/180] Building CXX object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_cxx_options/new_delete.cpp.o [76/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/midi/midi_device.c.o [77/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c.o [78/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/msc/msc_device.c.o [79/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/mtp/mtp_device.c.o [80/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/net/ncm_device.c.o [81/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/net/ecm_rndis_device.c.o [82/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/usbtmc/usbtmc_device.c.o [83/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/video/video_device.c.o [84/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/printer/printer_device.c.o [85/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/vendor/vendor_device.c.o [86/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_printf/printf.c.o [87/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c.o [88/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2350/pico_platform/platform.c.o [89/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_platform_common/common.c.o [90/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/hid/hid_device.c.o [91/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_stdlib/stdlib.c.o [92/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_platform_panic/panic.c.o [93/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/hardware_claim/claim.c.o [94/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_sync/sync.c.o [95/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_dma/dma.c.o [96/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/device/usbd.c.o [97/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/audio/audio_device.c.o [98/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_irq/irq_handler_chain.S.o [99/180] Building C object CMakeFiles/nxs_flash_probe.dir/Probes/flash_probe.c.o [100/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_sync_spin_lock/sync_spin_lock.c.o [101/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_gpio/gpio.c.o [102/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/hw/bsp/rp2040/family.c.o [103/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/lock_core.c.o [104/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/critical_section.c.o [105/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/sem.c.o [106/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/tusb.c.o [107/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_time/timeout_helper.c.o [108/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_util/datetime.c.o [109/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_pll/pll.c.o [110/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/common/tusb_fifo.c.o [111/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_vreg/vreg.c.o [112/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_irq/irq.c.o [113/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_sync/mutex.c.o [114/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_ticks/ticks.c.o [115/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_uart/uart.c.o [116/180] Building C object CMakeFiles/nxs_firmware.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_pio/pio.c.o [117/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_watchdog/watchdog.c.o [118/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_bootrom/bootrom_lock.c.o [119/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_boot_lock/boot_lock.c.o [120/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_divider/divider.c.o [121/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_flash/flash.c.o [122/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime/runtime.c.o [123/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_xosc/xosc.c.o [124/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_util/queue.c.o [125/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_bit_ops/bit_ops_aeabi.S.o [126/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_aeabi_dcp.S.o [127/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_timer/timer.c.o [128/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_fma_dcp.S.o [129/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_bootrom/bootrom.c.o [130/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_conv_m33.S.o [131/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_sci_m33.S.o [132/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_stack_guard.c.o [133/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_conv32_vfp.S.o [134/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_common_m33.S.o [135/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_sci_m33_vfp.S.o [136/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init_clocks.c.o [137/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_clocks/clocks.c.o [138/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_util/pheap.c.o [139/180] Building ASM object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_crt0/crt0.S.o [140/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_divider/divider_compiler.c.o [141/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_runtime_init/runtime_init.c.o [142/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_standard_binary_info/standard_binary_info.c.o [143/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_malloc/malloc.c.o [144/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_atomic/atomic.c.o [145/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/common/pico_time/time.c.o [146/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_xip_cache/xip_cache.c.o [147/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_float/float_math.c.o [148/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_unique_id/unique_id.c.o [149/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_stdio_usb/stdio_usb_descriptors.c.o [150/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_stdio_usb/reset_interface.c.o [151/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/hardware_flash/flash.c.o [152/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_clib_interface/newlib_interface.c.o [153/180] Building CXX object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_cxx_options/new_delete.cpp.o [154/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_stdio_usb/stdio_usb.c.o [155/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/audio/audio_device.c.o [156/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/dfu/dfu_device.c.o [157/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/dfu/dfu_rt_device.c.o [158/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/hid/hid_device.c.o [159/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_double/double_math.c.o [160/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_stdio/stdio.c.o [161/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/msc/msc_device.c.o [162/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/mtp/mtp_device.c.o [163/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/midi/midi_device.c.o [164/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/net/ecm_rndis_device.c.o [165/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/midi/midi2_device.c.o [166/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/printer/printer_device.c.o [167/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/net/ncm_device.c.o [168/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/rp2040_usb.c.o [169/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/usbtmc/usbtmc_device.c.o [170/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/video/video_device.c.o [171/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/cdc/cdc_device.c.o [172/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/portable/raspberrypi/rp2040/dcd_rp2040.c.o [173/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_fix/rp2040_usb_device_enumeration/rp2040_usb_device_enumeration.c.o [174/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/src/rp2_common/pico_printf/printf.c.o [175/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/class/vendor/vendor_device.c.o [176/180] Linking CXX executable nxs_firmware.elf [177/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/tusb.c.o [178/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/device/usbd.c.o [179/180] Building C object CMakeFiles/nxs_flash_probe.dir~/Developer/Projects/NeXTsound/.tools/pico-sdk/lib/tinyusb/src/common/tusb_fifo.c.o [180/180] Linking CXX executable nxs_flash_probe.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 68252 0 18456 86708 152b4 ~/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: 953d75d4 description: USB audio and HID control mono I2S muted start binary start: 0x10000000 binary end: 0x1000f29c 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 24 2026 build attributes: Release Metadata Block 1 address: 0x10000138 next block address: 0x1000f288 block type: image def target chip: RP2350 image type: ARM Secure extra security: not enabled Metadata Block 2 address: 0x1000f288 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 ninja: no work to do. Test project ~/Developer/Projects/NeXTsound/.build/c-protocol Start 1: protocol 1/20 Test #1: protocol ......................... Passed 0.03 sec Start 2: dsp 2/20 Test #2: dsp .............................. Passed 0.08 sec Start 3: device 3/20 Test #3: device ........................... Passed 0.01 sec Start 4: storage 4/20 Test #4: storage .......................... Passed 0.18 sec Start 5: flash_geometry 5/20 Test #5: flash_geometry ................... Passed 0.01 sec Start 6: audio 6/20 Test #6: audio ............................ Passed 0.02 sec Start 7: render 7/20 Test #7: render ........................... Passed 0.01 sec Start 8: pio 8/20 Test #8: pio .............................. Passed 0.01 sec Start 9: descriptor 9/20 Test #9: descriptor ....................... Passed 0.01 sec Start 10: feedback 10/20 Test #10: feedback ......................... Passed 0.01 sec Start 11: reset 11/20 Test #11: reset ............................ Passed 0.01 sec Start 12: control 12/20 Test #12: control .......................... Passed 0.01 sec Start 13: control_mount 13/20 Test #13: control_mount .................... Passed 0.01 sec Start 14: control_packet 14/20 Test #14: control_packet ................... Passed 0.01 sec Start 15: control_short-read 15/20 Test #15: control_short-read ............... Passed 0.01 sec Start 16: control_inflight 16/20 Test #16: control_inflight ................. Passed 0.01 sec Start 17: control_storage-status 17/20 Test #17: control_storage-status ........... Passed 0.01 sec Start 18: control_storage-flow 18/20 Test #18: control_storage-flow ............. Passed 0.01 sec Start 19: control_reset-flow 19/20 Test #19: control_reset-flow ............... Passed 0.01 sec Start 20: rp2_iso 20/20 Test #20: rp2_iso .......................... Passed 0.01 sec 100% tests passed out of 20 Total Test time (real) = 0.49 sec Building for debugging... [1 / 3] Build complete! (0,37 sec) Test Suite 'All tests' started at 2026-10-24 17:53:07.092. Test Suite 'All tests' passed at 2026-10-24 17:53:07.097. 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 ClosedBoxAlignmentTests started. 􀟈 Suite DriverLibraryTests started. 􀟈 Suite ProfileTests started. 􀟈 Suite WireCodecTests started. 􀟈 Suite EQResponseTests started. 􀟈 Suite DriverRecordTests started. 􀟈 Test insertingAddsANewDriver() started. 􀟈 Test catalogChangesDoNotAlterProfileSnapshots() started. 􀟈 Test rejectsUnknownProfileVersionsBeforeDecodingTheirContents() started. 􀟈 Test unknownSpeakerAndVolumeDataRemainAbsent() started. 􀟈 Test invalidEnclosuresCannotBeSaved() started. 􀟈 Test factoryPresetsAreMutedListeningStartingPoints() started. 􀟈 Test invalidRevisionsCannotWrapOrBeSaved() started. 􀟈 Test datasheetSpecificationsRequireASource() started. 􀟈 Test directEncodersRejectInvalidProfiles() started. 􀟈 Test updatingAnUnknownDriverIsRejected() started. 􀟈 Test invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test namedProfileRoundTripPreservesSpeakerAndEnclosure() started. 􀟈 Test removingLeavesTheRemainingDrivers() started. 􀟈 Test insertingADuplicateIdentifierIsRejected() started. 􀟈 Test jsonDecoderAlsoRejectsInvalidProfileContents() started. 􀟈 Test removingTheLastDriverIsRejected() started. 􀟈 Test aFreshLibraryIsSeededWithTheKnownCandidates() started. 􀟈 Test rejectsAnEmptyProfileName() started. 􀟈 Test speakerRecordCopiesADriversIdentityElectricalsAndProvenance() started. 􀟈 Test updatingReplacesTheMatchingEntry() started. 􀟈 Test rejectsUnknownVersionsAndDirtyPadding() started. 􀟈 Test aLibraryWithNoDriversIsRejected() started. 􀟈 Test deviceNameDecodeRejectsTheWrongPayloadLength() started. 􀟈 Test duplicateDriverIDsAreRejected() started. 􀟈 Test removingAnUnknownDriverIsRejected() started. 􀟈 Test diagnosticRoundTripAndVersionValidation() started. 􀟈 Test runtimeStatusRoundTripPreservesDiagnostics() started. 􀟈 Test setNameOperationRoundTripsThroughTheWireMessage() started. 􀟈 Test capabilityRoundTripAllowsAnEmptyDeviceName() started. 􀟈 Test rejectsPersistenceWithoutVerifiedFlash() started. 􀟈 Test aLibraryRoundTripsThroughJSON() started. 􀟈 Test rejectsTheWrongNumberOfBands() started. 􀟈 Test rejectsInvalidFrequencies(_:) started. 􀟈 Test capabilityRoundTripUsesTheSharedBounds() started. 􀟈 Test diagnosticRequestsRequireMinorOneAndEchoTheRevision() started. 􀟈 Test acknowledgementsRequireMatchingRequestAndOperation() started. 􀟈 Test rejectsOversizedPayloadAndInvalidRequestID() started. 􀟈 Test matchesTheSharedGoldenPacket() started. 􀟈 Test deviceNameRoundTripPreservesSpacesAndClearsPadding() started. 􀟈 Test rejectsInvalidFrequencies(_:) started. 􀟈 Test snapshotRoundTripPreservesIdentityAndParameters() started. 􀟈 Test anInvalidEntryFailsLibraryValidation() started. 􀟈 Test highPassHasTheButterworthCutoffResponse() started. 􀟈 Test capabilityRoundTripPreservesTheDeviceName() started. 􀟈 Test rejectsInvalidSettings() started. 􀟈 Test rejectsEmbeddedNullsInDeviceStrings() started. 􀟈 Test peakingResponseUsesTheFirmwareCoefficients() started. 􀟈 Test previewExcludesMuteAttenuationAndNonlinearLimiting() started. 􀟈 Test rejectsIncorrectReportLengths(_:) started. 􀟈 Test missingEquivalentComplianceVolumeIsRejectedByName() started. 􀟈 Test missingResonantFrequencyIsRejectedByName() started. 􀟈 Test aSmallBoxRelativeToVasRaisesFcAndQtcSubstantially() started. 􀟈 Test deviceNameRejectsEmbeddedNullsAndOversizedNames() started. 􀟈 Test case passing 1 argument impedance → -1.0 to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument impedance → 0.0 to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument impedance → inf to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test enclosureConvenienceInitializerReadsVbFromTheEnclosuresOwnVolume() started. 􀟈 Test missingTotalQIsRejectedByName() started. 􀟈 Test case passing 1 argument impedance → -inf to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test referenceDriverInTheFixedEnclosureYieldsBesselAlignment() started. 􀟈 Test case passing 1 argument impedance → nan to invalidSpeakerValuesAreRejected(_:) started. 􀟈 Test aNonPositiveMountingHoleCountIsRejected() started. 􀟈 Test driverWithoutQtsOrVasCannotProduceAnAlignment() started. 􀟈 Test anEmptyNameIsRejected() started. 􀟈 Test driverConvenienceInitializerReadsFsQtsVasFromTheRecord() started. 􀟈 Test zeroComplianceRatioLeavesFcAndQtcAtTheFreeAirValues() started. 􀟈 Test classifiesTotalQIntoTheNamedAlignment(totalQ:expected:) started. 􀟈 Test nonFiniteOrNonPositiveNetVolumeIsRejected() started. 􀟈 Test theSeedDriverUsesTheFullDatasheetParameterSet() started. 􀟈 Test nonHTTPSourceURLsAreRejected() started. 􀟈 Test missingValuesStayAbsent() started. 􀟈 Test correctionGainDbCancelsTheAlignmentsOwnGainAtItsCornerFrequency() started. 􀟈 Test invalidNumericValuesAreRejected(_:) started. 􀟈 Test theSeedDriverValidates() started. 􀟈 Test aDatasheetOriginRequiresASource() started. 􀟈 Test enclosureWithoutAVolumeIsRejectedByName() started. 􀟈 Test aDriverRoundTripsThroughJSON() 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 → 25000.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → -1.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → 0.0 to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → 24000.0 to rejectsInvalidFrequencies(_:) started. 􁁛 Test insertingAddsANewDriver() passed after 0.001 seconds. 􀟈 Test case passing 1 argument frequency → inf to rejectsInvalidFrequencies(_:) started. 􀟈 Test case passing 1 argument frequency → nan to rejectsInvalidFrequencies(_:) started. 􁁛 Test catalogChangesDoNotAlterProfileSnapshots() passed after 0.001 seconds. 􀟈 Test case passing 1 argument length → 0 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 1 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 19 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 20 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 119 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 255 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 257 to rejectsIncorrectReportLengths(_:) started. 􀟈 Test case passing 1 argument length → 512 to rejectsIncorrectReportLengths(_:) started. 􁁛 Test invalidEnclosuresCannotBeSaved() passed after 0.001 seconds. 􁁛 Test invalidSpeakerValuesAreRejected(_:) with 5 test cases passed after 0.001 seconds. 􁁛 Test invalidRevisionsCannotWrapOrBeSaved() passed after 0.001 seconds. 􁁛 Test datasheetSpecificationsRequireASource() passed after 0.001 seconds. 􁁛 Test updatingAnUnknownDriverIsRejected() passed after 0.001 seconds. 􁁛 Test insertingADuplicateIdentifierIsRejected() passed after 0.001 seconds. 􁁛 Test aFreshLibraryIsSeededWithTheKnownCandidates() passed after 0.001 seconds. 􁁛 Test rejectsUnknownProfileVersionsBeforeDecodingTheirContents() passed after 0.001 seconds. 􁁛 Test removingLeavesTheRemainingDrivers() passed after 0.001 seconds. 􁁛 Test directEncodersRejectInvalidProfiles() passed after 0.001 seconds. 􁁛 Test removingTheLastDriverIsRejected() passed after 0.001 seconds. 􁁛 Test unknownSpeakerAndVolumeDataRemainAbsent() passed after 0.001 seconds. 􁁛 Test speakerRecordCopiesADriversIdentityElectricalsAndProvenance() passed after 0.001 seconds. 􁁛 Test rejectsAnEmptyProfileName() passed after 0.001 seconds. 􀟈 Test case passing 2 arguments totalQ → 0.707, expected → .butterworth to classifiesTotalQIntoTheNamedAlignment(totalQ:expected:) started. 􀟈 Test case passing 2 arguments totalQ → 0.55, expected → .bessel to classifiesTotalQIntoTheNamedAlignment(totalQ:expected:) started. 􀟈 Test case passing 2 arguments totalQ → 0.3, expected → .overdamped to classifiesTotalQIntoTheNamedAlignment(totalQ:expected:) started. 􀟈 Test case passing 2 arguments totalQ → 1.2, expected → .underdamped to classifiesTotalQIntoTheNamedAlignment(totalQ:expected:) started. 􀟈 Test case passing 2 arguments totalQ → 0.9, expected → .chebyshev to classifiesTotalQIntoTheNamedAlignment(totalQ:expected:) started. 􀟈 Test case passing 1 argument value → 0.0 to invalidNumericValuesAreRejected(_:) started. 􁁛 Test updatingReplacesTheMatchingEntry() passed after 0.001 seconds. 􀟈 Test case passing 1 argument value → inf to invalidNumericValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument value → -inf to invalidNumericValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument value → -1.0 to invalidNumericValuesAreRejected(_:) started. 􀟈 Test case passing 1 argument value → nan to invalidNumericValuesAreRejected(_:) started. 􁁛 Test aLibraryWithNoDriversIsRejected() passed after 0.001 seconds. 􁁛 Test deviceNameDecodeRejectsTheWrongPayloadLength() passed after 0.001 seconds. 􁁛 Test runtimeStatusRoundTripPreservesDiagnostics() passed after 0.001 seconds. 􁁛 Test rejectsTheWrongNumberOfBands() passed after 0.001 seconds. 􁁛 Test rejectsUnknownVersionsAndDirtyPadding() passed after 0.001 seconds. 􁁛 Test duplicateDriverIDsAreRejected() passed after 0.001 seconds. 􁁛 Test setNameOperationRoundTripsThroughTheWireMessage() passed after 0.001 seconds. 􁁛 Test jsonDecoderAlsoRejectsInvalidProfileContents() passed after 0.002 seconds. 􁁛 Test removingAnUnknownDriverIsRejected() passed after 0.001 seconds. 􁁛 Test rejectsInvalidFrequencies(_:) with 5 test cases passed after 0.001 seconds. 􁁛 Test rejectsPersistenceWithoutVerifiedFlash() passed after 0.001 seconds. 􁁛 Test rejectsOversizedPayloadAndInvalidRequestID() passed after 0.001 seconds. 􁁛 Test diagnosticRequestsRequireMinorOneAndEchoTheRevision() passed after 0.001 seconds. 􁁛 Test acknowledgementsRequireMatchingRequestAndOperation() passed after 0.001 seconds. 􁁛 Test deviceNameRoundTripPreservesSpacesAndClearsPadding() passed after 0.001 seconds. 􁁛 Test capabilityRoundTripAllowsAnEmptyDeviceName() passed after 0.001 seconds. 􁁛 Test capabilityRoundTripUsesTheSharedBounds() passed after 0.001 seconds. 􁁛 Test highPassHasTheButterworthCutoffResponse() passed after 0.001 seconds. 􁁛 Test snapshotRoundTripPreservesIdentityAndParameters() passed after 0.001 seconds. 􁁛 Test rejectsInvalidFrequencies(_:) with 5 test cases passed after 0.001 seconds. 􁁛 Test capabilityRoundTripPreservesTheDeviceName() passed after 0.001 seconds. 􁁛 Test diagnosticRoundTripAndVersionValidation() passed after 0.001 seconds. 􁁛 Test rejectsEmbeddedNullsInDeviceStrings() passed after 0.001 seconds. 􁁛 Test aSmallBoxRelativeToVasRaisesFcAndQtcSubstantially() passed after 0.001 seconds. 􁁛 Test anInvalidEntryFailsLibraryValidation() passed after 0.002 seconds. 􁁛 Test rejectsInvalidSettings() passed after 0.001 seconds. 􁁛 Test peakingResponseUsesTheFirmwareCoefficients() passed after 0.001 seconds. 􁁛 Test missingEquivalentComplianceVolumeIsRejectedByName() passed after 0.001 seconds. 􁁛 Test rejectsIncorrectReportLengths(_:) with 8 test cases passed after 0.001 seconds. 􁁛 Test previewExcludesMuteAttenuationAndNonlinearLimiting() passed after 0.001 seconds. 􁁛 Test aLibraryRoundTripsThroughJSON() passed after 0.002 seconds. 􁁛 Test deviceNameRejectsEmbeddedNullsAndOversizedNames() passed after 0.001 seconds. 􁁛 Test missingTotalQIsRejectedByName() passed after 0.001 seconds. 􁁛 Test zeroComplianceRatioLeavesFcAndQtcAtTheFreeAirValues() passed after 0.001 seconds. 􁁛 Test anEmptyNameIsRejected() passed after 0.001 seconds. 􁁛 Test driverConvenienceInitializerReadsFsQtsVasFromTheRecord() passed after 0.001 seconds. 􁁛 Test missingResonantFrequencyIsRejectedByName() passed after 0.001 seconds. 􁁛 Test referenceDriverInTheFixedEnclosureYieldsBesselAlignment() passed after 0.001 seconds. 􁁛 Test enclosureConvenienceInitializerReadsVbFromTheEnclosuresOwnVolume() passed after 0.001 seconds. 􁁛 Test driverWithoutQtsOrVasCannotProduceAnAlignment() passed after 0.001 seconds. 􁁛 Test nonFiniteOrNonPositiveNetVolumeIsRejected() passed after 0.001 seconds. 􁁛 Test aNonPositiveMountingHoleCountIsRejected() passed after 0.001 seconds. 􁁛 Test classifiesTotalQIntoTheNamedAlignment(totalQ:expected:) with 5 test cases passed after 0.001 seconds. 􁁛 Test nonHTTPSourceURLsAreRejected() passed after 0.001 seconds. 􁁛 Test theSeedDriverValidates() passed after 0.001 seconds. 􁁛 Test theSeedDriverUsesTheFullDatasheetParameterSet() passed after 0.001 seconds. 􁁛 Test correctionGainDbCancelsTheAlignmentsOwnGainAtItsCornerFrequency() passed after 0.001 seconds. 􁁛 Test enclosureWithoutAVolumeIsRejectedByName() passed after 0.001 seconds. 􁁛 Test missingValuesStayAbsent() passed after 0.001 seconds. 􁁛 Test invalidNumericValuesAreRejected(_:) with 5 test cases passed after 0.001 seconds. 􁁛 Test aDatasheetOriginRequiresASource() passed after 0.001 seconds. 􁁛 Test aDriverRoundTripsThroughJSON() passed after 0.001 seconds. 􁁛 Suite EQResponseTests passed after 0.002 seconds. 􁁛 Suite DriverLibraryTests passed after 0.002 seconds. 􁁛 Suite DriverRecordTests passed after 0.002 seconds. 􁁛 Suite ClosedBoxAlignmentTests passed after 0.002 seconds. 􁁛 Test factoryPresetsAreMutedListeningStartingPoints() passed after 0.003 seconds. 􁁛 Test namedProfileRoundTripPreservesSpeakerAndEnclosure() passed after 0.003 seconds. 􁁛 Suite ProfileTests passed after 0.004 seconds. 􁁛 Test matchesTheSharedGoldenPacket() passed after 0.003 seconds. 􁁛 Suite WireCodecTests passed after 0.004 seconds. 􁁛 Test run with 72 tests in 6 suites passed after 0.004 seconds. Building for production... [Planning deferred tasks] [7 / 20] [14 / 25] NeXTsoundProtocol [19 / 26] NeXTsoundCore Build complete! (2,26 sec) Arm 15.3.1 and Pico SDK a1438dff1d38bd9c65dbd693f0e5db4b9ae91779 ready. -- Using the single-header code from ~/Developer/Projects/NeXTsound/.tools/picotool-usb/lib/nlohmann_json/single_include/ lib/mbedtls submodule needs to be initialized for bintool hashing/signing mbedtls not found - no signing/hashing support will be built -- Configuring done (0.1s) -- Generating done (0.0s) -- Build files have been written to: ~/Developer/Projects/NeXTsound/.build/picotool-usb [1/12] Performing build step for 'enc_bootloader' ninja: no work to do. [2/12] Performing build step for 'xip_ram_perms' ninja: no work to do. [3/12] Performing build step for 'flash_id' ninja: no work to do. [4/12] Performing build step for 'otp_header_parser' ninja: no work to do. [5/12] No install step for 'enc_bootloader' [6/12] No install step for 'flash_id' [7/12] No install step for 'xip_ram_perms' [8/12] No install step for 'otp_header_parser' [9/12] Completed 'flash_id' [10/12] Completed 'otp_header_parser' [11/12] Completed 'enc_bootloader' [12/12] Completed 'xip_ram_perms' picotool 2041936441b48a3cc53ae3da9e805229fe8f4e18 with USB support ready at ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Resources/picotool Building for debugging... Build complete! (0,31 sec) Test Suite 'All tests' started at 2026-10-24 17:53:11.455. Test Suite 'All tests' passed at 2026-10-24 17:53:11.460. 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 FrontPanelEditorTests started. 􀟈 Suite LibraryEditorTests started. 􀟈 Suite FlashPresentationTests started. 􀟈 Suite ControlCaptionTests started. 􀟈 Suite BoardConnectionStatePresentationTests started. 􀟈 Suite LibraryReadoutLinesTests started. 􀟈 Suite SpeakerSelectionTests started. 􀟈 Suite ProfileLibraryTests started. 􀟈 Suite BoardMonitorTests started. 􀟈 Suite FrontPanelMessageTests started. 􀟈 Suite DriverRecordPresentationTests started. 􀟈 Suite FrontPanelRenderTests started. 􀟈 Suite BoardStorageTests started. 􀟈 Suite HSBComponentsTests started. 􀟈 Suite KeyBankNavigationTests started. 􀟈 Suite FaderScaleTests started. 􀟈 Suite AboutInfoTests started. 􀟈 Suite DriverModelSelectionTests started. 􀟈 Suite MomentaryKeyBankTests started. 􀟈 Suite FrontPanelDisplayLayoutTests started. 􀟈 Suite FlashFirmwareSheetModelTests started. 􀟈 Suite DriverLibraryModelTests started. 􀟈 Suite BoardStatusTests started. 􀟈 Suite DotMatrixWrapTests started. 􀟈 Suite DriverLibraryStoreTests started. 􀟈 Suite WorkbenchModelTests started. 􀟈 Suite SharedWidthRowTests started. 􀟈 Suite PanelWindowTests started. 􀟈 Suite ProfileLibraryStoreTests started. 􀟈 Suite FrontPanelStatusTests started. 􀟈 Suite DotMatrixTests started. 􀟈 Suite ResponseCurveTests started. 􀟈 Suite BoardSaveTests started. 􀟈 Suite ProfileFileTests started. 􀟈 Suite ProfileListLinesTests started. 􀟈 Suite FlashServiceTests started. 􀟈 Suite KeyColorTests started. 􀟈 Test resettingABandRestoresTheBandOfANewProfile() started. 􀟈 Test anEditFromAControlGoesThroughTheProfilesEditPath() started. 􀟈 Test aSpeakerIdentifierSelectsItsDriver() started. 􀟈 Test aCaptionAsNarrowAsItsWidestWordBreaksOnlyBetweenWords() started. 􀟈 Test onlyAVerifiedBoardHasCapabilities() started. 􀟈 Test aRunningPhaseReadsAsATitle() started. 􀟈 Test theRestartFollowsTheBoardsConnection() started. 􀟈 Test theLastProfileCannotBeDeleted() started. 􀟈 Test anEditFromAControlCanBeUndone() started. 􀟈 Test renamingGoesThroughTheProfilesEditPath() started. 􀟈 Test theSoundBoxNameBreaksBetweenItsWords() started. 􀟈 Test theSoundBoxShowsItsNameOnlyWhileVerified() started. 􀟈 Test anIdentifierSelectsItsProfile() started. 􀟈 Test keepingTheNameChangesNothing() started. 􀟈 Test theProfileKeysAddDeleteImportAndExport() started. 􀟈 Test updatingSelectedAdvancesRevisionAndKeepsIdentity() started. 􀟈 Test removingSelectsARemainingProfile() started. 􀟈 Test reconnectingAfterADisconnectVerifiesAgain() started. 􀟈 Test everyDotIsThreeByThreeDevicePixelsAtScaleTwo() started. 􀟈 Test connectingMovesToVerifiedOnMatchingSerial() started. 􀟈 Test selectingALineSelectsItsProfile() started. 􀟈 Test noSpeakerReadsNotSelectedAStepDimmer() started. 􀟈 Test aSpeakerChoiceReachesTheSelectedProfile() started. 􀟈 Test insertingAddsAndSelectsANewProfile() started. 􀟈 Test restoringContentsRevertsAPriorMutationAndAdvancesRevision() started. 􀟈 Test eachMessageGivesWayToTheOnesBeforeIt() started. 􀟈 Test selectingNilClearsTheSpeaker() started. 􀟈 Test theMountingHoleCountRoundsToWholeHoles() started. 􀟈 Test selectingASpeakerSnapshotsTheDriverRatherThanReferencingItLive() started. 􀟈 Test insertingADifferingProfileWithAnExistingIdentityIsRejected() started. 􀟈 Test aDriverModelWithoutANameReadsUntitled() started. 􀟈 Test settingTheDeviceNameRefreshesTheVerifiedCapabilities() started. 􀟈 Test selectedIDMustReferenceAProfile() started. 􀟈 Test removingTheLastProfileIsRejected() started. 􀟈 Test anEmptyManufacturerOrModelMeansNone() started. 􀟈 Test aDisabledMonitorNeverStartsDiscovery() started. 􀟈 Test theSpeakerBreaksBetweenItsWordsAndKeepsItsModel() started. 􀟈 Test insertingTheSameIdentityAndContentsSelectsItWithoutDuplicating() started. 􀟈 Test aMismatchShowsItsReasonAsAnError() started. 􀟈 Test nothingIsSaidWithoutABoardOrNews() started. 􀟈 Test theCurveTakesTheStatusColumnsRoomWhileTheColumnIsOut() started. 􀟈 Test aFailedRenameLeavesTheStateUnchanged() started. 􀟈 Test everyAboutDotIsThreeByThreeDevicePixelsAtScaleTwo() started. 􀟈 Test aFailedCapabilityQueryIsReportedAsMismatched() started. 􀟈 Test theDotsTakeTheEnvironmentsDisplayColor() started. 􀟈 Test theProfileLimitIsEnforced() started. 􀟈 Test aFailedStorageReadsAsAnError() started. 􀟈 Test theArrowKeysMoveOneKeyAndWrapAroundAtTheEnds() started. 􀟈 Test everyLibraryDotIsThreeByThreeDevicePixelsAtScaleTwo() started. 􀟈 Test emptyOrDuplicateIdentitiesAreRejected() started. 􀟈 Test selectingASpeakerSupportsUndo() started. 􀟈 Test theSourcesReadAsOneURLPerLine() started. 􀟈 Test eachPanelSetsTheDisplayColorItKeeps() started. 􀟈 Test aColorSplitsIntoHueSaturationAndBrightness() started. 􀟈 Test selectingASpeakerWithFullThieleSmallDataSetsTheFirstBandToTheQtcCorrection() started. 􀟈 Test disconnectingReturnsToDisconnectedAndDiscardsAPendingReply() started. 􀟈 Test settingTheDeviceNameFailsWithoutAConnectedBoard() started. 􀟈 Test oversizedFilesAreRejectedOnDecode() started. 􀟈 Test startsDisconnected() started. 􀟈 Test bothScalesClampToTheRange() started. 􀟈 Test theAboutWindowDrawsItsIconAtFullResolution() started. 􀟈 Test selectingASpeakerMissingVasLeavesTheHighPassAndFirstBandUnchanged() started. 􀟈 Test selectingASpeakerWithFullThieleSmallDataSetsTheHighPassFromTheClosedBoxAlignment() started. 􀟈 Test startsWithOneSelectedProfile() started. 􀟈 Test disconnectingForgetsTheStorageState() started. 􀟈 Test applyingMovesASavedBoardToUnsaved() started. 􀟈 Test aLinearScaleMapsTheRangeOntoTheTravel() started. 􀟈 Test applyingASnapshotFailsWithoutAConnectedBoard() started. 􀟈 Test aFailedPersistLeavesTheBoardUnsaved() started. 􀟈 Test readoutsAreCompactAndWriteDecimalsWithAPoint() started. 􀟈 Test matchingGenerationsMeanTheBoardPlaysItsSavedSettings() started. 􀟈 Test theVersionBuildAndCopyrightComeFromTheInfoPlist() started. 􀟈 Test roundTripPreservesContents() started. 􀟈 Test aMismatchedEnumeratedSerialIsRejected() started. 􀟈 Test applyingASnapshotSendsItToTheConnectedBoard() started. 􀟈 Test restoringIdenticalContentsIsANoOp() started. 􀟈 Test aBundleWithoutACopyrightShowsNone() started. 􀟈 Test verifyingABoardReadsWhetherItPlaysItsSavedSettings() started. 􀟈 Test aChangedLibraryStartsTheDraftOver() started. 􀟈 Test renamingReadsTheStorageStateAgain() started. 􀟈 Test connectingEntersDetectedBeforeTheReplyArrives() started. 􀟈 Test aSuccessfulFlashEndsTheSheetsWork() started. 􀟈 Test persistingSavesTheBoardAndReadsItsStorageStateAgain() started. 􀟈 Test onlyABoardWithoutAKnownSerialIsHeldIntoBootselByHand() started. 􀟈 Test aSteepSlopeStaysOneLine() started. 􀟈 Test theFrequencyLabelsStandUnderTheirLinesWithoutTouching() started. 􀟈 Test applyValidatesTheDraftBeforeItSaves() started. 􀟈 Test theStatusColumnSlidesOutByTheColumnsItTakesFromTheCurve() started. 􀟈 Test theFillReachesDownToTheBottomAxis() started. 􀟈 Test aLogarithmicScaleGivesEachDecadeTheSameTravel() started. 􀟈 Test theFrequencyRangeSpansTheCurvesColumns() started. 􀟈 Test aSelectionCopiesItsDriverIntoTheDraft() started. 􀟈 Test aVerifiedBoardsLiveValuesAreReadAgainAndAgain() started. 􀟈 Test aBandsMarkerStaysOnTheCurvesArea() started. 􀟈 Test persistingFailsWithoutAConnectedBoard() started. 􀟈 Test deleteSelectsTheFirstDriverThatRemains() started. 􀟈 Test aFailedLoadSurfacesAnErrorButStaysEditable() started. 􀟈 Test theGainLabelsKeepClearOfEachOtherAndTheUnit() started. 􀟈 Test noLiveValuesAreReadWhileAWriteIsOnTheWire() started. 􀟈 Test aBandsMarkerCentersOnTheCurveAtItsFrequency() started. 􀟈 Test neighboringCaptionsStandClearOfEachOther() started. 􀟈 Test removingADriverLeavesTheRest() started. 􀟈 Test addingADriverPersistsIt() started. 􀟈 Test gainFallsOnTheCurvesRowsAroundZeroDecibels() started. 􀟈 Test aMessageWrapsBetweenWordsWithAHangingIndent() started. 􀟈 Test disconnectingStopsTheReadsAndForgetsTheLiveValues() started. 􀟈 Test aPartialShareTakesItsPartOfTheWholeViewsWidth() started. 􀟈 Test removingTheLastDriverSurfacesAnErrorAndKeepsIt() started. 􀟈 Test flushSavesImmediatelyWithoutWaitingForTheDebounce() started. 􀟈 Test aWordLongerThanALineTakesALineOfItsOwn() started. 􀟈 Test capturingASlotStoresTheCurrentDSPSettingsWithoutChangingTheLibrary() started. 􀟈 Test rapidEditsWhileAnApplyIsInFlightCollapseIntoOneFollowUpCall() started. 􀟈 Test zeroDecibelsFallsOnTheCurvesMiddleRow() started. 􀟈 Test recallingAnEmptySlotIsANoOp() started. 􀟈 Test aSaveFailureSurfacesAnErrorButEditingContinues() started. 􀟈 Test aFailedLoadStillBecomesReadyAndKeepsTheInMemoryLibrary() started. 􀟈 Test oversizedImportFilesAreRejected() started. 􀟈 Test importingAProfileInsertsItsDecodedContents() started. 􀟈 Test applyingToTheBoardWithoutAConnectionIsASilentNoOp() started. 􀟈 Test theWindowIsAsTallAsTheFrontPanel() started. 􀟈 Test savingBeforeLoadingIsRejected() started. 􀟈 Test editingTheProfileAutomaticallyAppliesToAConnectedBoardAfterTheDebounce() started. 􀟈 Test applyingToTheBoardSendsTheEditedAttenuationUnchanged() started. 􀟈 Test theCurveKeepsTwoColumnsOnANarrowDisplay() started. 􀟈 Test loadingAMissingFileReturnsNil() started. 􀟈 Test mutatingTheDriverLibraryNeverWritesToAConnectedBoard() started. 􀟈 Test recallingASlotSupportsUndo() started. 􀟈 Test cancellingAnInFlightApplyNeverSurfacesAnError() started. 􀟈 Test loadingAMissingFileReturnsNil() started. 􀟈 Test capturingASlotIsIsolatedFromLaterEdits() started. 􀟈 Test alignmentCutsAndPadsATextToItsCells() started. 􀟈 Test updatingAnUnknownDriverSurfacesAnError() started. 􀟈 Test previewExcludesMuteAttenuationAndLimiter() started. 􀟈 Test redoReappliesTheUndoneChange() started. 􀟈 Test removingTheLastProfileLeavesTheLibraryUnchangedAndReportsAnError() started. 􀟈 Test startLoadsTheStoredLibrary() started. 􀟈 Test aCorruptFileFailsLoad() started. 􀟈 Test savingALowerOrEqualRevisionThanAlreadyStoredIsIgnoredNotOverwritten() started. 􀟈 Test anOversizedFileIsRejected() started. 􀟈 Test savingToTheBoardAppliesTheProfileBeforePersistingIt() started. 􀟈 Test aCorruptFileFailsLoadAndStaysWriteDisabled() started. 􀟈 Test aDragMovesTheWindowWithThePointer() started. 􀟈 Test importedProfilesAreDecodedFromTheirFile() started. 􀟈 Test savedLibrariesRoundTripThroughLoad() started. 􀟈 Test undoRestoresThePreviousLibrary() started. 􀟈 Test onlyAnErrorBringsTheStatusColumnBack() started. 􀟈 Test aBoardThatIsNotVerifiedShowsNoValues() started. 􀟈 Test theWindowIsAsTallAsTheAboutPanel() started. 􀟈 Test aBoardWithoutStorageCannotSave() started. 􀟈 Test aSaveRequestedWhileAnApplyRunsFollowsIt() started. 􀟈 Test savedLibrariesRoundTripThroughLoad() started. 􀟈 Test unsupportedFormatsAreRejected() started. 􀟈 Test closingTheWindowRunsItsCloseAction() started. 􀟈 Test charactersStandOneEmptyColumnApart() started. 􀟈 Test aPanelAsksForLessThanItsTitleBarBeforeItsWindowExists() started. 􀟈 Test aClickFindsTheLineUnderIt() started. 􀟈 Test aReadoutOfFiveCellsMeasuresWhatTheMockupMeasures() started. 􀟈 Test charactersWithoutAGlyphFallBack() started. 􀟈 Test aVerifiedBoardShowsItsIdentityStorageAndLiveValues() started. 􀟈 Test theColumnReadsTheModelsBoardAndNews() started. 􀟈 Test savingWithoutAConnectionIsASilentNoOp() started. 􀟈 Test invalidResponseRequestsAreRejected() started. 􀟈 Test savingOverwritesThePreviousContents() started. 􀟈 Test addingAProfileSelectsItAndSchedulesASave() started. 􀟈 Test everyGlyphHasSevenRowsOfFiveColumns() started. 􀟈 Test aFailedSaveSurfacesAnErrorAndLeavesTheBoardUnsaved() started. 􀟈 Test applyingToTheBoardSendsTheEditedMuteStateUnchanged() started. 􀟈 Test failedMutationsLeaveTheDocumentUnchanged() started. 􀟈 Test aKnownSerialForcesTheConnectedBoardStraightIntoTheLoadCommand() started. 􀟈 Test theListKeepsTheSelectedProfileInView() started. 􀟈 Test directoriesAndMalformedFilesAreRejected() started. 􀟈 Test aFailedApplySurfacesAnError() started. 􀟈 Test logarithmicControlsHaveExactEndsAndRoundTrip() started. 􀟈 Test editingTheProfileWithoutAConnectionNeverCallsTheTransport() started. 􀟈 Test voiceOverReadsTheColumnOnlyWhileItStandsInTheDisplay() started. 􀟈 Test germanLettersAndThePanelsSymbolsHaveTheirOwnGlyphs() started. 􀟈 Test aRenamedNameScrollsSoTheCaretKeepsACell() started. 􀟈 Test invalidLogarithmicBoundsAreRejected() started. 􀟈 Test identityAndRevisionCannotBeReplacedByAnEdit() started. 􀟈 Test recallingASlotChangesOnlyTheDSPSettings() started. 􀟈 Test startingLoadsTheStoredLibrary() started. 􀟈 Test editsAdvanceRevisionWithoutReplacingIdentity() started. 􀟈 Test aFailedWriteNeverReboots() started. 􀟈 Test documentRoundTripPreservesCanonicalData() started. 􀟈 Test theRenameTakesTheSelectedLineOnly() started. 􀟈 Test noKnownSerialWaitsForTheBoardByTheFixedBootselIdentity() started. 􀟈 Test revisionExhaustionLeavesTheDocumentUnchanged() started. 􀟈 Test newDocumentsStartMutedWithUnknownContext() started. 􀟈 Test invalidSettingsLeaveTheDocumentUnchanged() started. 􀟈 Test withoutStorageTheModelIsReadyImmediately() started. 􀟈 Test unchangedEditsDoNotAdvanceRevision() started. 􀟈 Test theBoardNeverAppearingInBootselTimesOut() started. 􀟈 Test sampledResponseUsesTheSharedAnalyticalResponse() started. 􀟈 Test incompleteNamesCanBeEditedButNotSaved() started. 􀟈 Test nonfiniteDisplayCoordinatesCannotProduceNaNSliderValues() started. 􀟈 Test radioKeysStayGrayAndPushKeysTakeTheStripesYellow() started. 􁁛 Test theRestartFollowsTheBoardsConnection() passed after 0.006 seconds. 􁁛 Test onlyAVerifiedBoardHasCapabilities() passed after 0.006 seconds. 􁁛 Test removingSelectsARemainingProfile() passed after 0.006 seconds. 􁁛 Test insertingAddsAndSelectsANewProfile() passed after 0.006 seconds. 􁁛 Test restoringContentsRevertsAPriorMutationAndAdvancesRevision() passed after 0.006 seconds. 􁁛 Test anEmptyManufacturerOrModelMeansNone() passed after 0.006 seconds. 􁁛 Test updatingSelectedAdvancesRevisionAndKeepsIdentity() passed after 0.006 seconds. 􁁛 Test aMismatchShowsItsReasonAsAnError() passed after 0.006 seconds. 􁁛 Test nothingIsSaidWithoutABoardOrNews() passed after 0.006 seconds. 􁁛 Test insertingTheSameIdentityAndContentsSelectsItWithoutDuplicating() passed after 0.006 seconds. 􁁛 Test theSpeakerBreaksBetweenItsWordsAndKeepsItsModel() passed after 0.006 seconds. 􁁛 Test removingTheLastProfileIsRejected() passed after 0.006 seconds. 􁁛 Test insertingADifferingProfileWithAnExistingIdentityIsRejected() passed after 0.006 seconds. 􁁛 Test selectedIDMustReferenceAProfile() passed after 0.006 seconds. 􁁛 Test emptyOrDuplicateIdentitiesAreRejected() passed after 0.006 seconds. 􁁛 Test aFailedStorageReadsAsAnError() passed after 0.006 seconds. 􁁛 Test aColorSplitsIntoHueSaturationAndBrightness() passed after 0.006 seconds. 􁁛 Test theMountingHoleCountRoundsToWholeHoles() passed after 0.006 seconds. 􁁛 Test bothScalesClampToTheRange() passed after 0.006 seconds. 􁁛 Test theSourcesReadAsOneURLPerLine() passed after 0.006 seconds. 􁁛 Test aLinearScaleMapsTheRangeOntoTheTravel() passed after 0.006 seconds. 􁁛 Test restoringIdenticalContentsIsANoOp() passed after 0.006 seconds. 􁁛 Test aBundleWithoutACopyrightShowsNone() passed after 0.006 seconds. 􁁛 Test theArrowKeysMoveOneKeyAndWrapAroundAtTheEnds() passed after 0.006 seconds. 􁁛 Test theFrequencyLabelsStandUnderTheirLinesWithoutTouching() passed after 0.006 seconds. 􁁛 Test theFillReachesDownToTheBottomAxis() passed after 0.006 seconds. 􁁛 Test aSteepSlopeStaysOneLine() passed after 0.006 seconds. 􁁛 Test theStatusColumnSlidesOutByTheColumnsItTakesFromTheCurve() passed after 0.006 seconds. 􁁛 Test roundTripPreservesContents() passed after 0.006 seconds. 􁁛 Test aLogarithmicScaleGivesEachDecadeTheSameTravel() passed after 0.006 seconds. 􁁛 Test aBandsMarkerStaysOnTheCurvesArea() passed after 0.006 seconds. 􁁛 Test oversizedFilesAreRejectedOnDecode() passed after 0.006 seconds. 􁁛 Test gainFallsOnTheCurvesRowsAroundZeroDecibels() passed after 0.005 seconds. 􁁛 Test theGainLabelsKeepClearOfEachOtherAndTheUnit() passed after 0.006 seconds. 􁁛 Test aMessageWrapsBetweenWordsWithAHangingIndent() passed after 0.005 seconds. 􁁛 Test aWordLongerThanALineTakesALineOfItsOwn() passed after 0.005 seconds. 􁁛 Test readoutsAreCompactAndWriteDecimalsWithAPoint() passed after 0.006 seconds. 􁁛 Test zeroDecibelsFallsOnTheCurvesMiddleRow() passed after 0.005 seconds. 􁁛 Test savingBeforeLoadingIsRejected() passed after 0.005 seconds. 􁁛 Test theCurveKeepsTwoColumnsOnANarrowDisplay() passed after 0.006 seconds. 􁁛 Test loadingAMissingFileReturnsNil() passed after 0.005 seconds. 􁁛 Test eachMessageGivesWayToTheOnesBeforeIt() passed after 0.006 seconds. 􁁛 Test theFrequencyRangeSpansTheCurvesColumns() passed after 0.006 seconds. 􁁛 Test loadingAMissingFileReturnsNil() passed after 0.005 seconds. 􁁛 Test theProfileLimitIsEnforced() passed after 0.006 seconds. 􁁛 Test theSoundBoxShowsItsNameOnlyWhileVerified() passed after 0.006 seconds. 􁁛 Test theSoundBoxNameBreaksBetweenItsWords() passed after 0.006 seconds. 􁁛 Test onlyAnErrorBringsTheStatusColumnBack() passed after 0.005 seconds. 􁁛 Test startsWithOneSelectedProfile() passed after 0.006 seconds. 􁁛 Test aBoardThatIsNotVerifiedShowsNoValues() passed after 0.005 seconds. 􁁛 Test aRunningPhaseReadsAsATitle() passed after 0.006 seconds. 􁁛 Test savingALowerOrEqualRevisionThanAlreadyStoredIsIgnoredNotOverwritten() passed after 0.005 seconds. 􁁛 Test theVersionBuildAndCopyrightComeFromTheInfoPlist() passed after 0.006 seconds. 􁁛 Test noSpeakerReadsNotSelectedAStepDimmer() passed after 0.006 seconds. 􁁛 Test aDriverModelWithoutANameReadsUntitled() passed after 0.006 seconds. 􁁛 Test anOversizedFileIsRejected() passed after 0.005 seconds. 􁁛 Test alignmentCutsAndPadsATextToItsCells() passed after 0.005 seconds. 􁁛 Test previewExcludesMuteAttenuationAndLimiter() passed after 0.005 seconds. 􁁛 Test aBandsMarkerCentersOnTheCurveAtItsFrequency() passed after 0.006 seconds. 􁁛 Test aClickFindsTheLineUnderIt() passed after 0.005 seconds. 􁁛 Test aReadoutOfFiveCellsMeasuresWhatTheMockupMeasures() passed after 0.005 seconds. 􁁛 Test charactersWithoutAGlyphFallBack() passed after 0.005 seconds. 􁁛 Test aCorruptFileFailsLoad() passed after 0.005 seconds. 􁁛 Test unsupportedFormatsAreRejected() passed after 0.005 seconds. 􁁛 Test theListKeepsTheSelectedProfileInView() passed after 0.005 seconds. 􁁛 Test invalidResponseRequestsAreRejected() passed after 0.005 seconds. 􁁛 Test logarithmicControlsHaveExactEndsAndRoundTrip() passed after 0.005 seconds. 􁁛 Test charactersStandOneEmptyColumnApart() passed after 0.005 seconds. 􁁛 Test voiceOverReadsTheColumnOnlyWhileItStandsInTheDisplay() passed after 0.005 seconds. 􁁛 Test oversizedImportFilesAreRejected() passed after 0.006 seconds. 􁁛 Test aKnownSerialForcesTheConnectedBoardStraightIntoTheLoadCommand() passed after 0.005 seconds. 􁁛 Test invalidLogarithmicBoundsAreRejected() passed after 0.005 seconds. 􁁛 Test aRenamedNameScrollsSoTheCaretKeepsACell() passed after 0.005 seconds. 􁁛 Test identityAndRevisionCannotBeReplacedByAnEdit() passed after 0.005 seconds. 􁁛 Test germanLettersAndThePanelsSymbolsHaveTheirOwnGlyphs() passed after 0.005 seconds. 􁁛 Test editsAdvanceRevisionWithoutReplacingIdentity() passed after 0.005 seconds. 􁁛 Test everyGlyphHasSevenRowsOfFiveColumns() passed after 0.005 seconds. 􁁛 Test invalidSettingsLeaveTheDocumentUnchanged() passed after 0.005 seconds. 􁁛 Test importedProfilesAreDecodedFromTheirFile() passed after 0.005 seconds. 􁁛 Test newDocumentsStartMutedWithUnknownContext() passed after 0.005 seconds. 􁁛 Test theRenameTakesTheSelectedLineOnly() passed after 0.005 seconds. 􁁛 Test incompleteNamesCanBeEditedButNotSaved() passed after 0.005 seconds. 􁁛 Test revisionExhaustionLeavesTheDocumentUnchanged() passed after 0.005 seconds. 􁁛 Test savedLibrariesRoundTripThroughLoad() passed after 0.005 seconds. 􁁛 Test nonfiniteDisplayCoordinatesCannotProduceNaNSliderValues() passed after 0.005 seconds. 􁁛 Test aFailedWriteNeverReboots() passed after 0.005 seconds. 􁁛 Test savedLibrariesRoundTripThroughLoad() passed after 0.006 seconds. 􁁛 Test failedMutationsLeaveTheDocumentUnchanged() passed after 0.005 seconds. 􁁛 Test unchangedEditsDoNotAdvanceRevision() passed after 0.005 seconds. 􁁛 Test aCorruptFileFailsLoadAndStaysWriteDisabled() passed after 0.006 seconds. 􁁛 Test sampledResponseUsesTheSharedAnalyticalResponse() passed after 0.005 seconds. 􁁛 Test documentRoundTripPreservesCanonicalData() passed after 0.005 seconds. 􁁛 Test savingOverwritesThePreviousContents() passed after 0.006 seconds. 􁁛 Suite BoardConnectionStatePresentationTests passed after 0.007 seconds. 􁁛 Suite FlashPresentationTests passed after 0.007 seconds. 􁁛 Suite FrontPanelMessageTests passed after 0.007 seconds. 􁁛 Test directoriesAndMalformedFilesAreRejected() passed after 0.005 seconds. 􁁛 Suite HSBComponentsTests passed after 0.007 seconds. 􁁛 Suite LibraryReadoutLinesTests passed after 0.007 seconds. 􁁛 Suite AboutInfoTests passed after 0.007 seconds. 􁁛 Suite KeyBankNavigationTests passed after 0.007 seconds. 􁁛 Suite DriverRecordPresentationTests passed after 0.007 seconds. 􁁛 Suite FaderScaleTests passed after 0.007 seconds. 􁁛 Suite FrontPanelDisplayLayoutTests passed after 0.007 seconds. 􁁛 Suite DotMatrixWrapTests passed after 0.007 seconds. 􁁛 Suite ProfileListLinesTests passed after 0.007 seconds. 􁁛 Suite ProfileLibraryTests passed after 0.007 seconds. 􁁛 Suite ProfileLibraryStoreTests passed after 0.007 seconds. 􁁛 Suite DriverLibraryStoreTests passed after 0.007 seconds. 􁁛 Suite DotMatrixTests passed after 0.007 seconds. 􁁛 Suite ResponseCurveTests passed after 0.007 seconds. 􁁛 Suite ProfileFileTests passed after 0.007 seconds. 􁁛 Test noKnownSerialWaitsForTheBoardByTheFixedBootselIdentity() passed after 0.008 seconds. 􁁛 Test aVerifiedBoardShowsItsIdentityStorageAndLiveValues() passed after 0.009 seconds. 􁁛 Test theBoardNeverAppearingInBootselTimesOut() passed after 0.017 seconds. 􁁛 Suite FlashServiceTests passed after 0.018 seconds. 􁁛 Test theCurveTakesTheStatusColumnsRoomWhileTheColumnIsOut() passed after 0.329 seconds. 􁁛 Test theDotsTakeTheEnvironmentsDisplayColor() passed after 0.426 seconds. 􁁛 Test everyAboutDotIsThreeByThreeDevicePixelsAtScaleTwo() passed after 0.469 seconds. 􁁛 Test applyingToTheBoardWithoutAConnectionIsASilentNoOp() passed after 0.469 seconds. 􁁛 Test theAboutWindowDrawsItsIconAtFullResolution() passed after 0.489 seconds. 􁁛 Test everyLibraryDotIsThreeByThreeDevicePixelsAtScaleTwo() passed after 0.546 seconds. 􁁛 Test closingTheWindowRunsItsCloseAction() passed after 0.636 seconds. 􁁛 Test theColumnReadsTheModelsBoardAndNews() passed after 0.638 seconds. 􁁛 Suite FrontPanelStatusTests passed after 0.639 seconds. 􁁛 Test savingWithoutAConnectionIsASilentNoOp() passed after 0.638 seconds. 􁁛 Test settingTheDeviceNameFailsWithoutAConnectedBoard() passed after 0.712 seconds. 􁁛 Test applyingASnapshotFailsWithoutAConnectedBoard() passed after 0.712 seconds. 􁁛 Test persistingFailsWithoutAConnectedBoard() passed after 0.712 seconds. 􁁛 Test aFailedLoadSurfacesAnErrorButStaysEditable() passed after 0.712 seconds. 􁁛 Test eachPanelSetsTheDisplayColorItKeeps() passed after 0.823 seconds. 􁁛 Test aFailedLoadStillBecomesReadyAndKeepsTheInMemoryLibrary() passed after 0.840 seconds. 􁁛 Test importingAProfileInsertsItsDecodedContents() passed after 0.840 seconds. 􁁛 Test everyDotIsThreeByThreeDevicePixelsAtScaleTwo() passed after 0.850 seconds. 􁁛 Suite FrontPanelRenderTests passed after 0.851 seconds. 􁁛 Test anEditFromAControlGoesThroughTheProfilesEditPath() passed after 0.856 seconds. 􁁛 Test aCaptionAsNarrowAsItsWidestWordBreaksOnlyBetweenWords() passed after 0.856 seconds. 􁁛 Test aSpeakerIdentifierSelectsItsDriver() passed after 0.856 seconds. 􁁛 Suite ControlCaptionTests passed after 0.857 seconds. 􁁛 Test resettingABandRestoresTheBandOfANewProfile() passed after 0.856 seconds. 􁁛 Test theLastProfileCannotBeDeleted() passed after 0.856 seconds. 􁁛 Test keepingTheNameChangesNothing() passed after 0.856 seconds. 􁁛 Test renamingGoesThroughTheProfilesEditPath() passed after 0.856 seconds. 􁁛 Test theProfileKeysAddDeleteImportAndExport() passed after 0.856 seconds. 􁁛 Test anEditFromAControlCanBeUndone() passed after 0.856 seconds. 􁁛 Test anIdentifierSelectsItsProfile() passed after 0.856 seconds. 􁁛 Suite FrontPanelEditorTests passed after 0.857 seconds. 􁁛 Test aSpeakerChoiceReachesTheSelectedProfile() passed after 0.864 seconds. 􁁛 Test disconnectingReturnsToDisconnectedAndDiscardsAPendingReply() passed after 0.864 seconds. 􁁛 Test selectingNilClearsTheSpeaker() passed after 0.864 seconds. 􁁛 Test selectingALineSelectsItsProfile() passed after 0.871 seconds. 􁁛 Test selectingASpeakerSnapshotsTheDriverRatherThanReferencingItLive() passed after 0.871 seconds. 􁁛 Test aDisabledMonitorNeverStartsDiscovery() passed after 0.870 seconds. 􁁛 Test selectingASpeakerSupportsUndo() passed after 0.870 seconds. 􁁛 Test selectingASpeakerWithFullThieleSmallDataSetsTheFirstBandToTheQtcCorrection() passed after 0.871 seconds. 􁁛 Test startsDisconnected() passed after 0.870 seconds. 􁁛 Test matchingGenerationsMeanTheBoardPlaysItsSavedSettings() passed after 0.870 seconds. 􁁛 Test onlyABoardWithoutAKnownSerialIsHeldIntoBootselByHand() passed after 0.870 seconds. 􁁛 Test aChangedLibraryStartsTheDraftOver() passed after 0.870 seconds. 􁁛 Test selectingASpeakerMissingVasLeavesTheHighPassAndFirstBandUnchanged() passed after 0.870 seconds. 􁁛 Test aSelectionCopiesItsDriverIntoTheDraft() passed after 0.870 seconds. 􁁛 Test selectingASpeakerWithFullThieleSmallDataSetsTheHighPassFromTheClosedBoxAlignment() passed after 0.870 seconds. 􁁛 Test applyValidatesTheDraftBeforeItSaves() passed after 0.870 seconds. 􁁛 Test deleteSelectsTheFirstDriverThatRemains() passed after 0.870 seconds. 􁁛 Test removingADriverLeavesTheRest() passed after 0.870 seconds. 􁁛 Test aPartialShareTakesItsPartOfTheWholeViewsWidth() passed after 0.870 seconds. 􁁛 Suite LibraryEditorTests passed after 0.872 seconds. 􁁛 Test removingTheLastDriverSurfacesAnErrorAndKeepsIt() passed after 0.870 seconds. 􁁛 Suite SharedWidthRowTests passed after 0.871 seconds. 􁁛 Suite SpeakerSelectionTests passed after 0.872 seconds. 􁁛 Test neighboringCaptionsStandClearOfEachOther() passed after 0.870 seconds. 􁁛 Test aSaveFailureSurfacesAnErrorButEditingContinues() passed after 0.870 seconds. 􁁛 Test recallingAnEmptySlotIsANoOp() passed after 0.870 seconds. 􁁛 Test capturingASlotStoresTheCurrentDSPSettingsWithoutChangingTheLibrary() passed after 0.870 seconds. 􁁛 Suite DriverModelSelectionTests passed after 0.872 seconds. 􁁛 Test updatingAnUnknownDriverSurfacesAnError() passed after 0.870 seconds. 􁁛 Test redoReappliesTheUndoneChange() passed after 0.870 seconds. 􁁛 Test capturingASlotIsIsolatedFromLaterEdits() passed after 0.870 seconds. 􁁛 Test recallingASlotSupportsUndo() passed after 0.870 seconds. 􁁛 Test aSuccessfulFlashEndsTheSheetsWork() passed after 0.870 seconds. 􁁛 Test removingTheLastProfileLeavesTheLibraryUnchangedAndReportsAnError() passed after 0.870 seconds. 􁁛 Test startLoadsTheStoredLibrary() passed after 0.870 seconds. 􁁛 Test aPanelAsksForLessThanItsTitleBarBeforeItsWindowExists() passed after 0.870 seconds. 􁁛 Test withoutStorageTheModelIsReadyImmediately() passed after 0.870 seconds. 􁁛 Test aDragMovesTheWindowWithThePointer() passed after 0.870 seconds. 􁁛 Test recallingASlotChangesOnlyTheDSPSettings() passed after 0.870 seconds. 􁁛 Suite MomentaryKeyBankTests passed after 0.872 seconds. 􁁛 Test startingLoadsTheStoredLibrary() passed after 0.870 seconds. 􁁛 Test undoRestoresThePreviousLibrary() passed after 0.870 seconds. 􁁛 Suite FlashFirmwareSheetModelTests passed after 0.872 seconds. 􁁛 Test theWindowIsAsTallAsTheFrontPanel() passed after 1.172 seconds. 􁁛 Test theWindowIsAsTallAsTheAboutPanel() passed after 1.203 seconds. 􁁛 Suite PanelWindowTests passed after 1.204 seconds. 􁁛 Test radioKeysStayGrayAndPushKeysTakeTheStripesYellow() passed after 1.205 seconds. 􁁛 Suite KeyColorTests passed after 1.207 seconds. 􁁛 Test flushSavesImmediatelyWithoutWaitingForTheDebounce() passed after 1.208 seconds. 􁁛 Test aFailedCapabilityQueryIsReportedAsMismatched() passed after 1.208 seconds. 􁁛 Test aMismatchedEnumeratedSerialIsRejected() passed after 1.208 seconds. 􁁛 Test editingTheProfileWithoutAConnectionNeverCallsTheTransport() passed after 1.207 seconds. 􁁛 Test addingADriverPersistsIt() passed after 1.208 seconds. 􁁛 Test connectingMovesToVerifiedOnMatchingSerial() passed after 1.213 seconds. 􁁛 Test aBoardWithoutStorageCannotSave() passed after 1.212 seconds. 􁁛 Test applyingToTheBoardSendsTheEditedMuteStateUnchanged() passed after 1.212 seconds. 􁁛 Test aFailedSaveSurfacesAnErrorAndLeavesTheBoardUnsaved() passed after 1.212 seconds. 􁁛 Test aFailedApplySurfacesAnError() passed after 1.212 seconds. 􁁛 Test connectingEntersDetectedBeforeTheReplyArrives() passed after 1.214 seconds. 􁁛 Test verifyingABoardReadsWhetherItPlaysItsSavedSettings() passed after 1.214 seconds. 􁁛 Test mutatingTheDriverLibraryNeverWritesToAConnectedBoard() passed after 1.214 seconds. 􁁛 Suite DriverLibraryModelTests passed after 1.215 seconds. 􁁛 Test applyingMovesASavedBoardToUnsaved() passed after 1.214 seconds. 􁁛 Test applyingASnapshotSendsItToTheConnectedBoard() passed after 1.214 seconds. 􁁛 Test applyingToTheBoardSendsTheEditedAttenuationUnchanged() passed after 1.214 seconds. 􁁛 Test aFailedPersistLeavesTheBoardUnsaved() passed after 1.214 seconds. 􁁛 Test aFailedRenameLeavesTheStateUnchanged() passed after 1.214 seconds. 􁁛 Test persistingSavesTheBoardAndReadsItsStorageStateAgain() passed after 1.214 seconds. 􁁛 Test renamingReadsTheStorageStateAgain() passed after 1.214 seconds. 􁁛 Test settingTheDeviceNameRefreshesTheVerifiedCapabilities() passed after 1.215 seconds. 􁁛 Test savingToTheBoardAppliesTheProfileBeforePersistingIt() passed after 1.214 seconds. 􁁛 Test reconnectingAfterADisconnectVerifiesAgain() passed after 1.219 seconds. 􁁛 Suite BoardMonitorTests passed after 1.220 seconds. 􁁛 Test disconnectingForgetsTheStorageState() passed after 1.220 seconds. 􁁛 Suite BoardStorageTests passed after 1.221 seconds. 􁁛 Test cancellingAnInFlightApplyNeverSurfacesAnError() passed after 1.220 seconds. 􁁛 Test aVerifiedBoardsLiveValuesAreReadAgainAndAgain() passed after 1.245 seconds. 􁁛 Test disconnectingStopsTheReadsAndForgetsTheLiveValues() passed after 1.320 seconds. 􁁛 Test noLiveValuesAreReadWhileAWriteIsOnTheWire() passed after 1.371 seconds. 􁁛 Suite BoardStatusTests passed after 1.372 seconds. 􁁛 Test addingAProfileSelectsItAndSchedulesASave() passed after 1.467 seconds. 􁁛 Test editingTheProfileAutomaticallyAppliesToAConnectedBoardAfterTheDebounce() passed after 1.473 seconds. 􁁛 Test rapidEditsWhileAnApplyIsInFlightCollapseIntoOneFollowUpCall() passed after 1.620 seconds. 􁁛 Test aSaveRequestedWhileAnApplyRunsFollowsIt() passed after 1.620 seconds. 􁁛 Suite BoardSaveTests passed after 1.622 seconds. 􁁛 Suite WorkbenchModelTests passed after 1.622 seconds. 􁁛 Test run with 196 tests in 37 suites passed after 1.622 seconds. Building for production... [Pre-planning 1 / 302] [Planning deferred tasks] [22 / 36] [29 / 40] [30 / 40] NeXTsoundCore [36 / 44] NeXTsoundWorkbench [39 / 46] NeXTsoundWorkbench [45 / 49] NeXTsoundWorkbenchRender-product [48 / 51] NeXTsoundDiagnostics-product [50 / 51] NeXTsoundWorkbenchRender-product [52 / 54] NeXTsoundDiagnostics-product [52 / 54] NeXTsoundWorkbenchRender-product [53 / 54] NeXTsoundWorkbenchRender-product [55 / 55] NeXTsoundDiagnostics-product Build complete! (8,74 sec) Arm 15.3.1 and Pico SDK a1438dff1d38bd9c65dbd693f0e5db4b9ae91779 ready. -- Using the single-header code from ~/Developer/Projects/NeXTsound/.tools/picotool-usb/lib/nlohmann_json/single_include/ lib/mbedtls submodule needs to be initialized for bintool hashing/signing mbedtls not found - no signing/hashing support will be built -- Configuring done (0.1s) -- Generating done (0.0s) -- Build files have been written to: ~/Developer/Projects/NeXTsound/.build/picotool-usb [1/12] Performing build step for 'enc_bootloader' ninja: no work to do. [2/12] Performing build step for 'xip_ram_perms' ninja: no work to do. [3/12] Performing build step for 'flash_id' ninja: no work to do. [4/12] Performing build step for 'otp_header_parser' ninja: no work to do. [5/12] No install step for 'enc_bootloader' [6/12] No install step for 'xip_ram_perms' [7/12] No install step for 'flash_id' [8/12] No install step for 'otp_header_parser' [9/12] Completed 'xip_ram_perms' [10/12] Completed 'enc_bootloader' [11/12] Completed 'flash_id' [12/12] Completed 'otp_header_parser' picotool 2041936441b48a3cc53ae3da9e805229fe8f4e18 with USB support ready at ~/Developer/Projects/NeXTsound/App/Workbench/Sources/NeXTsoundWorkbench/Resources/picotool 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/5] 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/5] 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' [3/5] 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" [4/5] 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. [5/5] Completed 'picotoolBuild' 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 68252 0 18456 86708 152b4 ~/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: 953d75d4 description: USB audio and HID control mono I2S muted start binary start: 0x10000000 binary end: 0x1000f29c 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 24 2026 build attributes: Release Metadata Block 1 address: 0x10000138 next block address: 0x1000f288 block type: image def target chip: RP2350 image type: ARM Secure extra security: not enabled Metadata Block 2 address: 0x1000f288 next block address: 0x10000138 block type: ignored Building for debugging... [Pre-planning 1 / 243] [Planning deferred tasks] [13 / 31] [19 / 46] [33 / 46] NeXTsoundCore [36 / 48] NeXTsoundCore [37 / 47] NeXTsoundWorkbench [53 / 63] NeXTsoundWorkbench [62 / 65] NeXTsoundWorkbench [64 / 67] NeXTsoundWorkbenchRender-product [65 / 67] NeXTsoundWorkbenchRender-product [67 / 67] NeXTsoundWorkbenchRender-product Build complete! (2,87 sec) ⚙️ Generating plists... ⚙️ Generating project... ⚙️ Writing project... Created project at ~/Developer/Projects/NeXTsound/App/NeXTsound.xcodeproj Debug app: ~/Developer/Projects/NeXTsound/.build/macOS/Build/Products/Debug/NeXTsound.app Release app: ~/Developer/Projects/NeXTsound/.build/macOS/Build/Products/Release/NeXTsound.app