Record T1000 bootloader correction and remaining BLE failure

This commit is contained in:
mikecarper committed 2026-10-19 21:38:15 -07:00
1 parent 6e898afc4d
commit 1e0aab566f
3 files changed
+538

No files matched your search

@@ -0,0 +1,43 @@
<!-- meshcore-hosted-doc-link:start -->
<p class="meshcore-hosted-doc-link"><a href="https://mikecarper.github.io/MeshCore/test-results/companion_qualification_f807_followup_2026-10-19/">View this page on MeshCore Docs</a>.</p>
<!-- meshcore-hosted-doc-link:end -->
# Mercerwood Companion diagnosis follow-up, 2026-10-19
Overall status: **FAIL, incomplete**. Across the selected measured sources, **1/2 Companions PASS, 1 FAIL**. RAK 4631 passed USB, BLE and two-way LoRa at f807. T1000-E passed latest normal Full USB but remains **FAIL** because BLE has not qualified. XIAO nRF52 remains a carried-forward failure.
Both selected boards first returned to Full `f80751354ffc530461e87109ced4f575d3950a52`. T1000 subsequently received normal Full `42f7df082fc4c7362ecd5c18c8644ab25b51b9e9`, version `v1.18.0.1-halo-keymind-cascade-dev-42f7df08`, after the corrected bootloader. Its ZIP SHA-256 is `7fac141e40183ada315f70b296583eaf854fd819c76fbd896a1f0f2e4a405e5b`. Checks ran on October 20 UTC during the October 19 local campaign.
| Companion | Source | USB | BLE | LoRa | Overall |
| --- | --- | --- | --- | --- | --- |
| RAK 4631 | f8075135 | PASS | PASS | PASS | PASS |
| Seeed T1000-E | 42f7df08 | PASS | FAIL | not requalified; f807 passed | FAIL |
| Seeed XIAO nRF52 | prior failure retained | FAIL | not qualified | not qualified | FAIL retained |
This is a selected-board follow-up, not a 13-radio fleet qualification. Repeaters were outside scope. Earlier mixed-source results remain in [the previous follow-up](companion_qualification_followup_2026-10-19.md).
Before the bootloader comparison, each f807 USB run passed 100 query cycles, 10 reopens, radio2 checks, owned-contact CRUD, persistence through warm reboot and contact cleanup. Each closed 18/18 ports with clean final core flags and zero stable binary prefix discards or invalid lengths. ASCII setup and intentional reboot recovery remain separate transition evidence.
RAK BLE passed three 30-second sessions with USB-bound identity, board, full version, NUS services and getters verified. Uptime advanced, flags stayed clean and each session disconnected. LoRa passed an exact zero-hop DEV datagram in each direction between RAK and T1000, with packet-counter checks, owned-channel cleanup and restored radio leases. These finite checks do not establish phone interoperability, range or text delivery.
T1000's original f807 BLE run failed current-advertisement identity binding with zero sessions. A later 90-second Pi follow-up also completed none despite Bluetooth enabled, stealth off and clean USB core flags. The unpaired BlueZ cache retained `T1000-BLE-PROBE` while USB verified normal f807 and its configured MeshCore name. Cached naming may affect filtering without a current scan response; it proves neither the BLE cause nor a duplicate address or working connection.
Minimal BLE-only, payload/timing, clock-request, transmit-power and LFRC images were diagnostic probes, not Full acceptance. The LFRC probe used an explicit RC configuration and valid vectors; this does not establish a defective crystal or justify changing production clocks. Advertising/HFXO readbacks do not measure RF accuracy or prove over-air packets.
The official upstream `companion-v1.18.0` T1000 BLE reference had matching ZIP/UF2 application bytes, base `0x27000` and SoftDevice requirement `0x0123`. Its bounded Pi scan did not find the required current advertisement. Phone visibility was insufficiently bound to name/time. This application-only experiment retained the same bootloader/SoftDevice and cannot isolate them. Normal Full was restored. Reference ZIP SHA-256: `79e53c2ce13521ccda5db3621a68f79728d2f241c3a8345e4107b7ae6b5a374d`.
Installed S140 7.3.0 readback CRC `733639BD` matched the package bytes, also identical to Seeed's recovery package SoftDevice. That checks the covered image, not RF operation. C2 installation preceded a historical secured diagnostic link that never completed full BLE qualification.
A separate DFU defect was corrected in bootloader `c0c421184a3cf1ca66b40b055101f20b8c587e26`: active-high P0.06 had been configured pull-up/active-low, with RESET/P0.18 treated as another button. The correction adds qualified three-second hold/USB-first recovery while retaining explicit-request latency and other boards' two-button behavior. Eleven actual-function host tests, 13 DFU-entry checks and T1000/T096/T114 cross-builds passed. See [candidate PR #1](https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/pull/1) and [upstream polarity evidence](https://github.com/meshtastic/Adafruit_nRF52_Bootloader_OTAFIX/commit/0f415c3ee26816ad52a7587b3d6cdd30547987ec).
The reviewed combined bootloader transfer returned 0, but its installer stopped when the MSC disk was unavailable. That failed workflow remains failed. Later exact-device public INFO verified model `Seeed T1000-E for Meshtastic`, Board-ID `nRF52840-T1000-E-v1` and version `TEST_0x02040C01`. Package CRC `6BA4D206` was validated offline; installed CRC was not exposed. Combined ZIP SHA-256: `8db09e6b7f253b1e54aae754220f0d1053d369c07bff299a26b384233de6e234`.
Separate f807 application programming and its adapter command both returned 0. An independent USB check passed 15 queries/two reopens, closed 5/5 ports and verified normal f807, the same public identity, clean framing and zero core errors. With the corrected bootloader and same f807, an explicit-address 90-second BLE attempt still failed advertisement binding with zero sessions. No BLE fix or bootloader cause is established.
Final normal Full 42f7df08 installation succeeded. Its fresh USB run passed 100 queries, 10 reopens, owned-contact CRUD/cleanup, warm reboot and radio2 checks, with 18/18 ports closed, zero stable framing rejects and clean core flags. Its normal 25-second BLE discovery still failed with zero sessions. LoRa was not requalified at 42f7df08; the earlier f807 RF pass remains source-bound.
Combined serial delivery avoided legacy UF2 scratch `0xE0000..0xEA000`, which overlaps internal ExtraFS. Its staging and f807 restore remain below ExtraFS. No filesystem-preservation claim replaces runtime checks.
A subsequent 90-second scan by the independently verified Bluetooth address also failed to reach a connection on normal Full `42f7df08`. The requested physical battery restart was still unconfirmed, so this is not battery-only evidence.
Cold boot, physical battery-only BLE, complete phone/feature testing and fleet qualification remain untested. Longer USB-powered scans are not battery tests. [Safe JSON](companion_qualification_f807_followup_2026-10-19.safe.json) retains source bindings, workflow distinctions and evidence digests without device secrets or raw addresses.
@@ -0,0 +1,493 @@
{
"baseline_source_commit": "f80751354ffc530461e87109ced4f575d3950a52",
"baseline_version": "v1.18.0.1-halo-keymind-cascade-dev-f8075135",
"boards": [
{
"axes": {
"ble": {
"all_sessions_disconnected": true,
"evidence": "rak-ble.safe.json",
"finished_at": "2026-10-20T03:57:37.611821+00:00",
"full_version_matches": true,
"hold_seconds_requested": 30.0,
"nus_services_verified": true,
"sessions_completed": 3,
"sessions_requested": 3,
"status": "passed",
"uptime_monotonic": true,
"usb_public_identity_matches": true
},
"rf": {
"directions_verified": 2,
"evidence": "rf.safe.json",
"exact_dev_datagrams": true,
"owned_channels_cleared": true,
"peer": "t1000",
"radio_leases_restored": true,
"scope": "Zero-hop DATA_TYPE_DEV datagrams; not text, range or RF calibration.",
"status": "passed"
},
"usb": {
"core_error_flags": 0,
"evidence": "rak-usb.safe.json",
"finished_at": "2026-10-20T03:50:24.438315+00:00",
"full_runtime_version": "v1.18.0.1-halo-keymind-cascade-dev-f8075135 (Build: 20-Oct-2026)",
"owned_contact_crud_passed": true,
"owned_contact_removed_and_reopen_verified": true,
"persistent_query_cycles": 100,
"ports_closed": 18,
"ports_opened": 18,
"radio2_passed": true,
"reopens": 10,
"stable_discarded_prefix_bytes": 0,
"stable_invalid_length_candidates": 0,
"status": "passed",
"transport_scope": "Stable binary sessions; ASCII setup and deliberate reboot recovery recorded separately.",
"warm_reboot_verified": true
}
},
"key": "rak",
"name": "RAK 4631",
"normal_full_restored_and_runtime_verified": true,
"overall": "passed",
"source_commit": "f80751354ffc530461e87109ced4f575d3950a52"
},
{
"axes": {
"ble": {
"connection_failure_inferred": false,
"evidence": "t1000-42f7df08-ble.safe.json",
"failure_stage": "current_advertisement_identity_gate",
"failure_type": "GateError",
"finished_at": "2026-10-20T04:33:52.224067+00:00",
"scan_seconds": 25,
"sessions_completed": 0,
"sessions_requested": 3,
"source_commit": "42f7df082fc4c7362ecd5c18c8644ab25b51b9e9",
"status": "failed"
},
"rf": {
"current_source_rf_pass_claimed": false,
"retained_prior_result": {
"directions_verified": 2,
"evidence": "rf.safe.json",
"owned_channels_cleared": true,
"radio_leases_restored": true,
"source_commit": "f80751354ffc530461e87109ced4f575d3950a52",
"status": "passed"
},
"source_commit": "42f7df082fc4c7362ecd5c18c8644ab25b51b9e9",
"status": "not_requalified"
},
"usb": {
"core_error_flags": 0,
"evidence": "t1000-42f7df08-usb.safe.json",
"finished_at": "2026-10-20T04:32:30.130040+00:00",
"full_runtime_version": "v1.18.0.1-halo-keymind-cascade-dev-42f7df08 (Build: 20-Oct-2026)",
"owned_contact_crud_passed": true,
"owned_contact_removed_and_reopen_verified": true,
"persistent_query_cycles": 100,
"ports_closed": 18,
"ports_opened": 18,
"radio2_passed": true,
"reopens": 10,
"source_commit": "42f7df082fc4c7362ecd5c18c8644ab25b51b9e9",
"stable_discarded_prefix_bytes": 0,
"stable_invalid_length_candidates": 0,
"status": "passed",
"transport_scope": "Stable binary sessions; ASCII setup and deliberate reboot recovery recorded separately.",
"warm_reboot_verified": true
}
},
"key": "t1000",
"name": "Seeed T1000-E",
"normal_full_restored_and_runtime_verified": true,
"overall": "failed",
"source_commit": "42f7df082fc4c7362ecd5c18c8644ab25b51b9e9"
}
],
"bootloader_correction": {
"application_ble_cause_proven": false,
"bootloader_install_workflow": {
"combined_dfu_transfer_returncode": 0,
"failure_stage": "post_transfer_missing_msc_disk",
"installer_returncode": 1,
"later_exact_bound_public_info_verification": "passed",
"original_failure_preserved": true,
"status": "failed"
},
"candidate_pr": "https://github.com/mikecarper/Adafruit_nRF52_Bootloader_OTAFIX/pull/1",
"code_endf_guard_proves_filesystem_preservation": false,
"combined_serial_staging_rounded_end": "0x57000",
"combined_zip_sha256": "8db09e6b7f253b1e54aae754220f0d1053d369c07bff299a26b384233de6e234",
"defect": "T1000-E active-high P0.06 configured pull-up/active-low; RESET P0.18 treated as second user control.",
"delivery_used": "Reviewed exact-device combined SD+BL USB installer, then separate exact same Fullf807 app-only restoration.",
"existing_dfu_entry_checks_passed": 13,
"f807_restore_rounded_end": "0xB9000",
"final_head_ble_fix_demonstrated": false,
"final_normal_head_installed": "42f7df082fc4c7362ecd5c18c8644ab25b51b9e9",
"hardware_fix_claimed": false,
"host_actual_function_tests_passed": 11,
"installation_status": "public_candidate_version_verified_after_combined_transfer",
"installed_complete_image_readback_verified": false,
"installed_manifest_crc_verified": false,
"internal_extrafs_start": "0xD4000",
"legacy_uf2_scratch_overlaps_internal_extrafs": true,
"manifest_crc32": "6BA4D206",
"manifest_crc_scope": "Offline package CRC only; installed CRC was not exposed.",
"packed_test_version": "0x02040C01",
"post_install_rf_requalified": false,
"post_install_same_f807_ble": {
"ble_fix_demonstrated": false,
"discovery_seconds": 90,
"evidence": "t1000-after-button-bootloader-ble.safe.json",
"explicit_address_targeted": true,
"failure_stage": "current_advertisement_identity_gate",
"failure_type": "GateError",
"finished_at": "2026-10-20T04:29:48.854863+00:00",
"sessions_completed": 0,
"status": "failed"
},
"post_install_same_f807_usb": {
"evidence": "t1000-after-button-bootloader-usb.safe.json",
"final_core_error_flags": 0,
"finished_at": "2026-10-20T04:27:56.032934+00:00",
"full_100_cycle_10_reopen_campaign_repeated": false,
"full_runtime_version": "v1.18.0.1-halo-keymind-cascade-dev-f8075135 (Build: 20-Oct-2026)",
"persistent_query_cycles": 15,
"ports_closed": 5,
"ports_opened": 5,
"reopens": 2,
"same_public_identity_as_before": true,
"stable_discarded_prefix_bytes": 0,
"stable_invalid_length_candidates": 0,
"status": "passed"
},
"public_info": {
"board_id": "nRF52840-T1000-E-v1",
"exact_image_version_verified": true,
"info_sha256": "de7c21cbd600b54e9fed7ed483cfe38fba36206814487c2ac73ddeed81d08753",
"model": "Seeed T1000-E for Meshtastic",
"reader": "identity-bound read-only public FAT16 INFO_UF2",
"version": "TEST_0x02040C01"
},
"released_version_claimed": false,
"remote_ble_only_bootloader_entry_planned": false,
"required_cross_builds_passed": [
"t1000_e",
"heltec_t096",
"heltec_t114"
],
"separate_same_f807_app_restore_workflow": {
"adapter_returncode": 0,
"fresh_runtime_verified_separately": true,
"programming_returncode": 0,
"status": "passed"
},
"source_commit": "c0c421184a3cf1ca66b40b055101f20b8c587e26",
"upstream_correction_url": "https://github.com/meshtastic/Adafruit_nRF52_Bootloader_OTAFIX/commit/0f415c3ee26816ad52a7587b3d6cdd30547987ec"
},
"campaign_local_date": "2026-10-19",
"carried_forward_failures": [
{
"ble": "not_qualified",
"key": "xiao_nrf",
"name": "Seeed XIAO nRF52",
"new_pass_claimed": false,
"reason": "Prior normal USB/runtime failure retained; no new passing recovery in this follow-up.",
"rf": "not_qualified",
"status": "failed"
}
],
"diagnostics": {
"bluez_unpaired_name_cache": {
"ble_pass_claimed": false,
"bond_info_file_present": false,
"duplicate_address_proven": false,
"limit": "Cached name can affect name filtering without current scan-response evidence; current RF payload and USB-bound GATT identity remain distinct.",
"normal_full_version_and_configured_name_verified_over_usb": true,
"root_cause_proven": false,
"stale_name": "T1000-BLE-PROBE"
},
"minimal_lfrc_probe": {
"clock": "LFRC",
"crystal_defect_proven": false,
"diagnostic_only": true,
"evidence": "lfrc-probe/artifact.json",
"full_acceptance": false,
"production_clock_change_justified": false,
"sdk_rc_config": {
"accuracy": 0,
"rc_ctiv": 16,
"rc_temp_ctiv": 2,
"source": 0
},
"zip_sha256": "b5bf563e72608f637694a65a3efdfc61dfdf4b3d9dcf47285bd3cb153a116eb6"
},
"official_upstream_reference": {
"app_base": "0x27000",
"application_only": true,
"bootloader_and_softdevice_independently_varied": false,
"bounded_pi_target_advertisement_found": false,
"counts_as_full_qualification": false,
"evidence": "upstream-reference/artifact.json",
"normal_full_f807_restored_afterward": true,
"phone_observation_qualified": false,
"release": "meshcore-dev/MeshCore companion-v1.18.0",
"softdevice_fwid": "0x0123",
"source_url": "https://github.com/meshcore-dev/MeshCore/releases/tag/companion-v1.18.0",
"zip_sha256": "79e53c2ce13521ccda5db3621a68f79728d2f241c3a8345e4107b7ae6b5a374d",
"zip_uf2_application_bytes_identical": true
},
"softdevice_readback": {
"exact_package_bytes_match_reported_by_coordinator": true,
"expected_binary_sha256": "fbd42f29af8f95309e7aaef9f60994e4749526c3e0c08cb30a8bf44bbda78663",
"family": "S140",
"fwid": "0x0123",
"manufacturer_package_has_identical_softdevice": true,
"readback_crc32": "733639BD",
"rf_operation_proven_by_image_crc": false,
"version": "7.3.0"
},
"t1000_later_address_targeted_pi_followup": {
"bounded_observation_seconds": 90,
"evidence": "t1000-pi-followup.safe.json",
"finished_at": "2026-10-20T04:21:28.920775+00:00",
"normal_firmware_qualified_by_this_followup": false,
"sessions_completed": 0,
"status": "failed",
"usb_bluetooth_enabled": true,
"usb_core_error_flags": 0,
"usb_stealth_off": true,
"usb_uptime_seconds": 1266
}
},
"evidence": {
"bootloader_host_test_source": {
"kind": "source",
"sha256": "15c3858b45f58dba68b06bc5fe44de9d517d943a31e9a9d80cc02276e2bcabdb",
"source_commit": "c0c421184a3cf1ca66b40b055101f20b8c587e26"
},
"build-t096-final.log": {
"kind": "cross_build_and_package_log",
"sha256": "dc88bf27ed50f6e594687d6543f0e2721295e7484c89fdd6a2f9dbb26130940a"
},
"build-t1000-final.log": {
"kind": "cross_build_and_package_log",
"sha256": "3ca818fad79107234f4de72ab8e1302528e33b5262b11b2dd1737e60eeeab8d6"
},
"build-t114-final.log": {
"kind": "cross_build_and_package_log",
"sha256": "8ca9432ff8b8eab043aff83b49705bc05f61db4e6fb73e1e79eb728dc79c04e4"
},
"candidate-public-info.safe.json": {
"kind": "sanitized_post_bootloader_evidence",
"sha256": "45720bfb7125a41de4577751778f44d3cb17cba629660fdfa837595b710469f3"
},
"lfrc-probe/artifact.json": {
"kind": "diagnostic_artifact_provenance",
"sha256": "168db359b82d62a82ae66b278175fc9477a844fa0f3eeea3c4321ac8da48a067"
},
"rak-ble.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "8afe8acf3ff97238b428115e140f0d2ea4c51c86cb9df319f62406b83edc7beb"
},
"rak-usb.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "4423a497f9efb6f7db577a0454e28083103c3552cdadd721db6f1b33fd0b7436"
},
"rf.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "8c7a50bfd5916e02f6384ad449351e1a72d40c46aac8b4c9b97f2f19f75ba161"
},
"t1000-42f7df08-address-ble.safe.json": {
"kind": "sanitized_current_head_qualification_summary",
"sha256": "5f79f2c78b02db08c9b33d9cfca7fd93300d3b68dc24d02c2bda023c5db54b5b"
},
"t1000-42f7df08-ble.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "5046e90293d797097b8598023c3f2a154674b52c0a5259f0cbea18c0ba627b59"
},
"t1000-42f7df08-usb.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "d6bf10ff6fb4a54d38f40c601cf5b682c360a0372de8900ef356937ffda5be59"
},
"t1000-after-button-bootloader-ble.safe.json": {
"kind": "sanitized_post_bootloader_evidence",
"sha256": "dc290023671b164a1a82a1c63c89a5058a17e58e6e2d77d243120e0fab5e7392"
},
"t1000-after-button-bootloader-usb.safe.json": {
"kind": "sanitized_post_bootloader_evidence",
"sha256": "8e74de0e231a2996c650f93d5d309feda24d56b416f10277c311234196582f8a"
},
"t1000-ble.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "128cabd382c517e750a5b125397539d09613bdb530378fdb5748013e3c243df3"
},
"t1000-pi-followup.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "3d8d8c9cf9f40d2dee1a7a45a10348254ccab3fa60518509062c02ada72090b0"
},
"t1000-usb.safe.json": {
"kind": "sanitized_qualification_summary",
"sha256": "0811e3bdee08a4004ecf9f64a07ebb3a52faa44c60ad4632f8d21d35b5e1dab6"
},
"upstream-reference/artifact.json": {
"kind": "diagnostic_artifact_provenance",
"sha256": "23120c40b9a53cdcf0ce2f04fa5e6354e1f0110d7b91b83681e147b493929763"
}
},
"final_normal_head": {
"application_zip_sha256": "7fac141e40183ada315f70b296583eaf854fd819c76fbd896a1f0f2e4a405e5b",
"ble_evidence": "t1000-42f7df08-ble.safe.json",
"ble_qualification_status": "failed",
"ble_sessions_completed": 0,
"explicit_address_followup": {
"discovery_seconds": 90,
"evidence": "t1000-42f7df08-address-ble.safe.json",
"physical_battery_test_confirmed": false,
"sessions_completed": 0,
"status": "failed"
},
"installation_status": "installed_successfully",
"post_corrected_bootloader": true,
"rf_qualification_status": "not_requalified",
"source_commit": "42f7df082fc4c7362ecd5c18c8644ab25b51b9e9",
"usb_evidence": "t1000-42f7df08-usb.safe.json",
"usb_qualification_status": "passed"
},
"generated_at": "2026-10-20T04:31:16.913541+00:00",
"measured_source_commits": {
"rak": "f80751354ffc530461e87109ced4f575d3950a52",
"t1000": "42f7df082fc4c7362ecd5c18c8644ab25b51b9e9"
},
"overall": "failed_incomplete",
"prior_f807_selected_board_results": [
{
"axes": {
"ble": {
"all_sessions_disconnected": true,
"evidence": "rak-ble.safe.json",
"finished_at": "2026-10-20T03:57:37.611821+00:00",
"full_version_matches": true,
"hold_seconds_requested": 30.0,
"nus_services_verified": true,
"sessions_completed": 3,
"sessions_requested": 3,
"status": "passed",
"uptime_monotonic": true,
"usb_public_identity_matches": true
},
"rf": {
"directions_verified": 2,
"evidence": "rf.safe.json",
"exact_dev_datagrams": true,
"owned_channels_cleared": true,
"peer": "t1000",
"radio_leases_restored": true,
"scope": "Zero-hop DATA_TYPE_DEV datagrams; not text, range or RF calibration.",
"status": "passed"
},
"usb": {
"core_error_flags": 0,
"evidence": "rak-usb.safe.json",
"finished_at": "2026-10-20T03:50:24.438315+00:00",
"full_runtime_version": "v1.18.0.1-halo-keymind-cascade-dev-f8075135 (Build: 20-Oct-2026)",
"owned_contact_crud_passed": true,
"owned_contact_removed_and_reopen_verified": true,
"persistent_query_cycles": 100,
"ports_closed": 18,
"ports_opened": 18,
"radio2_passed": true,
"reopens": 10,
"stable_discarded_prefix_bytes": 0,
"stable_invalid_length_candidates": 0,
"status": "passed",
"transport_scope": "Stable binary sessions; ASCII setup and deliberate reboot recovery recorded separately.",
"warm_reboot_verified": true
}
},
"key": "rak",
"name": "RAK 4631",
"normal_full_restored_and_runtime_verified": true,
"overall": "passed",
"source_commit": "f80751354ffc530461e87109ced4f575d3950a52"
},
{
"axes": {
"ble": {
"connection_failure_inferred": false,
"evidence": "t1000-ble.safe.json",
"failure_stage": "current_advertisement_identity_gate",
"failure_type": "GateError",
"finished_at": "2026-10-20T03:53:17.589165+00:00",
"hold_seconds_requested": 30.0,
"sessions_completed": 0,
"sessions_requested": 3,
"status": "failed"
},
"rf": {
"directions_verified": 2,
"evidence": "rf.safe.json",
"exact_dev_datagrams": true,
"owned_channels_cleared": true,
"peer": "rak",
"radio_leases_restored": true,
"scope": "Zero-hop DATA_TYPE_DEV datagrams; not text, range or RF calibration.",
"status": "passed"
},
"usb": {
"core_error_flags": 0,
"evidence": "t1000-usb.safe.json",
"finished_at": "2026-10-20T03:49:08.548576+00:00",
"full_runtime_version": "v1.18.0.1-halo-keymind-cascade-dev-f8075135 (Build: 20-Oct-2026)",
"owned_contact_crud_passed": true,
"owned_contact_removed_and_reopen_verified": true,
"persistent_query_cycles": 100,
"ports_closed": 18,
"ports_opened": 18,
"radio2_passed": true,
"reopens": 10,
"stable_discarded_prefix_bytes": 0,
"stable_invalid_length_candidates": 0,
"status": "passed",
"transport_scope": "Stable binary sessions; ASCII setup and deliberate reboot recovery recorded separately.",
"warm_reboot_verified": true
}
},
"key": "t1000",
"name": "Seeed T1000-E",
"normal_full_restored_and_runtime_verified": true,
"overall": "failed",
"source_commit": "f80751354ffc530461e87109ced4f575d3950a52"
}
],
"privacy": {
"bluetooth_addresses_included": false,
"passkeys_included": false,
"raw_contact_or_channel_records_included": false,
"raw_private_keys_included": false,
"usb_serials_included": false
},
"remaining_work": [
"T1000 normal BLE qualification remains failed.",
"Physical battery-only restart/observation and cold-boot testing remain pending; USB-powered long scans do not qualify them.",
"XIAO nRF52 normal runtime recovery remains failed.",
"RF at42f7df08, phone interoperability, full feature and13-radio fleet qualification are not established."
],
"report_status": "failed_incomplete",
"schema_version": 1,
"scope": {
"all_three_axes_passed": 1,
"cold_boot_tested": false,
"fleet_13_qualified": false,
"fleet_inventory_refreshed": false,
"independent_observer_acceptance_complete": false,
"phone_interoperability_qualified": false,
"physical_battery_only_ble_tested": false,
"repeaters_qualified": false,
"required_axis_failed": 1,
"selected_companions_requalified": 2
},
"updated_at": "2026-10-20T04:35:34.121146+00:00"
}
@@ -55,3 +55,5 @@ Original histories remain in [the earlier campaign report](hardware_validation_m
[Machine-readable results](companion_qualification_followup_2026-10-19.safe.json) contain source-bound board records and SHA-256 evidence digests.
The unit-test workflow passed all 12 jobs for source `51538f03`: [GitHub run](https://github.com/mikecarper/MeshCore/actions/runs/39350014767).
Later selected-board evidence, the T1000 bootloader button correction and the final Full Companion USB/BLE results are recorded in [the diagnosis follow-up](companion_qualification_f807_followup_2026-10-19.md). The T1000 BLE and XIAO nRF52 failures remain open.