diff --git a/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.md b/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.md index 32a1ea90b..7bca68eea 100644 --- a/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.md +++ b/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.md @@ -44,9 +44,11 @@ The V3's first 15-second discovery trial failed. Its separate 25-second scan tri T1000-E's initial batch BLE trial failed. The explicit later retry is FAIL. The initial failure remains part of the record. -Seeed XIAO nRF52 completed the application transfer; recovery failed normal runtime verification. The failed recovery phase and original batch outcomes remain in the JSON trial history. +Seeed XIAO nRF52 completed the normal application transfer, but normal runtime was not verified within the required 75-second window. The failed recovery phase and original batch outcomes remain in the JSON trial history. Bootloader baseline evidence is reported separately. -Seeed XIAO nRF52: The normal HEAD application transfer succeeded, but normal HEAD runtime was not verified within the required 75-second window. Runtime qualification remains incomplete. Bootloader baseline evidence is reported separately. +A later XIAO recovery attempt observed runtime CDC windows of 27-151 ms. One guarded serial open was attempted, but its completion was uncertain, no explicit DTR-low operation was reached, and exact DFU was not observed during the following 45 seconds. The startup diagnostic was not installed. After the user moved the USB plug, a 20-second inventory and separate 180-second sysfs watch did not observe the original XIAO identity; the new connection repeatedly reported USB descriptor/address error -71. The other 12 USB identities were present in a separate snapshot, and the Pi reported `throttled=0x0`. These observations do not identify a cable, power, firmware or bootloader root cause. A separate 25-second BLE scan found no XIAO DFU advertisement. Recovery requires a stable connection to the original device before another firmware transfer. + +[Source hardening](https://github.com/mikecarper/MeshCore/commit/40b6ef8fe28548f5e2a6e4227d55d0abfa3f3e01) prevents fresh XIAO identity generation from reading an unavailable radio and defers saved-radio settings retries until hardware is available. Eight focused host tests and the XIAO Full and legacy BLE builds passed. The new Full package retains all verified capabilities and is staged on the Pi, but has not been installed. These software checks do not resolve the USB enumeration cause or change the hardware qualification counts above. The measured V3 92-contact refresh median was 3.347882 s at 32.560 kbit/s, versus 6.191396 s at 17.606 kbit/s for the earlier firmware. These are protocol throughput measurements on one V3/Linux connection, not BLE PHY rates or phone/full-app refresh claims. [Measured results](https://mikecarper.github.io/MeshCore/test-results/companion_ble_refresh_2026-10-19/). diff --git a/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.safe.json b/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.safe.json index f5a0ec2c6..576f4e703 100644 --- a/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.safe.json +++ b/docs/test-results/hardware_validation_mercerwood_1_18_0_1_2026-10-19.safe.json @@ -1,6 +1,6 @@ { "schema": 1, - "generated_at": "2026-10-19T23:53:34.741074+00:00", + "generated_at": "2026-10-20T00:49:38.368042+00:00", "source_commit": "4e4f27a25a720c52ca0f5381b5e5834d75532cc6", "expected_version": "v1.18.0.1-halo-keymind-cascade-dev-4e4f27a2", "campaign_complete": false, @@ -28,6 +28,60 @@ "usb_passed": 10, "ble_passed": 9 }, + "xiao_recovery_followup": { + "date_pdt": "2026-10-19", + "normal_runtime_qualified": false, + "diagnostic_application_installed": false, + "fresh_bootloader_source_reverified": false, + "runtime_cdc_intervals_ms": [ + 27.1, + 122.3, + 124.2, + 141.7, + 31.7, + 116.2, + 135.4, + 151.2 + ], + "software_entry": { + "open_attempts": 1, + "open_result_unknown": true, + "dtr_low_attempts": 0, + "exact_dfu_observed": false, + "post_attempt_dfu_watch_seconds": 45, + "application_dfu_invocations": 0, + "hardware_cleanup_review_required": false + }, + "port_change": { + "user_confirmed": true, + "inventory_seconds": 20, + "separate_sysfs_watch_seconds": 180, + "original_xiao_identity_observed": false, + "descriptor_or_address_error": -71, + "other_usb_identities_in_separate_snapshot": 12, + "pi_throttled_mask": "0x0", + "scope": "Separate connection observations, not a new fleet qualification or proof of hub voltage.", + "root_cause_proven": false + }, + "ble_fallback_scan": { + "seconds": 25, + "xiao_dfu_advertisements": 0, + "gatt_connections": 0, + "writes": 0 + }, + "source_hardening": { + "source_commit": "40b6ef8fe28548f5e2a6e4227d55d0abfa3f3e01", + "version": "v1.18.0.1-halo-keymind-cascade-dev-40b6ef8f", + "focused_host_tests_passed": 8, + "full_build_passed": true, + "legacy_ble_build_passed": true, + "full_capabilities_verified": true, + "full_package_staged_on_pi": true, + "application_installed": false, + "usb_root_cause_verified": false + }, + "next_requirement": "Stable enumeration of the original device before another firmware transfer." + }, "batch_state": "failed", "v3_ble_trials": { "first_scan_seconds": 15,