diff --git a/docs/cli_commands.md b/docs/cli_commands.md index ba2821332..d345445bf 100644 --- a/docs/cli_commands.md +++ b/docs/cli_commands.md @@ -3149,6 +3149,10 @@ defer sleep. Existing hard low-voltage protection remains in force. On ESP32, an active native USB connection uses short CPU idle waits to keep the console usable while the radio sleeps. Timed light sleep resumes after USB detaches and its disconnect grace expires. +On nRF52, an enumerated USB host limits each CPU idle slice to 100 ms so +reconnects and replies can progress while LoRa remains asleep. Detached +maintenance intervals remain up to ten seconds; command completion can need +several passes through the main loop. ```text get power.emergency @@ -3164,8 +3168,8 @@ five seconds for its reply. `power.awake` keeps the node up for the next given number of minutes (0 cancels; maximum 10080), even outside the hourly window. That override is held in RAM and ends on reboot; it never disables hard low-voltage shutdown. Use it before maintenance that needs continuous uptime. -LoRa commands must arrive during an awake window. Local USB commands can wait -up to one ten-second maintenance interval while the node is sleeping. +LoRa commands must arrive during an awake window. Local serial commands remain +available through maintenance wakes while the radio sleeps. `get power.emergency` reports the mode, battery estimate, desired `window`, actual radio ownership, seconds until the next awake window, and remaining diff --git a/docs/test-results/emergency_power_2026-10-28.md b/docs/test-results/emergency_power_2026-10-28.md index 79deed605..8f75ea7f9 100644 --- a/docs/test-results/emergency_power_2026-10-28.md +++ b/docs/test-results/emergency_power_2026-10-28.md @@ -12,6 +12,11 @@ SolarXiao 33S, RAK3401 and Heltec V4.3 passed physical sleep, override, automati wake and reboot-persistence trials. Current savings and operation with a real battery at 5% were not measured. +The later [1.18.0.2 bench campaign](hardware_validation_mercerwood_1_18_0_2_2026-10-28.md) +found and fixed nRF52 USB reconnect starvation during automatic emergency +sleep. Attached USB hosts now use CPU idle slices of at most 100 ms while +LoRa stays asleep. The measurements below retain their original source. + ## Behavior Supported infrastructure images enter automatic emergency mode at **5% or diff --git a/docs/test-results/hardware_validation_mercerwood_1_18_0_2_2026-10-28.md b/docs/test-results/hardware_validation_mercerwood_1_18_0_2_2026-10-28.md new file mode 100644 index 000000000..d3a2a8d83 --- /dev/null +++ b/docs/test-results/hardware_validation_mercerwood_1_18_0_2_2026-10-28.md @@ -0,0 +1,234 @@ + + + + +# Mercerwood 1.18.0.2 candidate checks, 28 October 2026 + +Status: **COMPLETED WITH UNRESOLVED RESULTS**. This finite campaign covers **15 radios**; the +Indicator's separate RP2040 display coprocessor is excluded from radio flashing. +S3 remains unqualified; T1000-E/T096 BLE and Tower RF misses remain unresolved. +This is not release approval. Results retain the source +actually measured; a later build does not inherit an earlier physical pass. +The [machine-readable evidence summary](hardware_validation_mercerwood_1_18_0_2_2026-10-28.safe.json) +records the source and artifact hashes. + +| Board | Role | Measured source | USB / warm reboot | BLE | Zero-hop LoRa | +| --- | --- | --- | --- | --- | --- | +| Seeed T1000-E | Full Companion | 226 | PASS | FAIL, first USB-release phase; second not attempted | PASS, three rounds each way | +| RAK WisMesh Tag | Full Companion | 226 | PASS | PASS, three clean sessions | PASS as observer for all three pairs | +| Heltec T096, FEM on | Full Companion | 226 | PASS | Three payload sessions; strict FAIL (`0x3e`) | PASS, three rounds each way | +| Heltec MeshPocket | Full Companion | 226 | PASS | PASS, three clean sessions | PASS, three rounds each way | +| Heltec V4.3, FEM off | Full Companion | C9 | PASS | PASS with restored original PIN, after host bond repair | PASS, separate cleanup-comparison review | +| Heltec V3 | Repeater | C9 | PASS | Not applicable | PASS with discovery temporarily enabled | +| LilyGo T-Deck | Repeater | C9 | PASS | Not applicable | PASS with discovery temporarily enabled | +| SenseCAP Indicator | Repeater | C9 | PASS, after 29.3-second startup | Not applicable | PASS with discovery temporarily enabled | +| Heltec V4.2 | Repeater | C9 | PASS | Not applicable | PASS, three discovery responses | +| Heltec MeshTower V2 SD | Repeater | 70C7 | PASS, including automatic emergency radio sleep | Not applicable | Unresolved missing responses; RXPS-off trial also incomplete | +| SolarXiao MPPT 33S | Repeater | 70C7 | PASS | Not applicable | PASS, three discovery responses | +| RAK3401 | Repeater / MQTT collector | 70C7 | PASS | Not applicable | PASS after warm preparation, with discovery temporarily enabled | +| Seeed XIAO nRF52840 | Repeater | 70C7 | PASS | Not applicable | Three responses pass; restoration confirmed separately | +| RAK4631 | Repeater | 70C7 | PASS; legacy getter limits below | Not applicable | PASS after warm preparation, three discovery responses | +| Seeed XIAO ESP32-S3 WIO | Observer Repeater target | Original retained | Unqualified; no programmer response | Not applicable | Unqualified | + +C9 is [`c9acec474`](https://github.com/mikecarper/MeshCore/commit/c9acec474bb9617d4f92dbdc0401765701989288). +70C7 is [`70c7d5b47`](https://github.com/mikecarper/MeshCore/commit/70c7d5b478b19f16d232389779ca455e73be7eba). +226 is [`226ccc332`](https://github.com/mikecarper/MeshCore/commit/226ccc332d29e78c3dc69cdb70a228baca403711). +70C7 changes the nRF52 emergency CPU idle backend; 226 changes the nRF52 +Companion BLE lifecycle. V3 and V4.2 report the observer suffix in their runtime +version. The RAK4631 hardware result is for its 70C7 Repeater image; the separate +Full Companion capacity build and uninstalled S3 Observer build are described below. + +## Measurements + +USB qualification requires **100 query cycles, ten fresh reopens and one +verified warm reboot**, with zero core flags. Companion checks cover owned +contact creation/persistence/removal, natural expiry of a one-minute RAM-only +radio2 lease, and restoration of the original secondary profile/automatic owner. +Transmit-power and saved Bluetooth PIN setters require acknowledgement, +readback, reopen and restoration. Actual RF power and an active PIN changing +before restart were not measured. + +BLE requires three authenticated thirty-second sessions, the USB-bound public +identity/device information and a clean HCI lifecycle. Payload delivery and +strict HCI acceptance are separate results. T1000-E uses target-only USB host +deauthorization; USB power remains uncommanded, so this is not a battery-only +or physical cable-unplug test. + +On 226, Tag and MeshPocket pass both payload and strict HCI checks. T096 passes +all three payload sessions and encryption succeeds three times, but its trace +has an extra connection ending with `0x3e`; strict acceptance therefore fails. +No missing-key marker or host Bluetooth-service crash was observed in that +trial, and its cause is unassigned. + +T1000-E's 226 trial actually released USB host ownership and waited ten seconds, +leaving host WiFi unchanged. Its first phase completed no payload session: +GATT reported `Unlikely Error (0x0e)`, with HCI disconnect reasons `0x3e` and +`0x13`. Encryption succeeded once; no missing-key marker or host daemon crash +was observed. The second phase was not attempted after that failure. USB +enumeration, identity, preferences, contacts, channels and uptime continuity +were verified afterward, with zero core flags and queue length. No further +BLE/RF retries were made. + +On C9, the T1000-E completed three payload sessions in its normal-host-WiFi trial, +but the controller recorded an extra connection and disconnect reasons +`0x3e` / `0x22`. A controlled WiFi-quiet trial completed no payload sessions, +with `0x3e` / `0x08`; host WiFi and USB authorization were restored. Quieting +WiFi did not establish a remedy. A separate radio2-off diagnostic found no +unique matching advertisement within its bounded scan, so it attempted no +connection and captured no authentication failure under that condition. + +The V4.3 initially had a host/device bond mismatch. Target-only host bond repair +later yielded three clean thirty-second sessions with the original saved PIN +restored. A temporary-PIN phase failed while BlueZ 5.66 crashed during +notification setup; that failure remains recorded. Identity, settings, +contacts, channels and unrelated host bonds were checked afterward. This is +a conditional C9 pass; no firmware remedy for the host crash is claimed. + +RF trials use shipping firmware, zero-hop controls, fresh nonces, full peer +identity and physical TX/RX counters. Live control pushes leave the offline +message queue untouched. Bench RF/TX settings and owned awake holds are +restored. Repeater discovery checks the radio2 extension within the existing +four-per-two-minute limiter. + +The fresh 226 Tag star completed **all 18 legs**: three exchanges in each +direction with T1000-E, T096 and MeshPocket. Every leg matched the identity, +nonce and physical packet counters, with zero receive errors; the slowest took +**0.524 seconds**. Original radio/TX settings, binary preferences, contacts and +channels were restored, with no offline-queue reads or RF retries. Earlier C9 +exchanges remain separate history. +V3, T-Deck, Indicator and RAK3401 had discovery hidden by their saved advert +settings. Their conditional trials temporarily enabled discovery on the +isolated bench profile and restored the original values. A missing response +while discovery was disabled is not a failed response from an eligible node. + +The Tower returned two of three baseline requests, one of two quiet, paced +requests, and one of two requests with RX power saving disabled. Missing +responses remain unresolved; disabling RXPS did not establish a remedy. +Original settings and its automatic emergency mode with no awake hold were +restored after each measured trial. + +Separate reviews accepted the original V4.3 six exchanges and XIAO nRF52840 +three responses: their harness failures compared changing timing/countdown or +live battery fields as saved settings. Read-only checks confirmed restoration; +no RF was repeated. Original failures remain recorded. Preflight formatter/type +errors sent no requests. A manual V3 diagnostic exposed an unsafe host transport +fallback; recovery completed and the harness now requires an explicit reviewed +transport before opening a port. + +## Production fixes + +The Tower reported 0% battery and entered automatic emergency radio sleep. +The first candidate's ten-second CPU idle slices starved USB cleanup/reply +draining: queries and three reopens passed, but the fourth received no reply. +Its original application and queried configuration were restored before the fix. + +70C7 caps CPU idle slices at **100 ms while a USB host is enumerated**, retaining +the ten-second detached limit. It does not wake LoRa or change the battery +policy. On the Tower, automatic mode, reported 0%, sleeping radio and no awake +override were verified before and after USB stress, and again after warm reboot. +All **213 completed commands** responded, with a maximum measured latency of +**1.0952 seconds**. The backend's five tests and runtime's thirteen tests pass +with address and undefined-behavior sanitizers. Actual battery state of charge +and current draw were not measured. + +Earlier [emergency-power checks](emergency_power_2026-10-28.md) retain their +original source; this campaign adds the automatic-entry USB regression/retest. + +A host regression reproduced a BLE connection stuck after USB disabled/re-enabled +Bluetooth while a callback was delayed. 226 rejects stale physical sessions, +uses bounded disconnect recovery and preserves a replacement connection when +an old disconnect arrives. **25 focused native tests passed**, covering delayed +callbacks, normal sessions, retry timing and advertising recovery. Four Full +nRF52 Companion packages pass capability checks with unchanged linked RAM +admission. All four pass their new 100-query, ten-reopen and warm-reboot checks; +all 18 new RF legs also pass. Tag/Pocket BLE passes and T096's strict lifecycle +exception are reported separately above. The earlier T1000-E failures remain +causally unassigned. + +## Emergency scheduling and collector + +On 70C7, SolarXiao MPPT 33S and RAK3401 completed a real one-minute awake lease, +two accelerated past-RTC hourly wake boundaries and manual-mode persistence +through a verified warm reboot. Independent advertisements proved timer wake +after approximately **22 seconds without a target USB write** at each boundary. +The CPU remained connected to an enumerated USB host; these are RF scheduling +measurements, not detached-host or current-consumption measurements. + +Solar's first manual-reboot check closed CDC before the command was consumed. +Its successful lease/timer-wake observations remain separate from that failed +axis. The corrected single-write driver holds CDC until reset or 1.5 seconds; +a focused follow-up proved reduced uptime and manual persistence without +repeating the wake trials. RAK3401 completed the corrected full trial. + +Present UTC was restored before original RF settings, and owned awake holds +were revoked. A separate full-body read-only comparison verified **two Solar +ACL entries and one RAK3401 ACL entry**, available saved settings and trusted +OTA signer lists. Earlier first-line-only ACL counts are superseded by that +complete comparison. Solar's observed CAD flag and the quiet watchdog flags +on some boards remain in the preparation history; warm preparation is not +counted as a clean long-duration run. + +The collector's five configuration/unit digests, original active state and +serial ownership were restored. One owned RAW packet was observed in its +journal with receive metadata and a successful local MQTT publish call. Receipt +at an external broker was not measured. + +## Builds and limits + +The Indicator's first candidate readiness check received no reply within six +seconds. Its original application and data were restored and verified before +one controlled trial of the same candidate. That trial received the exact +version and original identity after **29.3055 seconds**, then passed the unchanged +100-query / ten-reopen / warm-reboot qualification with zero core flags. The +startup wait is preparation, not extra accepted query cycles; the original +failure and each unsuccessful readiness probe remain recorded. + +The initial **15 board plans / 20 packaged profiles** pass RAM/capability checks, +including Full/Reduced images for five nRF52 Repeaters. Four replacement Full +Companion packages were checked for 226. The provisional XIAO ESP32-S3 Companion +target is superseded by an uninstalled Observer Repeater build. PlatformIO +ran serially. Full application installs omit bootloader, SoftDevice, filesystem +and partition-table images. ESP32 recovery restored original applications and +NVS/SPIFFS snapshots with readback verification. + +An additional RAK4631 **Full Companion** build at `f6034e1f`, using the CI library +versions and maximum development-version length, passes capacity checks with +a **712,652-byte packaged application in 712,704 bytes: 52 bytes free**. Its final +change shortens Bluetooth startup diagnostics. This is a build-only result; +that Companion image was not installed on the tested Repeater. The S3 Observer +Repeater package at `5a72a991` also passes build checks and remains uninstalled. + +The user explicitly made original-image backups optional for these test radios. +RAK4631 therefore received its verified 70C7 application through working CDC +DFU without an original rollback image. It passed 100 queries, ten reopens, +warm reboot, exact candidate image/identity checks and current-RTC readiness; +its final core flags and queue were zero. Seven available original settings +and the OTA signer list matched. Its older firmware returned `??:` for password, +ACL and several newer getters, so their preservation cannot be established +from those queries. The original comparison failure remains recorded; a narrow +legacy-error classification review and fresh readiness check accepted the +completed measurements without reflashing or repeating them. Bootloader +version text changed from its numeric fallback to `OTAFIX2.4.12`; no bootloader +image was written, and a before/after CRC-equality claim is not made. + +RAK4631's later RF preflight refused a latched idle watchdog flag `8` before +sending any request. One documented warm reboot reduced uptime from 2,545 to +4 seconds; the unchanged 70C7 image then returned all three exact discovery +responses to the 226 Tag observer, including the matching radio2 extension. +Fifteen available current settings, one current ACL entry and OTA signers +matched across that warm preparation. This does not establish the unavailable pre-upgrade password/ACL +state or long-duration idle reliability. + +XIAO ESP32-S3 did not answer application probes or the programmer after two +physical ROM-entry attempts. No firmware was written. A MAC-bound DHCP/neighbour +lookup found no address, so no HTTP identification probe was made. It remains +unqualified; an enumerated USB device alone does not prove a working application. + +The remaining release gates are the Tower's missing discovery responses, +T096's extra BLE connection, T1000-E's failed BLE phase and the unqualified +S3. Successful checks on other interfaces do not clear those results. + +Read-only OTA readiness is distinct from an actual LoRa firmware transfer and +installation. These checks do not establish range, calibrated transmit power, +display pixel quality, cold-power recovery, phone interoperability, current +savings, long-duration reliability or every firmware feature. diff --git a/docs/test-results/hardware_validation_mercerwood_1_18_0_2_2026-10-28.safe.json b/docs/test-results/hardware_validation_mercerwood_1_18_0_2_2026-10-28.safe.json new file mode 100644 index 000000000..cccab969e --- /dev/null +++ b/docs/test-results/hardware_validation_mercerwood_1_18_0_2_2026-10-28.safe.json @@ -0,0 +1,9260 @@ +{ + "schema": 2, + "updated_utc": "2026-10-28T17:19:25.167443+00:00", + "status": "COMPLETE WITH UNRESOLVED AXES", + "campaign": "Mercerwood 1.18.0.2 candidate qualification", + "all_boards_fully_qualified": false, + "markdown_sha256_lf_utf8": "c21519be2e123a981b34134578b74e62bbc9d04f42d6dcdd1a71db35f0cf3b3e", + "unresolved_axes": [ + { + "board": "Heltec MeshTower V2 SD", + "axis": "RF discovery", + "finding": "Missing replies in baseline, paced and continuous-RX trials; original settings restored." + }, + { + "board": "Heltec T096", + "axis": "strict BLE lifecycle", + "finding": "Three payload sessions passed, but an extra connection ended with 0x3e." + }, + { + "board": "Seeed T1000-E", + "axis": "BLE after actual USB host release", + "finding": "Corrected 226 first phase failed with zero payload sessions; phase 2 not attempted. USB and settings restored." + }, + { + "board": "Seeed XIAO ESP32-S3 WIO", + "axis": "firmware installation and runtime qualification", + "finding": "No application or programmer response; no flash write performed." + } + ], + "inventory": { + "radios": 15, + "observed_companions": 5, + "observed_repeaters": 9, + "unresponsive_historical_repeater": 1, + "excluded_display_coprocessors": 1 + }, + "candidate_usb_passes": 14, + "sources": { + "c9": "c9acec474bb9617d4f92dbdc0401765701989288", + "70c7": "70c7d5b478b19f16d232389779ca455e73be7eba", + "226": "226ccc332d29e78c3dc69cdb70a228baca403711", + "5a72": "5a72a991227a8c3062a8291091862289e4cc6807", + "f603": "f6034e1f029b9ce09a3149db6dfc48ef4ef51b7e" + }, + "initial_builds": { + "schema": 1, + "scope": "Build capacity and packaged capability checks only; physical results are separate.", + "boards": [ + { + "id": "t1000", + "board": "Seeed T1000-E", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "companion", + "target": "t1000e_companion_radio_full", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "t1000e_companion_radio_full", + "passed": true, + "platformio_environment": "t1000e_companion_radio_usb", + "capability_checks": 14, + "available_internal_bytes": 88572, + "required_heap_bytes": 46912, + "required_contiguous_bytes": 6176, + "elf_sha256": "28a71e452f7edaa58492bfe141be524d55655a65f105a2d1453c13adcbc41988", + "packages": { + "t1000e_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.uf2": { + "sha256": "dece109b7045c533eed8352cdeab8a6ae1a45a840033d7fc69ef74cb32c9c325", + "size_bytes": 1226752 + }, + "t1000e_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.zip": { + "sha256": "824b6bc39853fddeeba553bf91db79a098afccfc7886546750d3a7afdd73f03e", + "size_bytes": 614043 + } + } + } + ] + }, + { + "id": "tag", + "board": "RAK WisMesh Tag", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "companion", + "target": "RAK_WisMesh_Tag_companion_radio_full", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "RAK_WisMesh_Tag_companion_radio_full", + "passed": true, + "platformio_environment": "RAK_WisMesh_Tag_companion_radio_usb", + "capability_checks": 15, + "available_internal_bytes": 84292, + "required_heap_bytes": 46912, + "required_contiguous_bytes": 6176, + "elf_sha256": "ff1f664487685cfca24a066d0216e1b0a9c7f3934915721994b963edb08bdf70", + "packages": { + "RAK_WisMesh_Tag_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.uf2": { + "sha256": "fae8f53858da5ca30e5725721f4003cb211db6036c1629b723d394b93983574e", + "size_bytes": 1308160 + }, + "RAK_WisMesh_Tag_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.zip": { + "sha256": "60d0a86fac55cd8639257268da13d89a51e31e1b478ad1c451f47119690ee23f", + "size_bytes": 654703 + } + } + } + ] + }, + { + "id": "t096", + "board": "Heltec T096, FEM on", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "companion", + "target": "Heltec_t096_companion_radio_full_femon", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "Heltec_t096_companion_radio_full_femon", + "passed": true, + "platformio_environment": "Heltec_t096_companion_radio_usb_femon", + "capability_checks": 15, + "available_internal_bytes": 84212, + "required_heap_bytes": 73728, + "required_contiguous_bytes": 13825, + "elf_sha256": "967224e02efe8115dd9d715ac74e49fec7a3a4c9c99f0281b6c746c8b459f470", + "packages": { + "Heltec_t096_companion_radio_full_femon-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.uf2": { + "sha256": "21e300720bb9ccd8492f96d990f41169c10173701a56378757ccafa5678f0c06", + "size_bytes": 1330176 + }, + "Heltec_t096_companion_radio_full_femon-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.zip": { + "sha256": "e8230b79d6140d45e25a62cd6946fff844f05c9c583325afce39e809b0f369e8", + "size_bytes": 665767 + } + } + } + ] + }, + { + "id": "pocket", + "board": "Heltec MeshPocket", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "companion", + "target": "Mesh_pocket_companion_radio_full", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "Mesh_pocket_companion_radio_full", + "passed": true, + "platformio_environment": "Mesh_pocket_companion_radio_usb", + "capability_checks": 15, + "available_internal_bytes": 82604, + "required_heap_bytes": 59200, + "required_contiguous_bytes": 12288, + "elf_sha256": "6230a1171e0bb2b1ac5b3f75e431f0a129b8e41bf5b198682d2732c3758b62b5", + "packages": { + "Mesh_pocket_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.uf2": { + "sha256": "55ec932d3c4c446611c53556bcf3518fb9c20f8eda8416ec5d227c9265b56c4f", + "size_bytes": 1406464 + }, + "Mesh_pocket_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.zip": { + "sha256": "7f0195128d1c8c86fd15aed6b27e237d507adffc03ae17bb9efd3a04cd67ca17", + "size_bytes": 703847 + } + } + } + ] + }, + { + "id": "solar33s", + "board": "SolarXiao 33S", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "role": "repeater", + "target": "solarxiao_33S_repeater", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "solarxiao_33S_repeater-full-ota", + "passed": true, + "platformio_environment": "solarxiao_33S_repeater", + "capability_checks": 11, + "available_internal_bytes": 151404, + "required_heap_bytes": 82784, + "required_contiguous_bytes": 19168, + "elf_sha256": "0de1309a0d5be1f30c0ce3dc53788eab637ce1dbaa385b7bc9e3a5287eb2ed70", + "packages": { + "solarxiao_33S_repeater-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "ce88768adcf798d622f0a8cee0481e98970a7da4f9e9174983fe54476b767519", + "size_bytes": 1255424 + }, + "solarxiao_33S_repeater-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "61543eb675c2ed3eb8d55d03cd78b5ce4806817178a020f62d7d209353085f50", + "size_bytes": 628354 + } + } + }, + { + "artifact_target": "solarxiao_33S_repeater-reduced-ota", + "passed": true, + "platformio_environment": "solarxiao_33S_repeater", + "capability_checks": 9, + "available_internal_bytes": 152584, + "required_heap_bytes": 80736, + "required_contiguous_bytes": 19168, + "elf_sha256": "08c7104cf036cfa7c8221a227817b9d3093b173ba12f9ccb083a19d1db392539", + "packages": { + "solarxiao_33S_repeater-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "17b136eacf195d2a02ec5946bd87479df701a7bb6836f09a48209a06dbc6b949", + "size_bytes": 1182208 + }, + "solarxiao_33S_repeater-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "922796550f8ba4488526ec815cb84ef6d2167dbf0a23c430b8e49f47460dc809", + "size_bytes": 591671 + } + } + } + ] + }, + { + "id": "v43", + "board": "Heltec V4.3, FEM off", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "companion", + "target": "heltec_v4_3_companion_radio_full_femoff", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "heltec_v4_3_companion_radio_full_femoff", + "passed": true, + "platformio_environment": "heltec_v4_3_companion_radio_full_femoff", + "capability_checks": 28, + "available_internal_bytes": 223648, + "required_heap_bytes": 200480, + "required_contiguous_bytes": 18464, + "elf_sha256": "5e66f41a45500b459eafe829809a2c39e0ad4028eddb0ca7faade5a6121912b3", + "packages": { + "heltec_v4_3_companion_radio_full_femoff-v1.18.0.2-halo-keymind-cascade-dev-c9acec47-merged.bin": { + "sha256": "d0f520d4444fe12d0e3a5d9a069b3c667b1b63252f77cb935a84fe1db82b4d7c", + "size_bytes": 2628424 + }, + "heltec_v4_3_companion_radio_full_femoff-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.bin": { + "sha256": "fb320cf886e56b577e07f792a2d505213f0faf63e51305f5fab5ca120010f8d2", + "size_bytes": 2562888 + } + } + } + ] + }, + { + "id": "tower", + "board": "Heltec MeshTower V2 SD", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "role": "repeater", + "target": "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-full-ota", + "passed": true, + "platformio_environment": "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors", + "capability_checks": 9, + "available_internal_bytes": 127252, + "required_heap_bytes": 76992, + "required_contiguous_bytes": 19168, + "elf_sha256": "788b2200b66cf2c64af2773e3a540ec4f302455fc11609a54fbcddf7fd641940", + "packages": { + "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "c7e29369427b51fb63ea1c1612549f1e1c205da7bc18ca0929d58cff6b869da0", + "size_bytes": 1177600 + }, + "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "3aabda910a3b582c6c339bdc09612ccc9b1caa9ef5d9275439929a8acd8acfe9", + "size_bytes": 589591 + } + } + }, + { + "artifact_target": "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-reduced-ota", + "passed": true, + "platformio_environment": "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors", + "capability_checks": 7, + "available_internal_bytes": 127440, + "required_heap_bytes": 74944, + "required_contiguous_bytes": 19168, + "elf_sha256": "220b96fe2c84515cd02326ce0fe703152c4772a43cd0f4e057cf86e4854159c9", + "packages": { + "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "52be7a9f9cdcb21e0cd4346e5366848fd240ff6b99bd430ab3e4e921e01b6664", + "size_bytes": 1163776 + }, + "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "096a9c11f2a59e250ce15f6086958b99aa68311d22382b80f6eba2ddbcd849d8", + "size_bytes": 582487 + } + } + } + ] + }, + { + "id": "rak3401", + "board": "RAK 3401 MQTT gateway", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "role": "repeater", + "target": "RAK_3401_repeater_lora_ota_no_external_sensors", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "RAK_3401_repeater_lora_ota_no_external_sensors-full-ota", + "passed": true, + "platformio_environment": "RAK_3401_repeater", + "capability_checks": 14, + "available_internal_bytes": 80180, + "required_heap_bytes": 75920, + "required_contiguous_bytes": 19168, + "elf_sha256": "a3dc20dae8139eaad36692eaeb865db1f469ce318da1540f9c8b3cc9e714ea8b", + "packages": { + "RAK_3401_repeater_lora_ota_no_external_sensors-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "dc984124d3ab9a1e2eb1164363dd1bad217e2ac33dfce6d072f144c0e21d9f39", + "size_bytes": 1255936 + }, + "RAK_3401_repeater_lora_ota_no_external_sensors-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "13ddc99a9fea2650880303e01ad658e0974129ca145ad0d11d2efceb288de045", + "size_bytes": 628614 + } + } + }, + { + "artifact_target": "RAK_3401_repeater_lora_ota_no_external_sensors-reduced-ota", + "passed": true, + "platformio_environment": "RAK_3401_repeater", + "capability_checks": 12, + "available_internal_bytes": 82704, + "required_heap_bytes": 73872, + "required_contiguous_bytes": 19168, + "elf_sha256": "387e2321b9a6b0b66ff4dfd9abbb437baa6a0752fb39ec94154a553b663fa8e1", + "packages": { + "RAK_3401_repeater_lora_ota_no_external_sensors-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "02aca2ecf2b7465ac0a6e7758447b6fc5d97bc979ec615a63a13a239011597c7", + "size_bytes": 1137664 + }, + "RAK_3401_repeater_lora_ota_no_external_sensors-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "c16c281b6afc085a42982dd7ec5e7b6490ac2a496070636e121fbae0f7fc8d5b", + "size_bytes": 569479 + } + } + } + ] + }, + { + "id": "rak-repeater", + "board": "RAK 4631", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "role": "repeater", + "target": "RAK_4631_repeater", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "RAK_4631_repeater_lora_ota_no_external_sensors-full-ota", + "passed": true, + "platformio_environment": "RAK_4631_repeater", + "capability_checks": 16, + "available_internal_bytes": 83156, + "required_heap_bytes": 83136, + "required_contiguous_bytes": 19168, + "elf_sha256": "c5c4da20454452fecd06edfe735116cacafedfb04ddde5adbefca5df72ab74de", + "packages": { + "RAK_4631_repeater_lora_ota_no_external_sensors-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "1480d35f4e4d5baf90306c813986de3ebb8ef3fa4a568886ef35e4f70c068fe0", + "size_bytes": 1375232 + }, + "RAK_4631_repeater_lora_ota_no_external_sensors-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "915ced25f967ec302eacd218fdc10ee776eca579e71f61bdb89a3bc705f189e6", + "size_bytes": 688411 + } + } + }, + { + "artifact_target": "RAK_4631_repeater_lora_ota_no_external_sensors-reduced-ota", + "passed": true, + "platformio_environment": "RAK_4631_repeater", + "capability_checks": 14, + "available_internal_bytes": 85696, + "required_heap_bytes": 81088, + "required_contiguous_bytes": 19168, + "elf_sha256": "7d71696ca63e1443d56f87cf66fa45b096a2e59b34e094ae9844a1b1b1595334", + "packages": { + "RAK_4631_repeater_lora_ota_no_external_sensors-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "189e01d215f5cfa644b1f06cf4edfe58eadc69cecb87e5f666d8a6009cb99b36", + "size_bytes": 1240576 + }, + "RAK_4631_repeater_lora_ota_no_external_sensors-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "142f4ef30011671cf1f51cafddaa55eb51bfd5873b3b59daccf4440fe9b795ea", + "size_bytes": 620916 + } + } + } + ] + }, + { + "id": "xiao_nrf-repeater", + "board": "Seeed XIAO nRF52", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "role": "repeater", + "target": "Xiao_nrf52_repeater", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "Xiao_nrf52_repeater-full-ota", + "passed": true, + "platformio_environment": "Xiao_nrf52_repeater", + "capability_checks": 11, + "available_internal_bytes": 151636, + "required_heap_bytes": 76992, + "required_contiguous_bytes": 19168, + "elf_sha256": "5aa28ef7b564bb1556b6aea63eee7ce2bb16869241a8a65c883cc66ca4391247", + "packages": { + "Xiao_nrf52_repeater-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "41e1bb51ade1e585392e49d35e9582f1627c9318dd51e8af5d9f9042ac747f0f", + "size_bytes": 1208832 + }, + "Xiao_nrf52_repeater-full-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "48c81181a776519da471557c3fcb330f4427254c2adebd9752bca2dc3c28bc50", + "size_bytes": 605087 + } + } + }, + { + "artifact_target": "Xiao_nrf52_repeater-reduced-ota", + "passed": true, + "platformio_environment": "Xiao_nrf52_repeater", + "capability_checks": 9, + "available_internal_bytes": 152824, + "required_heap_bytes": 74944, + "required_contiguous_bytes": 19168, + "elf_sha256": "471d983d14203f02ede5d1c95ab3d560c67026bbb9660c690263e8752668d623", + "packages": { + "Xiao_nrf52_repeater-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.uf2": { + "sha256": "047a165c4d38c4759102847bc107ec2627dd87f1a2cb74d9b04539aa827a7584", + "size_bytes": 1136128 + }, + "Xiao_nrf52_repeater-reduced-ota-v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4.zip": { + "sha256": "a55ac23f3fbc181e92cac4377017aede7c608322597ff17dc67bf7f731be7700", + "size_bytes": 568731 + } + } + } + ] + }, + { + "id": "v42", + "board": "Heltec V4.2", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "repeater", + "target": "heltec_v4_repeater_observer_mqtt", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "heltec_v4_repeater_observer_mqtt", + "passed": true, + "platformio_environment": "heltec_v4_repeater_observer_mqtt", + "capability_checks": 16, + "available_internal_bytes": 240144, + "required_heap_bytes": 238732, + "required_contiguous_bytes": 19168, + "elf_sha256": "9be28505365f4e3dd8700d3ca3b1cd707022f034594ecdbba301147a5ba07700", + "packages": { + "heltec_v4_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47-merged.bin": { + "sha256": "8f5ad7e2184a9a3053925eafe57b98448a0dd5ac59c56c9b3ecaaa93c1377f7b", + "size_bytes": 2242728 + }, + "heltec_v4_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.bin": { + "sha256": "ba151fab2c6e6eca6b3025bb2df394fd250372faee0b4c5966291c72ebc3ab29", + "size_bytes": 2177192 + } + } + } + ] + }, + { + "id": "v3-repeater", + "board": "Heltec V3", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "repeater", + "target": "Heltec_v3_repeater", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "Heltec_v3_repeater_observer_mqtt", + "passed": true, + "platformio_environment": "Heltec_v3_repeater_observer_mqtt", + "capability_checks": 17, + "available_internal_bytes": 211536, + "required_heap_bytes": 209072, + "required_contiguous_bytes": 19168, + "elf_sha256": "2a92176aae57b59e5529ed99f55167797ab301f838bf4f95ee9234e23b22ca53", + "packages": { + "Heltec_v3_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47-merged.bin": { + "sha256": "bb53308a65a5873c8efe3a0f7ef285d7e951e86d2251243512b13e9705876bef", + "size_bytes": 2188136 + }, + "Heltec_v3_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.bin": { + "sha256": "d983f8d27adb4a7d5fa9e9bd4ea6fc39925e7a54f75ae4a90f8dbb5ea68423ee", + "size_bytes": 2122600 + } + } + } + ] + }, + { + "id": "tdeck-repeater", + "board": "LilyGo T-Deck", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "repeater", + "target": "LilyGo_TDeck_repeater", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "LilyGo_TDeck_repeater", + "passed": true, + "platformio_environment": "LilyGo_TDeck_repeater", + "capability_checks": 14, + "available_internal_bytes": 260712, + "required_heap_bytes": 208012, + "required_contiguous_bytes": 19168, + "elf_sha256": "b5e5f6b31124fb4c2f41920cd7c460fac560502f7da55e073aeb246e24142f13", + "packages": { + "LilyGo_TDeck_repeater-full-logging-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47-merged.bin": { + "sha256": "d47648cb484144df9b0d0ce14277255b4ff94356dbe3d483a448b35d7b9c4a36", + "size_bytes": 1833368 + }, + "LilyGo_TDeck_repeater-full-logging-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.bin": { + "sha256": "83a73ddd7add2a98fef58b2a7c1335157e7ee4633d959923d78f876ec2f6b9d2", + "size_bytes": 1767832 + } + } + } + ] + }, + { + "id": "indicator-repeater", + "board": "SenseCAP Indicator", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "repeater", + "target": "SenseCapIndicator-LoRa_repeater", + "provisional_role_only": false, + "profiles": [ + { + "artifact_target": "SenseCapIndicator-LoRa_repeater", + "passed": true, + "platformio_environment": "SenseCapIndicator-LoRa_repeater", + "capability_checks": 14, + "available_internal_bytes": 261224, + "required_heap_bytes": 260236, + "required_contiguous_bytes": 52224, + "elf_sha256": "2781d4d0ced339f734cc897e4a49a610931ca82b1426768cfebf2e91e9a8576e", + "packages": { + "SenseCapIndicator-LoRa_repeater-full-logging-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47-merged.bin": { + "sha256": "e412d6486c5d21d1dfe960c5af6584ae593dcdb9e3f79e2900275b36abd0f73e", + "size_bytes": 1878952 + }, + "SenseCapIndicator-LoRa_repeater-full-logging-ota-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.bin": { + "sha256": "78c494a116f4a233a9d8c72be2a80fbf0bf71506028723cec18b358dac1fd2ab", + "size_bytes": 1813416 + } + } + } + ] + }, + { + "id": "xiao", + "board": "Seeed XIAO ESP32-S3", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "role": "companion", + "target": "Xiao_S3_WIO_companion_radio_full", + "provisional_role_only": true, + "profiles": [ + { + "artifact_target": "Xiao_S3_WIO_companion_radio_full", + "passed": true, + "platformio_environment": "Xiao_S3_WIO_companion_radio_full", + "capability_checks": 26, + "available_internal_bytes": 226280, + "required_heap_bytes": 171808, + "required_contiguous_bytes": 18464, + "elf_sha256": "db3a11b23b03f1a0e0753d56e2b058b2ca319f14a97b9f8c7087b7bc18d20c90", + "packages": { + "Xiao_S3_WIO_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47-merged.bin": { + "sha256": "ee65b21fbc0ab3e67740c11a37563103fad1d5353e3db0609d1ce26b6bafa0f9", + "size_bytes": 2336168 + }, + "Xiao_S3_WIO_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-c9acec47.bin": { + "sha256": "fe7195113335b2f3abfacab004654b25c80cc1f50edf5364cc25c8fb35d3f524", + "size_bytes": 2270632 + } + } + } + ] + } + ], + "manifest_hashes": { + "build_status.json": "904904b4e23d0b7c75ff549b375401d59efec441951f83834e1a01fffd04e8e1", + "fixed-70c7d5b4/build_status.json": "11b2ca7f73edf789c17ce5b3696b42c9c883d11d879294238e95f2a5a743f7e2" + } + }, + "corrected_companion_builds": { + "schema": 1, + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "firmware_version": "v1.18.0.2-halo-keymind-cascade-dev", + "boards": [ + { + "id": "t1000", + "board": "Seeed T1000-E", + "target": "t1000e_companion_radio_full", + "passed": true, + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33", + "platformio_environment": "t1000e_companion_radio_usb", + "capability_checks": 14, + "available_internal_bytes": 88572, + "required_heap_bytes": 46912, + "required_contiguous_bytes": 6176, + "linked_ram_admission_unchanged": true, + "elf_sha256": "09cd8b9df308ac6b4a93ece0e1f2e4558030796d31fb50b215bfa37a099978ce", + "packages": { + "t1000e_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.uf2": { + "sha256": "7635e59c99066be2a9fd3e5a99e593dec89b2810ccf601766759993a97544dfd", + "size_bytes": 1227264 + }, + "t1000e_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.zip": { + "sha256": "65c8d9c7f0927890cf25d54322d499dd7a6b5d4d6ce6e6e2a677f973716db4eb", + "size_bytes": 614315 + } + } + }, + { + "id": "tag", + "board": "RAK WisMesh Tag", + "target": "RAK_WisMesh_Tag_companion_radio_full", + "passed": true, + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33", + "platformio_environment": "RAK_WisMesh_Tag_companion_radio_usb", + "capability_checks": 15, + "available_internal_bytes": 84292, + "required_heap_bytes": 46912, + "required_contiguous_bytes": 6176, + "linked_ram_admission_unchanged": true, + "elf_sha256": "a7bb90a8be79aa9ecb181ce6e51a299a650ddc71151ab8cacff57c12fc5faad9", + "packages": { + "RAK_WisMesh_Tag_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.uf2": { + "sha256": "2d4d03db6401b6adc93c70f8ae7eb5dfe9e1b23029e1415d1c63961355468676", + "size_bytes": 1308672 + }, + "RAK_WisMesh_Tag_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.zip": { + "sha256": "c9da30b5d898c61587982c58b19e2f3593246a21a75f16599948dc965a2741db", + "size_bytes": 655023 + } + } + }, + { + "id": "t096", + "board": "Heltec T096, FEM on", + "target": "Heltec_t096_companion_radio_full_femon", + "passed": true, + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33", + "platformio_environment": "Heltec_t096_companion_radio_usb_femon", + "capability_checks": 15, + "available_internal_bytes": 84212, + "required_heap_bytes": 73728, + "required_contiguous_bytes": 13825, + "linked_ram_admission_unchanged": true, + "elf_sha256": "01c80477bfd45d5034821ad3a166092467b7f202882cbeab785f5252ad00f55a", + "packages": { + "Heltec_t096_companion_radio_full_femon-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.uf2": { + "sha256": "98b89675313591099fe0d2951c3064c3f492fb87d16578c2914580b675a72954", + "size_bytes": 1331200 + }, + "Heltec_t096_companion_radio_full_femon-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.zip": { + "sha256": "3e0ad88ca18a1f85811f0dbfc440466a11735c8c6e9db951265a8815c020d9d4", + "size_bytes": 666167 + } + } + }, + { + "id": "pocket", + "board": "Heltec MeshPocket", + "target": "Mesh_pocket_companion_radio_full", + "passed": true, + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33", + "platformio_environment": "Mesh_pocket_companion_radio_usb", + "capability_checks": 15, + "available_internal_bytes": 82604, + "required_heap_bytes": 59200, + "required_contiguous_bytes": 12288, + "linked_ram_admission_unchanged": true, + "elf_sha256": "1953d90b9bfd53bf78f754c2e527ab0586b10086f2bc265a02c3f2e04773f298", + "packages": { + "Mesh_pocket_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.uf2": { + "sha256": "1787ae7b7bc88f87300183f0a1e20cf0ee34397ced3504584eb7eb3a5f4b1d79", + "size_bytes": 1406976 + }, + "Mesh_pocket_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-226ccc33.zip": { + "sha256": "4f85629da02a3826b8548a106fa199262408237c9f44aa78e950f5ab7ff1a994", + "size_bytes": 704199 + } + } + } + ], + "scope": "Four corrected Full nRF52 Companions; build admission only, physical retests separate." + }, + "additional_builds_only": { + "source_commit": "5a72a991227a8c3062a8291091862289e4cc6807", + "firmware_version": "v1.18.0.2-halo-keymind-cascade-dev", + "boards": [ + { + "id": "xiao-s3-repeater", + "target": "Xiao_S3_WIO_repeater_observer_mqtt", + "status": "passed", + "exit_code": 0, + "elapsed_seconds": 159.303, + "artifacts": { + "Xiao_S3_WIO_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-5a72a991-merged.bin": { + "sha256": "1ff1aafa6ee21313bda1339f7d07cc1cdc01b3822d3f46d51ca25fc39aff3883", + "size_bytes": 2132168 + }, + "Xiao_S3_WIO_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.bin": { + "sha256": "525ac663e9b08fc29e2c5b55e3c04ac6b111345c74dff63f558096c8dfc142a4", + "size_bytes": 2066632 + }, + "Xiao_S3_WIO_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.capabilities.json": { + "sha256": "4db9b64086c1de1eb9a7474a63747a50f56bdea7057992a74d35e9917d7a74ad", + "size_bytes": 3903 + }, + "Xiao_S3_WIO_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.memory.json": { + "sha256": "285dcc62a45e03d30c5cb72d2d10f36f1df00b4b2b213bf30ac387a591a8956d", + "size_bytes": 4289 + }, + "Xiao_S3_WIO_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.meshtext-license.txt": { + "sha256": "c37d0a453a2491514bac33ed835c1877f207390f134ae439a97b06b004e236d2", + "size_bytes": 1945 + }, + "Xiao_S3_WIO_repeater_observer_mqtt-full.partsig": { + "sha256": "a743a4253cddb196524eca11ec4ca63235f8116ed4e5db0363a75842bd7a41b7", + "size_bytes": 101 + } + }, + "selected_memory_manifest": "Xiao_S3_WIO_repeater_observer_mqtt-full-usb-wifi-ota-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.memory.json" + }, + { + "id": "rak-full-companion", + "target": "RAK_4631_companion_radio_full", + "status": "passed", + "exit_code": 0, + "elapsed_seconds": 32.675, + "artifacts": { + "RAK_4631_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.capabilities.json": { + "sha256": "2bd800847e7413b09904973b9fb4d12bd4cca85f5b6d4bd8e5ff66068f4318c8", + "size_bytes": 4336 + }, + "RAK_4631_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.memory.json": { + "sha256": "327c18cd698ffd5b70e4ba47bd2b36e140494ff556d6c8b019b48152844dd35d", + "size_bytes": 1908 + }, + "RAK_4631_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.meshtext-license.txt": { + "sha256": "c37d0a453a2491514bac33ed835c1877f207390f134ae439a97b06b004e236d2", + "size_bytes": 1945 + }, + "RAK_4631_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.uf2": { + "sha256": "81e15c63eb5a6e78636ec6dda53d9e0c0e693f5cb187a44a10499fd33df1a0c0", + "size_bytes": 1425408 + }, + "RAK_4631_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.zip": { + "sha256": "451ca856bf21b294318769665a26b03e9cf68858655b9b58acdfd036ef12b248", + "size_bytes": 713423 + } + }, + "selected_memory_manifest": "RAK_4631_companion_radio_full-v1.18.0.2-halo-keymind-cascade-dev-5a72a991.memory.json" + } + ] + }, + "rak_ci_dependency_matched_build_only": { + "source_commit": "f6034e1f029b9ce09a3149db6dfc48ef4ef51b7e", + "exit_code": 0, + "scope": "RAK Full Companion with CI library versions and maximum dev version length", + "artifacts": { + "RAK_4631_companion_radio_full-v1.18.0.1-halo-keymind-cascade-dev-f6034e1f.capabilities.json": { + "sha256": "cff05e4631188a195d707fcdfdf2660866af44e38fbb730669e5c8f68bba4ead", + "size_bytes": 4336 + }, + "RAK_4631_companion_radio_full-v1.18.0.1-halo-keymind-cascade-dev-f6034e1f.memory.json": { + "sha256": "549e40a92a56d744a4571543827ecf9667af99501d0797c5e0748758c7016ff7", + "size_bytes": 1908 + }, + "RAK_4631_companion_radio_full-v1.18.0.1-halo-keymind-cascade-dev-f6034e1f.meshtext-license.txt": { + "sha256": "c37d0a453a2491514bac33ed835c1877f207390f134ae439a97b06b004e236d2", + "size_bytes": 1945 + }, + "RAK_4631_companion_radio_full-v1.18.0.1-halo-keymind-cascade-dev-f6034e1f.uf2": { + "sha256": "cf959e0a10e9bcd7acda3989e9aa51463c632568868ea9fc81bf84d34282bf6e", + "size_bytes": 1425408 + }, + "RAK_4631_companion_radio_full-v1.18.0.1-halo-keymind-cascade-dev-f6034e1f.zip": { + "sha256": "20e1cb88283c3c600902f1895678b664fd07fd2029df7b303df589750e99e3bd", + "size_bytes": 713455 + } + } + }, + "build_only_limitations": [ + "Initial XIAO ESP32-S3 Companion packages were provisional and never installed; its later observer Repeater build is also not installed.", + "RAK Full Companion builds are capacity checks, not the installed RAK Repeater application." + ], + "companions": [ + { + "board": "Heltec V4.3 OLED FEM off", + "role": "Full Companion", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47 (Build: 28-Oct-2026)", + "installed_artifact_sha256": "fb320cf886e56b577e07f792a2d505213f0faf63e51305f5fab5ca120010f8d2", + "installed_artifact_kind": "active-slot application BIN", + "application_install": { + "passed": true, + "app_only": true, + "bootloader_written": false, + "partition_written": false, + "erase_requested": false, + "runtime_version_verified": true, + "identity_preserved": true, + "logical_settings_preserved": true, + "contacts_preserved": true, + "channels_preserved": true + }, + "radio2": { + "passed": true, + "lease_minutes": 1, + "mode": "rxtx", + "natural_expiry_verified": true, + "expiry_polls": 11, + "original_secondary_restored": true, + "automatic_owner_before": true, + "original_auto_owner_restored": true, + "persistent_radio_or_channel_setters_sent": false, + "intentional_rf_transmissions": 0, + "overlap_cases_completed": 0, + "overlap_cases_passed": 0 + }, + "binary_settings": { + "passed": true, + "binary_tx_setter_acknowledged": true, + "pending_saved_pin_readback_matches": true, + "pending_pin_readback_survives_usb_reopen": true, + "original_settings_restored": true, + "physical_tx_power_measured": false, + "hardware_application_verified": false, + "pin_cold_persistence_tested": false, + "rf_send_commands": 0, + "reboots_requested": 0 + }, + "ble_trials": [ + { + "attempt": "20261028T141400.938310Z", + "strict_passed": false, + "condition": "normal mounted USB; normal host WiFi", + "host_wifi_condition": "normal host WiFi; no WiFi change requested during this trial", + "measurement_started_utc": "2026-10-28T14:14:00.939214+00:00", + "measurement_finished_utc": "2026-10-28T14:14:34.351967+00:00", + "source_summary_sha256": "b94fa13e1c055c87a2dcc2b82ff2b3cf8c1aa33070654cbc995617e58ac44bef", + "target_bond_removal_requested": false, + "hci": { + "clean": false, + "target_successful_connection_events": 1, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16" + ], + "target_disconnect_statuses": [ + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true, + "source_summary_sha256": "d4ac639283571ff60fe41e12bab3ea4e3159b91c2218b0208da4770cb24b45f3" + }, + "qualification_payload_worker_ran": true, + "passed": false, + "sessions_requested": 3, + "sessions_completed": 0, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "session_hold_seconds": [], + "subject_provenance": { + "board": "Heltec V4.3 OLED FEM off", + "target": "heltec_v4_3_companion_radio_full_femoff", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "artifact_kind": "application BIN", + "artifact_sha256": "fb320cf886e56b577e07f792a2d505213f0faf63e51305f5fab5ca120010f8d2" + } + } + ], + "rf_trials": [ + { + "attempt": "rf-tag-v43-run1", + "harness_passed": false, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "v43": { + "passed": false, + "failure_type": "RuntimeError" + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.414, + "path_bytes": 0, + "snr_db": 12.5, + "rssi_dbm": -35, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.413, + "path_bytes": 0, + "snr_db": 11.0, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.414, + "path_bytes": 0, + "snr_db": 12.5, + "rssi_dbm": -34, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.412, + "path_bytes": 0, + "snr_db": 11.0, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.417, + "path_bytes": 0, + "snr_db": 12.75, + "rssi_dbm": -34, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ], + "offline_comparison_followup": { + "passed": true, + "method": "offline corrected static radio2 comparison only", + "new_hardware_access": false, + "new_rf_send_commands": 0, + "original_failed_summary_preserved": true, + "original_summary_sha256": "024759290a84c836196453089785c5351866df55894e539840b1f7e46b590b61", + "six_source_identity_nonce_counter_bound_zero_hop_legs_verified": true, + "both_owned_radio_tx_restorations_verified": true, + "source_summary_sha256": "749d1210c2d3a2141290b97c1f349b6e08d3f3f95b4849090cde1296c0387adc" + }, + "subject_provenance": { + "board": "Heltec V4.3 OLED FEM off", + "target": "heltec_v4_3_companion_radio_full_femoff", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "artifact_kind": "application BIN", + "artifact_sha256": "fb320cf886e56b577e07f792a2d505213f0faf63e51305f5fab5ca120010f8d2" + } + } + ], + "retained_attempt_notes": [ + "First RF trial completed all6physical legs and restored binary prefs/contacts/channels; original comparison refused only changing radio2 timing diagnostic suffix." + ], + "host_bond_followup_attempts": [ + { + "passed": false, + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "firmware_fix_claimed": false, + "diagnostic_changed_host_bond_setup": true, + "firmware_writes": 0, + "broad_unpair": false, + "adapter_reset": false, + "pi_wifi_changed": false, + "device_bond_clear_requested": false, + "failure_type": "FileNotFoundError", + "finished_utc": "2026-10-28T15:00:52.366773+00:00", + "attempt": "20261028T150046.093606Z", + "source_summary_sha256": "ae4023b70c8d6d894d5b7bf60f83fcb66ec91bc5a75be15450c1450f40c9dd22", + "host_removal_reached": false, + "pairing_measurement_reached": false, + "ble_phases": {}, + "read_only_cleanup_verifications": [] + }, + { + "passed": false, + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "firmware_fix_claimed": false, + "diagnostic_changed_host_bond_setup": true, + "firmware_writes": 0, + "broad_unpair": false, + "adapter_reset": false, + "pi_wifi_changed": false, + "device_bond_clear_requested": false, + "original_host_entry_privately_backed_up": true, + "unrelated_host_entries_byte_hash_equal": true, + "failure_type": "RuntimeError", + "cleanup_failure_type": "RuntimeError", + "finished_utc": "2026-10-28T15:08:46.150740+00:00", + "attempt": "20261028T150601.852558Z", + "source_summary_sha256": "6787fdeb49242ca0c2cccbd193083808fa9bc353aba6b6a080176ba8d1db916a", + "host_removal_reached": false, + "pairing_measurement_reached": false, + "ble_phases": {}, + "read_only_cleanup_verifications": [ + { + "passed": false, + "read_only_continuation": true, + "old_failure_retained": true, + "pin_setters_sent": 0, + "reboots_sent": 0, + "host_removals": 0, + "pairing_requests": 0, + "failure_type": "RuntimeError", + "source_summary_sha256": "5b4198b7a8d7a412de9b91e97c77f6d6da0f5c32b5a5a86cd7399bda05870dce" + }, + { + "passed": true, + "read_only_continuation": true, + "old_failure_retained": true, + "pin_setters_sent": 0, + "reboots_sent": 0, + "host_removals": 0, + "pairing_requests": 0, + "source_summary_sha256": "1a3857082962d231bb1ebf9870ec469554da1ae694b1f0f25b4f7707539328ab" + } + ] + }, + { + "passed": false, + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "firmware_fix_claimed": false, + "diagnostic_changed_host_bond_setup": true, + "firmware_writes": 0, + "broad_unpair": false, + "adapter_reset": false, + "pi_wifi_changed": false, + "device_bond_clear_requested": false, + "original_host_entry_privately_backed_up": true, + "original_saved_pin0_restored": true, + "original_identity_settings_contacts_channels_verified": true, + "unrelated_host_entries_byte_hash_equal": true, + "finished_utc": "2026-10-28T15:36:40.654958+00:00", + "attempt": "20261028T153246.428996Z", + "source_summary_sha256": "9be9f2605b6fa64b8eb4acdd029d0965ff828cd7993ee8b11b3739f46e5ea5ea", + "host_removal_reached": true, + "pairing_measurement_reached": true, + "ble_phases": { + "temporary-pin": { + "passed": false, + "sessions_completed": 0, + "trace_sha256": "5ca23a3bee050b895f01f130c186d0486c09534603eb0ee8658d90076526c142", + "ble_report_sha256": "bb25d8a7190f004f4c675397b98b4fd46389fbf623377611590528bc5a7ca23d", + "hci": { + "clean": false, + "target_successful_connection_events": 1, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16" + ], + "target_disconnect_statuses": [ + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true + }, + "started_at": "2026-10-28T15:33:16.180827+00:00", + "finished_at": "2026-10-28T15:33:49.457109+00:00", + "hold_seconds_requested": 30.0, + "session_hold_seconds": [] + }, + "restored-settings": { + "passed": true, + "sessions_completed": 3, + "trace_sha256": "3d9537ac8947a542c024f75e7aa2950426d7a5eb5d0c5eb9318505b7ecf2540c", + "ble_report_sha256": "b394a01d4f9ca1fc7fc99cbdd4e6c386f95660db3b8b6ea5f14dc9f9df1a903d", + "hci": { + "clean": true, + "target_successful_connection_events": 3, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16", + "0x16", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true + }, + "started_at": "2026-10-28T15:34:18.704010+00:00", + "finished_at": "2026-10-28T15:36:33.670702+00:00", + "hold_seconds_requested": 30.0, + "session_hold_seconds": [ + 30.274, + 30.273, + 30.322 + ] + } + }, + "temporary_pair_host_daemon_crash": { + "sigsegv_events": 1, + "daemon_version_observed": "5.66", + "operation": "start_notify", + "source_journal_sha256": "f9bd461bc8b07090a651160bef8c9b1098bcbb9199b57fdb92d5c3c24746bed7" + }, + "read_only_cleanup_verifications": [] + } + ], + "usb": { + "passed": true, + "queries_requested": 100, + "persistent_cycles_completed": 100, + "reopens_requested": 10, + "reopens_completed": 10, + "channel_state_unchanged": true, + "cold_boot_tested": false, + "initial_core_stats": { + "battery_mv": 4209, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 2025 + }, + "final_core_stats": { + "battery_mv": 4209, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 23 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 31, + "ports_opened": 31, + "request_bytes_sent": 6189, + "request_frames_sent": 713, + "response_frames_received": 715, + "response_payload_bytes": 28166 + }, + "owned_contact_and_warm_reboot": { + "passed": true, + "crud_requested": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "warm_reboot_verified": true, + "reboot_requests_sent": 1, + "uptime_before_reboot": 2109, + "uptime_after_reboot": 13 + }, + "stable_binary_tail_summary": { + "sessions_checked": 30, + "all_passed": true, + "maximum_buffered_bytes": 0, + "maximum_input_bytes": 0, + "source_summary_sha256": "53e4e11ec8f1166955649359075a4c920cf29d5e275203c531b43bd24b1d7177" + } + }, + "installed_artifact_target": "heltec_v4_3_companion_radio_full_femoff", + "ble_acceptance": { + "conditional_restored_settings_strict_passed": true, + "overall_followup_passed": false, + "condition": "Target-only host bond repair; original saved settings restored; temporary-PIN host daemon crash retained" + } + }, + { + "board": "Seeed Tracker T1000-E", + "installed_source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33 (Build: 28-Oct-2026)", + "installation": { + "passed": true, + "app_only": true, + "erase_requested": false, + "bootloader_written": false, + "softdevice_written": false, + "identity_preserved": true, + "contacts_preserved": true, + "channels_preserved": true, + "original_core_flags_recorded": 8 + }, + "installation_report_sha256": "2be8b729170fa5b3f03de203e713a6d90b713d5b4038ac04ef5368f0c49e9e42", + "usb": { + "passed": true, + "persistent_cycles_completed": 100, + "reopens_completed": 10, + "started_at": "2026-10-28T16:50:57.350596+00:00", + "finished_at": "2026-10-28T16:52:34.369288+00:00", + "channel_state_unchanged": true, + "contact_changes": { + "added": 0, + "other_live_record_changes": 0, + "removed": 0, + "timestamp_only_changed": 0, + "timestamp_regressions": 0 + }, + "uptime_segments_monotonic": true, + "final_core_stats": { + "battery_mv": 4196, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 12 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 31, + "ports_opened": 31, + "request_bytes_sent": 6189, + "request_frames_sent": 713, + "response_frames_received": 718, + "response_payload_bytes": 28544 + }, + "report_sha256": "f76c600d261091be70e770d59b50d4bd66d28bf01cef82e5621544d2a294ce0c" + }, + "crud_warm_reboot": { + "passed": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "reboot_requests_sent": 1, + "warm_reboot_verified": true, + "uptime_before_reboot": 409, + "uptime_after_reboot": 3 + }, + "stable_binary_tails": { + "count": 30, + "all_passed": true, + "max_elapsed_seconds": 0.050318, + "input_bytes": 0, + "buffered_bytes": 0 + }, + "radio2": { + "passed": true, + "automatic_owner_before": true, + "lease_minutes": 1, + "natural_expiry_verified": true, + "expiry_polls": 11, + "original_secondary_restored": true, + "original_auto_owner_restored": true, + "intentional_rf_transmissions": 0, + "overlap_cases": 0, + "overlap_cases_passed": true + }, + "ble_trials": [ + { + "condition": "normal host WiFi; exact target USB host-deauthorized; USB power present; 10s settle", + "started_at": "2026-10-28T17:13:38.937030+00:00", + "finished_at": "2026-10-28T17:14:34.359343+00:00", + "report_sha256": "64193cb6d01e14aa812c126c201dfe6c6be8873fa2538d625381c2f55d68c5c2", + "requested_checks_passed": false, + "ble": { + "status": "failed", + "passed": false, + "sessions_completed": 0, + "payload_sessions_passed": false, + "timed_out": false, + "trace_sha256": "9e883fab08db120d472a6ce8258a9a52042d88533f90ca963462f80534e25080", + "report_sha256": "a75331b65d12898ae2e98da83ae8a39e366d8e2d0a128b5ebc70affddfdbb948" + }, + "hci": { + "target_successful_connection_events": 2, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x3e", + "0x13" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "target_establishment_0x3e_disconnects": 1, + "target_timeout_0x08_disconnects": 0, + "target_ll_response_timeout_0x22_disconnects": 0, + "classification_complete": true, + "clean": false + }, + "phase_markers": { + "trace_sha256": "9e883fab08db120d472a6ce8258a9a52042d88533f90ca963462f80534e25080", + "bluetooth_service_crashes": 0, + "journal_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "encryption_change_successes": 1, + "pin_or_key_missing_markers": 0, + "cause_assigned": false, + "failure_kind": "BleakGATTProtocolError", + "gatt_error_code": 14, + "gatt_error_name": "Unlikely Error", + "failure_operation": "write_gatt_char" + }, + "subject_provenance": { + "board": "Seeed Tracker T1000-E", + "target": "t1000e_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "65c8d9c7f0927890cf25d54322d499dd7a6b5d4d6ce6e6e2a677f973716db4eb" + } + } + ], + "rf": { + "status": "passed", + "trials": [ + { + "peer_board": "Seeed Tracker T1000-E", + "passed": true, + "started_utc": "2026-10-28T17:06:07.190513+00:00", + "finished_utc": "2026-10-28T17:06:27.387132+00:00", + "rounds": 3, + "legs": 6, + "all_legs_passed": true, + "all_zero_hop_identity_nonce_bound": true, + "max_elapsed_seconds": 0.522, + "packet_deltas": [ + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + } + ], + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "t1000": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "report_sha256": "37857800ab9560015192edb42e8b20033db7aaaeaa604d9fe243e29646a6606b", + "subject_provenance": { + "board": "Seeed Tracker T1000-E", + "target": "t1000e_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "65c8d9c7f0927890cf25d54322d499dd7a6b5d4d6ce6e6e2a677f973716db4eb" + } + } + ] + }, + "usb_host_release_phases": [ + { + "passed": false, + "condition": "real target-only USB host release; normal connected host WiFi; USB power remains present", + "started_at": "2026-10-28T17:13:25.826304+00:00", + "finished_at": "2026-10-28T17:14:37.891933+00:00", + "host_unmount_settle_seconds": 10, + "battery_or_cold_boot_qualified": false, + "firmware_writes": 0, + "intentional_rf_transmissions": 0, + "bond_changes_requested": false, + "adapter_changes_requested": false, + "host_wifi_changes_requested": false, + "report_sha256": "bbe9cff76179ad52e511fe7444388cfa98441ca9040dbd9c1683a2f7e26bff75", + "phases": [ + { + "phase": 1, + "passed": false, + "release_requests": 1, + "restore_requests": 1, + "ble_attempts": 1, + "started_at": "2026-10-28T17:13:27.069298+00:00", + "finished_at": "2026-10-28T17:14:37.883789+00:00", + "real_host_unmount_verified": true, + "ble_exit_code": 1, + "ble_report_sha256": "64193cb6d01e14aa812c126c201dfe6c6be8873fa2538d625381c2f55d68c5c2", + "ble_sessions_completed": 0, + "hci_clean": false, + "after_core": { + "battery_mv": 4198, + "uptime_seconds": 1335, + "error_flags": 0, + "outbound_queue_length": 0 + }, + "port_unowned_after_resume": true, + "ble_passed": false, + "usb_restored": true + } + ] + } + ], + "role": "Full Companion", + "installed_artifact_sha256": "65c8d9c7f0927890cf25d54322d499dd7a6b5d4d6ce6e6e2a677f973716db4eb", + "installed_artifact_kind": "application-only DFU ZIP", + "installed_artifact_target": "t1000e_companion_radio_full" + }, + { + "board": "RAK WisMesh Tag", + "installed_source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33 (Build: 28-Oct-2026)", + "installation": { + "passed": true, + "app_only": true, + "erase_requested": false, + "bootloader_written": false, + "softdevice_written": false, + "identity_preserved": true, + "contacts_preserved": true, + "channels_preserved": true, + "original_core_flags_recorded": 8 + }, + "installation_report_sha256": "c8a32e2ef4f1581abb23593c091fe8643cf284290ee3a102c864c011fd95fb02", + "usb": { + "passed": true, + "persistent_cycles_completed": 100, + "reopens_completed": 10, + "started_at": "2026-10-28T16:52:35.111363+00:00", + "finished_at": "2026-10-28T16:54:21.671316+00:00", + "channel_state_unchanged": true, + "contact_changes": { + "added": 0, + "other_live_record_changes": 0, + "removed": 0, + "timestamp_only_changed": 0, + "timestamp_regressions": 0 + }, + "uptime_segments_monotonic": true, + "final_core_stats": { + "battery_mv": 4072, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 12 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 32, + "ports_opened": 32, + "request_bytes_sent": 6841, + "request_frames_sent": 743, + "response_frames_received": 760, + "response_payload_bytes": 31562 + }, + "report_sha256": "3abf2df87e388273bc5fd6dcd6fa6928c0470d6391f6e1fdc7402767e27e1fa5" + }, + "crud_warm_reboot": { + "passed": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "reboot_requests_sent": 1, + "warm_reboot_verified": true, + "uptime_before_reboot": 444, + "uptime_after_reboot": 3 + }, + "stable_binary_tails": { + "count": 31, + "all_passed": true, + "max_elapsed_seconds": 0.050368, + "input_bytes": 0, + "buffered_bytes": 0 + }, + "radio2": { + "passed": true, + "automatic_owner_before": false, + "lease_minutes": 1, + "natural_expiry_verified": true, + "expiry_polls": 11, + "original_secondary_restored": true, + "original_auto_owner_restored": false, + "intentional_rf_transmissions": 0, + "overlap_cases": 2, + "overlap_cases_passed": true + }, + "ble_trials": [ + { + "condition": "normal host WiFi; USB enumerated", + "started_at": "2026-10-28T16:59:54.986329+00:00", + "finished_at": "2026-10-28T17:02:12.249957+00:00", + "report_sha256": "e059c9629fc9325128b4ca5b7970d588f21b86772a3eeb8df6b01048303cb08f", + "requested_checks_passed": true, + "ble": { + "status": "passed", + "passed": true, + "sessions_completed": 3, + "payload_sessions_passed": true, + "timed_out": false, + "trace_sha256": "fe7484eeba5197e27305adb295a00ea923014d5f8c58d7174887312495888033", + "report_sha256": "2e07ccaeb787d82c704c1b88793ae28c36078eba8806d482b4b042693c067862" + }, + "hci": { + "target_successful_connection_events": 3, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16", + "0x16", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "target_establishment_0x3e_disconnects": 0, + "target_timeout_0x08_disconnects": 0, + "target_ll_response_timeout_0x22_disconnects": 0, + "classification_complete": true, + "clean": true + }, + "subject_provenance": { + "board": "RAK WisMesh Tag", + "target": "RAK_WisMesh_Tag_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "c9da30b5d898c61587982c58b19e2f3593246a21a75f16599948dc965a2741db" + } + } + ], + "rf": { + "status": "passed", + "trials": [ + { + "peer_board": "Seeed Tracker T1000-E", + "passed": true, + "started_utc": "2026-10-28T17:06:07.190513+00:00", + "finished_utc": "2026-10-28T17:06:27.387132+00:00", + "rounds": 3, + "legs": 6, + "all_legs_passed": true, + "all_zero_hop_identity_nonce_bound": true, + "max_elapsed_seconds": 0.522, + "packet_deltas": [ + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + } + ], + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "t1000": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "report_sha256": "37857800ab9560015192edb42e8b20033db7aaaeaa604d9fe243e29646a6606b", + "subject_provenance": { + "board": "RAK WisMesh Tag", + "target": "RAK_WisMesh_Tag_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "c9da30b5d898c61587982c58b19e2f3593246a21a75f16599948dc965a2741db" + } + }, + { + "peer_board": "Heltec T096", + "passed": true, + "started_utc": "2026-10-28T17:05:04.447063+00:00", + "finished_utc": "2026-10-28T17:05:24.848572+00:00", + "rounds": 3, + "legs": 6, + "all_legs_passed": true, + "all_zero_hop_identity_nonce_bound": true, + "max_elapsed_seconds": 0.413, + "packet_deltas": [ + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + } + ], + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "t096": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "report_sha256": "8f2a793f984e5b45d2c1b8b60dd5e811bf215f669f8e3ab16505df60c8217729", + "subject_provenance": { + "board": "RAK WisMesh Tag", + "target": "RAK_WisMesh_Tag_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "c9da30b5d898c61587982c58b19e2f3593246a21a75f16599948dc965a2741db" + } + }, + { + "peer_board": "MeshPocket", + "passed": true, + "started_utc": "2026-10-28T17:05:46.259183+00:00", + "finished_utc": "2026-10-28T17:06:06.270631+00:00", + "rounds": 3, + "legs": 6, + "all_legs_passed": true, + "all_zero_hop_identity_nonce_bound": true, + "max_elapsed_seconds": 0.524, + "packet_deltas": [ + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + } + ], + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "pocket": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "report_sha256": "c6615cf9e548fe9f7ebbc50b2ef7e37c5c57b7b478f860aee94720b88bfd20c9", + "subject_provenance": { + "board": "RAK WisMesh Tag", + "target": "RAK_WisMesh_Tag_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "c9da30b5d898c61587982c58b19e2f3593246a21a75f16599948dc965a2741db" + } + } + ] + }, + "role": "Full Companion", + "installed_artifact_sha256": "c9da30b5d898c61587982c58b19e2f3593246a21a75f16599948dc965a2741db", + "installed_artifact_kind": "application-only DFU ZIP", + "installed_artifact_target": "RAK_WisMesh_Tag_companion_radio_full" + }, + { + "board": "Heltec T096", + "installed_source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33 (Build: 28-Oct-2026)", + "installation": { + "passed": true, + "app_only": true, + "erase_requested": false, + "bootloader_written": false, + "softdevice_written": false + }, + "installation_report_sha256": "3ea7b193a283290f44a5cba3e22495c7b5b589f074ea8e980fc1cd201777b477", + "usb": { + "passed": true, + "persistent_cycles_completed": 100, + "reopens_completed": 10, + "started_at": "2026-10-28T16:34:09.513824+00:00", + "finished_at": "2026-10-28T16:35:58.040510+00:00", + "channel_state_unchanged": true, + "contact_changes": { + "added": 0, + "other_live_record_changes": 0, + "removed": 0, + "timestamp_only_changed": 0, + "timestamp_regressions": 0 + }, + "uptime_segments_monotonic": true, + "final_core_stats": { + "battery_mv": 4155, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 12 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 32, + "ports_opened": 32, + "request_bytes_sent": 6841, + "request_frames_sent": 743, + "response_frames_received": 745, + "response_payload_bytes": 29342 + }, + "report_sha256": "ae4192a28ce295a1225ba50bb5226b033e08543de89ef2ef328614c5b919b5fe" + }, + "crud_warm_reboot": { + "passed": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "reboot_requests_sent": 1, + "warm_reboot_verified": true, + "uptime_before_reboot": 314, + "uptime_after_reboot": 3 + }, + "stable_binary_tails": { + "count": 31, + "all_passed": true, + "max_elapsed_seconds": 0.050443, + "input_bytes": 0, + "buffered_bytes": 0 + }, + "radio2": { + "passed": true, + "automatic_owner_before": false, + "lease_minutes": 1, + "natural_expiry_verified": true, + "expiry_polls": 11, + "original_secondary_restored": true, + "original_auto_owner_restored": false, + "intentional_rf_transmissions": 0, + "overlap_cases": 2, + "overlap_cases_passed": true + }, + "ble_trials": [ + { + "condition": "normal host WiFi; USB enumerated", + "started_at": "2026-10-28T16:40:42.601955+00:00", + "finished_at": "2026-10-28T16:43:01.222203+00:00", + "report_sha256": "d1614ef0d7027caa56941d4968563fcb7a4ba07372c1614f26e4e240a46a858e", + "requested_checks_passed": false, + "ble": { + "status": "failed", + "passed": false, + "sessions_completed": 3, + "payload_sessions_passed": true, + "timed_out": false, + "trace_sha256": "f11a1d0df191743200c37eb9b4e514e9a820eea109dd802c98bdf83e2356c979", + "report_sha256": "ee80ad766d0ad83c2c677997dab031a679614a2ebc522ad74bc965a6263ed2c6" + }, + "hci": { + "target_successful_connection_events": 4, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16", + "0x16", + "0x3e", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "target_establishment_0x3e_disconnects": 1, + "target_timeout_0x08_disconnects": 0, + "target_ll_response_timeout_0x22_disconnects": 0, + "classification_complete": true, + "clean": false + }, + "phase_markers": { + "trace_sha256": "f11a1d0df191743200c37eb9b4e514e9a820eea109dd802c98bdf83e2356c979", + "bluetooth_service_crashes": 0, + "journal_sha256": "4150ecea50b582ecf0bc07cd5fe238dbca2a5e4f973b1a24ae28c7c918f0be7a", + "encryption_change_successes": 3, + "pin_or_key_missing_markers": 0, + "cause_assigned": false + }, + "subject_provenance": { + "board": "Heltec T096", + "target": "Heltec_t096_companion_radio_full_femon", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "3e0ad88ca18a1f85811f0dbfc440466a11735c8c6e9db951265a8815c020d9d4" + } + } + ], + "rf": { + "status": "passed", + "trials": [ + { + "peer_board": "Heltec T096", + "passed": true, + "started_utc": "2026-10-28T17:05:04.447063+00:00", + "finished_utc": "2026-10-28T17:05:24.848572+00:00", + "rounds": 3, + "legs": 6, + "all_legs_passed": true, + "all_zero_hop_identity_nonce_bound": true, + "max_elapsed_seconds": 0.413, + "packet_deltas": [ + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + } + ], + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "t096": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "report_sha256": "8f2a793f984e5b45d2c1b8b60dd5e811bf215f669f8e3ab16505df60c8217729", + "subject_provenance": { + "board": "Heltec T096", + "target": "Heltec_t096_companion_radio_full_femon", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "3e0ad88ca18a1f85811f0dbfc440466a11735c8c6e9db951265a8815c020d9d4" + } + } + ] + }, + "role": "Full Companion", + "installed_artifact_sha256": "3e0ad88ca18a1f85811f0dbfc440466a11735c8c6e9db951265a8815c020d9d4", + "installed_artifact_kind": "application-only DFU ZIP", + "installed_artifact_target": "Heltec_t096_companion_radio_full_femon" + }, + { + "board": "MeshPocket", + "installed_source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33 (Build: 28-Oct-2026)", + "installation": { + "passed": true, + "app_only": true, + "erase_requested": false, + "bootloader_written": false, + "softdevice_written": false + }, + "installation_report_sha256": "6bf160539e1dd0e5d3e6f88d0fe2d189552db23ae19b4d109204de74bb1dc7d0", + "usb": { + "passed": true, + "persistent_cycles_completed": 100, + "reopens_completed": 10, + "started_at": "2026-10-28T16:35:58.791863+00:00", + "finished_at": "2026-10-28T16:38:06.540533+00:00", + "channel_state_unchanged": true, + "contact_changes": { + "added": 0, + "other_live_record_changes": 0, + "removed": 0, + "timestamp_only_changed": 0, + "timestamp_regressions": 0 + }, + "uptime_segments_monotonic": true, + "final_core_stats": { + "battery_mv": 4084, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 27 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 31, + "ports_opened": 31, + "request_bytes_sent": 6755, + "request_frames_sent": 738, + "response_frames_received": 743, + "response_payload_bytes": 30108 + }, + "report_sha256": "f799169003b55d7fd57571cac3bcdd08a1649be3fd25b205f04d2c9d88f38f85" + }, + "crud_warm_reboot": { + "passed": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "reboot_requests_sent": 1, + "warm_reboot_verified": true, + "uptime_before_reboot": 351, + "uptime_after_reboot": 17 + }, + "stable_binary_tails": { + "count": 30, + "all_passed": true, + "max_elapsed_seconds": 0.050602, + "input_bytes": 0, + "buffered_bytes": 0 + }, + "radio2": { + "passed": true, + "automatic_owner_before": false, + "lease_minutes": 1, + "natural_expiry_verified": true, + "expiry_polls": 10, + "original_secondary_restored": true, + "original_auto_owner_restored": false, + "intentional_rf_transmissions": 0, + "overlap_cases": 2, + "overlap_cases_passed": true + }, + "ble_trials": [ + { + "condition": "normal host WiFi; USB enumerated", + "started_at": "2026-10-28T16:43:01.606868+00:00", + "finished_at": "2026-10-28T16:45:21.179069+00:00", + "report_sha256": "e485736a7b0cc0ea8b2bbf18c4ad74970dc3a9cbf22bd5eaf7fbade39a59496d", + "requested_checks_passed": true, + "ble": { + "status": "passed", + "passed": true, + "sessions_completed": 3, + "payload_sessions_passed": true, + "timed_out": false, + "trace_sha256": "b38dde3a6c3eb5f1db0bce62e4a8588045f947a96026f6aeb4189e27b891718f", + "report_sha256": "81c43de646d5d86e65e4ae0591240f26ddfd1aa92df5f1739554def2e8817166" + }, + "hci": { + "target_successful_connection_events": 3, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16", + "0x16", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "target_establishment_0x3e_disconnects": 0, + "target_timeout_0x08_disconnects": 0, + "target_ll_response_timeout_0x22_disconnects": 0, + "classification_complete": true, + "clean": true + }, + "subject_provenance": { + "board": "MeshPocket", + "target": "Mesh_pocket_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "4f85629da02a3826b8548a106fa199262408237c9f44aa78e950f5ab7ff1a994" + } + } + ], + "rf": { + "status": "passed", + "trials": [ + { + "peer_board": "MeshPocket", + "passed": true, + "started_utc": "2026-10-28T17:05:46.259183+00:00", + "finished_utc": "2026-10-28T17:06:06.270631+00:00", + "rounds": 3, + "legs": 6, + "all_legs_passed": true, + "all_zero_hop_identity_nonce_bound": true, + "max_elapsed_seconds": 0.524, + "packet_deltas": [ + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + }, + { + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + } + } + ], + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "pocket": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "report_sha256": "c6615cf9e548fe9f7ebbc50b2ef7e37c5c57b7b478f860aee94720b88bfd20c9", + "subject_provenance": { + "board": "MeshPocket", + "target": "Mesh_pocket_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "4f85629da02a3826b8548a106fa199262408237c9f44aa78e950f5ab7ff1a994" + } + } + ] + }, + "role": "Full Companion", + "installed_artifact_sha256": "4f85629da02a3826b8548a106fa199262408237c9f44aa78e950f5ab7ff1a994", + "installed_artifact_kind": "application-only DFU ZIP", + "installed_artifact_target": "Mesh_pocket_companion_radio_full" + } + ], + "historical_c9_companions": [ + { + "board": "Seeed T1000-E", + "role": "Full Companion", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47 (Build: 28-Oct-2026)", + "installed_artifact_sha256": "824b6bc39853fddeeba553bf91db79a098afccfc7886546750d3a7afdd73f03e", + "installed_artifact_kind": "application-only DFU ZIP", + "application_install": { + "passed": true, + "app_only": true, + "bootloader_written": false, + "softdevice_written": false, + "erase_requested": false, + "runtime_version_verified": true, + "identity_preserved": true, + "logical_settings_preserved": true, + "contacts_preserved": true, + "channels_preserved": true + }, + "radio2": { + "passed": true, + "lease_minutes": 1, + "mode": "rxtx", + "natural_expiry_verified": true, + "expiry_polls": 11, + "original_auto_owner_restored": true, + "persistent_radio_or_channel_setters_sent": false, + "intentional_rf_transmissions": 0, + "overlap_cases_completed": 0, + "overlap_cases_passed": 0 + }, + "binary_settings": { + "passed": true, + "binary_tx_setter_acknowledged": true, + "pending_saved_pin_readback_matches": true, + "pending_pin_readback_survives_usb_reopen": true, + "original_settings_restored": true, + "physical_tx_power_measured": false, + "hardware_application_verified": false, + "pin_cold_persistence_tested": false, + "rf_send_commands": 0, + "reboots_requested": 0 + }, + "ble_trials": [ + { + "attempt": "20261028T132437.657199Z", + "strict_passed": false, + "condition": "target host-deauthorized; USB power not commanded off", + "host_wifi_condition": "normal host WiFi; wlan0 remained associated", + "measurement_started_utc": "2026-10-28T13:24:37.669577+00:00", + "measurement_finished_utc": "2026-10-28T13:24:51.844789+00:00", + "source_summary_sha256": "097da121761c672abd47f6465ceef15d4b1f02702ff18dcacd59dea91e9f7780", + "target_bond_removal_requested": false, + "usb_unmount_settle_seconds": 3, + "usb_restored": true, + "qualification_payload_worker_ran": true, + "passed": false, + "sessions_requested": 3, + "sessions_completed": 0, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "session_hold_seconds": [], + "authentication_markers": { + "trace_sha256": "ebfb99197460b52526a8a145eed0caa9dc38d53a3f70cd3a2a6e622dbc95586e", + "markers": [], + "key_missing_status_observed": false + }, + "host_daemon_check": { + "interval_started_utc": "2026-10-28T13:24:37.669577+00:00", + "interval_finished_utc": "2026-10-28T13:24:51.844789+00:00", + "journal_window_padding_seconds": 1, + "sigsegv_events": 0, + "daemon_start_events": 0, + "journal_records": 0, + "source_journal_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + { + "attempt": "20261028T133005.382208Z", + "strict_passed": false, + "condition": "target host-deauthorized; USB power not commanded off", + "host_wifi_condition": "normal host WiFi; wlan0 remained associated", + "measurement_started_utc": "2026-10-28T13:30:05.385949+00:00", + "measurement_finished_utc": "2026-10-28T13:33:12.001969+00:00", + "source_summary_sha256": "e5d92082aaf706c86c5733472dee3aa124b2869b2e9e0ab421590f7950826666", + "target_bond_removal_requested": false, + "usb_unmount_settle_seconds": 3, + "usb_restored": true, + "hci": { + "clean": false, + "target_successful_connection_events": 4, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x3e", + "0x16", + "0x22", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true, + "source_summary_sha256": "5f62813bbe3105cee40ad52bf2185dfe34fd047efa4b485e3e042460560fa70d" + }, + "qualification_payload_worker_ran": true, + "passed": true, + "sessions_requested": 3, + "sessions_completed": 3, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "full_version_matches": true, + "usb_public_key_matches": true, + "final_target_disconnected": true, + "session_hold_seconds": [ + 32.307, + 32.426, + 31.02 + ], + "authentication_markers": { + "trace_sha256": "c57fb44352f22ddf857f28e7a65f778e6f8b518c90ac6fe9749112db6f75dba0", + "markers": [ + { + "phase": "start_encryption" + }, + { + "phase": "encryption_change", + "status": { + "name": "Success", + "code": "0x00" + } + }, + { + "phase": "start_encryption" + }, + { + "phase": "encryption_change", + "status": { + "name": "Success", + "code": "0x00" + } + }, + { + "phase": "start_encryption" + }, + { + "phase": "encryption_change", + "status": { + "name": "Success", + "code": "0x00" + } + } + ], + "key_missing_status_observed": false + }, + "host_daemon_check": { + "interval_started_utc": "2026-10-28T13:30:05.385949+00:00", + "interval_finished_utc": "2026-10-28T13:33:12.001969+00:00", + "journal_window_padding_seconds": 1, + "sigsegv_events": 0, + "daemon_start_events": 0, + "journal_records": 0, + "source_journal_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + { + "attempt": "20261028T140554.518846Z", + "strict_passed": false, + "condition": "target host-deauthorized; USB power not commanded off", + "host_wifi_condition": "wlan0 disconnected; eth0 management; exact WiFi connection restored by outer driver", + "measurement_started_utc": "2026-10-28T14:05:54.520551+00:00", + "measurement_finished_utc": "2026-10-28T14:07:02.973533+00:00", + "source_summary_sha256": "445da9ad051de2a7b297195859203f2dc9dc39cc3a763ffd3a5c6e556ed89d8d", + "target_bond_removal_requested": false, + "usb_unmount_settle_seconds": 10, + "usb_restored": true, + "hci": { + "clean": false, + "target_successful_connection_events": 2, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x3e", + "0x08" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true, + "source_summary_sha256": "64a9cb1d005928ba80552b3dddf1f78b89b6e404e862260ede71e0aa9b98da80" + }, + "qualification_payload_worker_ran": true, + "passed": false, + "sessions_requested": 3, + "sessions_completed": 0, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "session_hold_seconds": [], + "authentication_markers": { + "trace_sha256": "19cb070fa08cc9334c92be8d0bd25de2f64c7e65cbe16bf2018fedfc798fa077", + "markers": [ + { + "phase": "start_encryption" + }, + { + "phase": "encryption_change", + "status": { + "name": "Success", + "code": "0x00" + } + } + ], + "key_missing_status_observed": false + }, + "host_daemon_check": { + "interval_started_utc": "2026-10-28T14:05:54.520551+00:00", + "interval_finished_utc": "2026-10-28T14:07:02.973533+00:00", + "journal_window_padding_seconds": 1, + "sigsegv_events": 0, + "daemon_start_events": 0, + "journal_records": 0, + "source_journal_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + }, + { + "attempt": "20261028T142607.276080Z", + "strict_passed": false, + "condition": "radio2 temporarily saved Off; exact-target host deauthorization; normal host WiFi", + "host_wifi_condition": "normal host WiFi; wlan0 remained associated", + "measurement_started_utc": "2026-10-28T14:26:07.276665+00:00", + "measurement_finished_utc": "2026-10-28T14:26:40.028759+00:00", + "source_summary_sha256": "cef00534ed299f9b446ff6b6d1c8bbfe47573b98b0fa818a1ee27788c68901cf", + "target_bond_removal_requested": false, + "usb_unmount_settle_seconds": 10, + "usb_restored": true, + "changed_condition_only": true, + "original_auto_owner_restored": true, + "qualification_payload_worker_ran": true, + "passed": false, + "sessions_requested": 3, + "sessions_completed": 0, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "session_hold_seconds": [], + "authentication_markers": { + "trace_sha256": "c0fca19c26c94521eb255cd19f85246fc65224ba85023e9411b28e75ca0db6dd", + "markers": [], + "key_missing_status_observed": false + }, + "host_daemon_check": { + "interval_started_utc": "2026-10-28T14:26:07.276665+00:00", + "interval_finished_utc": "2026-10-28T14:26:40.028759+00:00", + "journal_window_padding_seconds": 1, + "sigsegv_events": 0, + "daemon_start_events": 0, + "journal_records": 0, + "source_journal_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" + } + } + ], + "rf_trials": [ + { + "attempt": "rf-tag-t1000-run1", + "harness_passed": true, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "t1000": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.641, + "path_bytes": 0, + "snr_db": 13.0, + "rssi_dbm": -40, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.408, + "path_bytes": 0, + "snr_db": 13.0, + "rssi_dbm": -32, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 13.25, + "rssi_dbm": -40, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.405, + "path_bytes": 0, + "snr_db": 13.5, + "rssi_dbm": -32, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.404, + "path_bytes": 0, + "snr_db": 12.5, + "rssi_dbm": -40, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 13.25, + "rssi_dbm": -32, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ] + } + ], + "retained_attempt_notes": [ + "Initial app install was refused before touching hardware by owner-inspection mode; scoped helper retry passed.", + "Legacy USB radio2 test refused existing automatic owner after100query/10reopen pass; RAM-only natural-expiry replacement passed.", + "First host-release bookkeeping failure and second missing-BLE-library failure restored USB; neither is BLE qualification.", + "Normal-WiFi BLE completed3payloadsessions but HCI contained0x3e/0x22 disconnects.", + "WiFi-quiet BLE completed0sessions; HCI0x3e/0x08. Exact WiFi connection and USB were restored.", + "Approved radio2-Off changed-condition diagnostic found no unique current USB-bound BLE advertisement in25seconds, before any connection; original auto owner and USB/settings restored." + ], + "usb": { + "passed": true, + "queries_requested": 100, + "persistent_cycles_completed": 100, + "reopens_requested": 10, + "reopens_completed": 10, + "channel_state_unchanged": true, + "cold_boot_tested": false, + "initial_core_stats": { + "battery_mv": 4182, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 786 + }, + "final_core_stats": { + "battery_mv": 4196, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 12 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 31, + "ports_opened": 31, + "request_bytes_sent": 6189, + "request_frames_sent": 713, + "response_frames_received": 718, + "response_payload_bytes": 28545 + }, + "owned_contact_and_warm_reboot": { + "passed": true, + "crud_requested": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "warm_reboot_verified": true, + "reboot_requests_sent": 1, + "uptime_before_reboot": 869, + "uptime_after_reboot": 3 + }, + "stable_binary_tail_summary": { + "sessions_checked": 30, + "all_passed": true, + "maximum_buffered_bytes": 0, + "maximum_input_bytes": 0, + "source_summary_sha256": "53e4e11ec8f1166955649359075a4c920cf29d5e275203c531b43bd24b1d7177" + } + } + }, + { + "board": "RAK WisMesh Tag", + "role": "Full Companion", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47 (Build: 28-Oct-2026)", + "installed_artifact_sha256": "60d0a86fac55cd8639257268da13d89a51e31e1b478ad1c451f47119690ee23f", + "installed_artifact_kind": "application-only DFU ZIP", + "application_install": { + "passed": true, + "app_only": true, + "bootloader_written": false, + "softdevice_written": false, + "erase_requested": false, + "runtime_version_verified": true, + "identity_preserved": true, + "logical_settings_preserved": true, + "contacts_preserved": true, + "channels_preserved": true + }, + "radio2": { + "passed": true, + "lease_minutes": 1, + "mode": "rxtx", + "natural_expiry_verified": true, + "expiry_polls": 10, + "original_secondary_restored": true, + "automatic_owner_before": false, + "original_auto_owner_restored": false, + "persistent_radio_or_channel_setters_sent": false, + "intentional_rf_transmissions": 0, + "overlap_cases_completed": 2, + "overlap_cases_passed": 2 + }, + "binary_settings": { + "passed": true, + "binary_tx_setter_acknowledged": true, + "pending_saved_pin_readback_matches": true, + "pending_pin_readback_survives_usb_reopen": true, + "original_settings_restored": true, + "physical_tx_power_measured": false, + "hardware_application_verified": false, + "pin_cold_persistence_tested": false, + "rf_send_commands": 0, + "reboots_requested": 0 + }, + "ble_trials": [ + { + "attempt": "20261028T135428.807280Z", + "strict_passed": false, + "condition": "normal mounted USB; normal host WiFi", + "host_wifi_condition": "normal host WiFi; no WiFi change requested during this trial", + "measurement_started_utc": "2026-10-28T13:54:28.809021+00:00", + "measurement_finished_utc": "2026-10-28T13:54:28.845708+00:00", + "source_summary_sha256": "31cb7cb4e9012be53eae14b516f8e7bd52d9ed5d5141e56d3bf32bd1acec0afb", + "target_bond_removal_requested": false, + "qualification_payload_worker_ran": false, + "payload_sessions_completed": 0 + }, + { + "attempt": "20261028T140158.046202Z", + "strict_passed": true, + "condition": "normal mounted USB; normal host WiFi", + "host_wifi_condition": "normal host WiFi; no WiFi change requested during this trial", + "measurement_started_utc": "2026-10-28T14:01:58.046875+00:00", + "measurement_finished_utc": "2026-10-28T14:04:16.302509+00:00", + "source_summary_sha256": "164f2fe47441daf85e79c8aaeeab46c9d88e8ce700fb073cbe77aa6a367a3543", + "target_bond_removal_requested": false, + "hci": { + "clean": true, + "target_successful_connection_events": 3, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16", + "0x16", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true, + "source_summary_sha256": "ea2949936d770646480a5cc7e976e009826617bbe9505c466e1e78d14487ccd5" + }, + "qualification_payload_worker_ran": true, + "passed": true, + "sessions_requested": 3, + "sessions_completed": 3, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "full_version_matches": true, + "usb_public_key_matches": true, + "final_target_disconnected": true, + "session_hold_seconds": [ + 30.269, + 30.3, + 30.329 + ] + } + ], + "rf_trials": [ + { + "attempt": "rf-tag-pocket-run1", + "harness_passed": true, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "pocket": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.405, + "path_bytes": 0, + "snr_db": 11.5, + "rssi_dbm": -52, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.416, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -41, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.409, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.423, + "path_bytes": 0, + "snr_db": 11.25, + "rssi_dbm": -41, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.413, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -52, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.424, + "path_bytes": 0, + "snr_db": 11.25, + "rssi_dbm": -41, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ] + }, + { + "attempt": "rf-tag-t096-run1", + "harness_passed": true, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "t096": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.407, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -25, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -30, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.407, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -23, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.41, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -30, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.412, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -23, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.419, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -30, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ] + }, + { + "attempt": "rf-tag-t1000-run1", + "harness_passed": true, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "t1000": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.641, + "path_bytes": 0, + "snr_db": 13.0, + "rssi_dbm": -40, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.408, + "path_bytes": 0, + "snr_db": 13.0, + "rssi_dbm": -32, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 13.25, + "rssi_dbm": -40, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.405, + "path_bytes": 0, + "snr_db": 13.5, + "rssi_dbm": -32, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.404, + "path_bytes": 0, + "snr_db": 12.5, + "rssi_dbm": -40, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 13.25, + "rssi_dbm": -32, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ] + }, + { + "attempt": "rf-tag-v43-run1", + "harness_passed": false, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "v43": { + "passed": false, + "failure_type": "RuntimeError" + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.414, + "path_bytes": 0, + "snr_db": 12.5, + "rssi_dbm": -35, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.413, + "path_bytes": 0, + "snr_db": 11.0, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.414, + "path_bytes": 0, + "snr_db": 12.5, + "rssi_dbm": -34, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.412, + "path_bytes": 0, + "snr_db": 11.0, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.417, + "path_bytes": 0, + "snr_db": 12.75, + "rssi_dbm": -34, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ], + "offline_comparison_followup": { + "passed": true, + "method": "offline corrected static radio2 comparison only", + "new_hardware_access": false, + "new_rf_send_commands": 0, + "original_failed_summary_preserved": true, + "original_summary_sha256": "024759290a84c836196453089785c5351866df55894e539840b1f7e46b590b61", + "six_source_identity_nonce_counter_bound_zero_hop_legs_verified": true, + "both_owned_radio_tx_restorations_verified": true, + "source_summary_sha256": "749d1210c2d3a2141290b97c1f349b6e08d3f3f95b4849090cde1296c0387adc" + } + } + ], + "retained_attempt_notes": [ + "Initial BLE preflight refused missing capability manifest before BLE; correct manifest staged, subsequent strict BLE passed." + ], + "usb": { + "passed": true, + "queries_requested": 100, + "persistent_cycles_completed": 100, + "reopens_requested": 10, + "reopens_completed": 10, + "channel_state_unchanged": true, + "cold_boot_tested": false, + "initial_core_stats": { + "battery_mv": 4121, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 1087 + }, + "final_core_stats": { + "battery_mv": 4118, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 14 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 31, + "ports_opened": 31, + "request_bytes_sent": 6755, + "request_frames_sent": 738, + "response_frames_received": 755, + "response_payload_bytes": 31230 + }, + "owned_contact_and_warm_reboot": { + "passed": true, + "crud_requested": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "warm_reboot_verified": true, + "reboot_requests_sent": 1, + "uptime_before_reboot": 1185, + "uptime_after_reboot": 4 + }, + "stable_binary_tail_summary": { + "sessions_checked": 30, + "all_passed": true, + "maximum_buffered_bytes": 0, + "maximum_input_bytes": 0, + "source_summary_sha256": "53e4e11ec8f1166955649359075a4c920cf29d5e275203c531b43bd24b1d7177" + } + } + }, + { + "board": "Heltec T096 FEM on", + "role": "Full Companion", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47 (Build: 28-Oct-2026)", + "installed_artifact_sha256": "e8230b79d6140d45e25a62cd6946fff844f05c9c583325afce39e809b0f369e8", + "installed_artifact_kind": "application-only DFU ZIP", + "application_install": { + "passed": true, + "app_only": true, + "bootloader_written": false, + "softdevice_written": false, + "erase_requested": false, + "runtime_version_verified": true, + "identity_preserved": true, + "logical_settings_preserved": true, + "contacts_preserved": true, + "channels_preserved": true + }, + "radio2": { + "passed": true, + "lease_minutes": 1, + "mode": "rxtx", + "natural_expiry_verified": true, + "expiry_polls": 10, + "original_secondary_restored": true, + "automatic_owner_before": false, + "original_auto_owner_restored": false, + "persistent_radio_or_channel_setters_sent": false, + "intentional_rf_transmissions": 0, + "overlap_cases_completed": 2, + "overlap_cases_passed": 2 + }, + "binary_settings": { + "passed": true, + "binary_tx_setter_acknowledged": true, + "pending_saved_pin_readback_matches": true, + "pending_pin_readback_survives_usb_reopen": true, + "original_settings_restored": true, + "physical_tx_power_measured": false, + "hardware_application_verified": false, + "pin_cold_persistence_tested": false, + "rf_send_commands": 0, + "reboots_requested": 0 + }, + "ble_trials": [ + { + "attempt": "20261028T140808.471165Z", + "strict_passed": true, + "condition": "normal mounted USB; normal host WiFi", + "host_wifi_condition": "normal host WiFi; no WiFi change requested during this trial", + "measurement_started_utc": "2026-10-28T14:08:08.472124+00:00", + "measurement_finished_utc": "2026-10-28T14:10:26.199848+00:00", + "source_summary_sha256": "c321a87796170a745d8bd8b2d7f60c111f8bf851262e757083ebd916f790f2c9", + "target_bond_removal_requested": false, + "hci": { + "clean": true, + "target_successful_connection_events": 3, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16", + "0x16", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true, + "source_summary_sha256": "7ba6d0dd1745ca75f33614f4d5422d0082bb1afe3b61047434ba20dda5c52ae8" + }, + "qualification_payload_worker_ran": true, + "passed": true, + "sessions_requested": 3, + "sessions_completed": 3, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "full_version_matches": true, + "usb_public_key_matches": true, + "final_target_disconnected": true, + "session_hold_seconds": [ + 30.211, + 30.24, + 30.24 + ] + } + ], + "rf_trials": [ + { + "attempt": "rf-tag-t096-run1", + "harness_passed": true, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "t096": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.407, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -25, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.406, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -30, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.407, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -23, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.41, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -30, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.412, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -23, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.419, + "path_bytes": 0, + "snr_db": 12.0, + "rssi_dbm": -30, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ] + } + ], + "retained_attempt_notes": [], + "usb": { + "passed": true, + "queries_requested": 100, + "persistent_cycles_completed": 100, + "reopens_requested": 10, + "reopens_completed": 10, + "channel_state_unchanged": true, + "cold_boot_tested": false, + "initial_core_stats": { + "battery_mv": 4195, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 1807 + }, + "final_core_stats": { + "battery_mv": 4173, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 14 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 31, + "ports_opened": 31, + "request_bytes_sent": 6755, + "request_frames_sent": 738, + "response_frames_received": 740, + "response_payload_bytes": 29010 + }, + "owned_contact_and_warm_reboot": { + "passed": true, + "crud_requested": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "warm_reboot_verified": true, + "reboot_requests_sent": 1, + "uptime_before_reboot": 1902, + "uptime_after_reboot": 4 + }, + "stable_binary_tail_summary": { + "sessions_checked": 30, + "all_passed": true, + "maximum_buffered_bytes": 0, + "maximum_input_bytes": 0, + "source_summary_sha256": "53e4e11ec8f1166955649359075a4c920cf29d5e275203c531b43bd24b1d7177" + } + } + }, + { + "board": "Heltec MeshPocket", + "role": "Full Companion", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47 (Build: 28-Oct-2026)", + "installed_artifact_sha256": "7f0195128d1c8c86fd15aed6b27e237d507adffc03ae17bb9efd3a04cd67ca17", + "installed_artifact_kind": "application-only DFU ZIP", + "application_install": { + "passed": true, + "app_only": true, + "bootloader_written": false, + "softdevice_written": false, + "erase_requested": false, + "runtime_version_verified": true, + "identity_preserved": true, + "logical_settings_preserved": true, + "contacts_preserved": true, + "channels_preserved": true + }, + "radio2": { + "passed": true, + "lease_minutes": 1, + "mode": "rxtx", + "natural_expiry_verified": true, + "expiry_polls": 10, + "original_secondary_restored": true, + "automatic_owner_before": false, + "original_auto_owner_restored": false, + "persistent_radio_or_channel_setters_sent": false, + "intentional_rf_transmissions": 0, + "overlap_cases_completed": 2, + "overlap_cases_passed": 2 + }, + "binary_settings": { + "passed": true, + "binary_tx_setter_acknowledged": true, + "pending_saved_pin_readback_matches": true, + "pending_pin_readback_survives_usb_reopen": true, + "original_settings_restored": true, + "physical_tx_power_measured": false, + "hardware_application_verified": false, + "pin_cold_persistence_tested": false, + "rf_send_commands": 0, + "reboots_requested": 0 + }, + "ble_trials": [ + { + "attempt": "20261028T141104.432712Z", + "strict_passed": true, + "condition": "normal mounted USB; normal host WiFi", + "host_wifi_condition": "normal host WiFi; no WiFi change requested during this trial", + "measurement_started_utc": "2026-10-28T14:11:04.433684+00:00", + "measurement_finished_utc": "2026-10-28T14:13:22.148324+00:00", + "source_summary_sha256": "50c47b7caebe234387a047e11980b6a8b10d03aa41c4aff143ae828a348bc815", + "target_bond_removal_requested": false, + "hci": { + "clean": true, + "target_successful_connection_events": 3, + "target_failed_establishments": 0, + "target_command_failures": 0, + "target_disconnect_reasons": [ + "0x16", + "0x16", + "0x16" + ], + "target_disconnect_statuses": [ + "0x00", + "0x00", + "0x00" + ], + "unattributed_controller_events": 0, + "lifecycle_parse_errors": 0, + "target_open_handles_at_end": 0, + "target_pending_attempts_at_end": 0, + "capture_ended_before_timeout": true, + "source_summary_sha256": "5766448ff1de1a4ccf68289bffae6de5823994239e282d36d2309b7bc05dcae9" + }, + "qualification_payload_worker_ran": true, + "passed": true, + "sessions_requested": 3, + "sessions_completed": 3, + "hold_seconds_requested": 30.0, + "adapter_reset": false, + "broad_bond_changes": false, + "full_version_matches": true, + "usb_public_key_matches": true, + "final_target_disconnected": true, + "session_hold_seconds": [ + 30.3, + 30.269, + 30.301 + ] + } + ], + "rf_trials": [ + { + "attempt": "rf-tag-pocket-run1", + "harness_passed": true, + "rounds_completed": 3, + "offline_queue_reads": 0, + "rf_send_attempts": 6, + "rf_retries": 0, + "cleanup": { + "pocket": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "legs": [ + { + "passed": true, + "elapsed_seconds": 0.405, + "path_bytes": 0, + "snr_db": 11.5, + "rssi_dbm": -52, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.416, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -41, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 1, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.409, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -51, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.423, + "path_bytes": 0, + "snr_db": 11.25, + "rssi_dbm": -41, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 2, + "direction": "peer_to_hub" + }, + { + "passed": true, + "elapsed_seconds": 0.413, + "path_bytes": 0, + "snr_db": 11.75, + "rssi_dbm": -52, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "hub_to_peer" + }, + { + "passed": true, + "elapsed_seconds": 0.424, + "path_bytes": 0, + "snr_db": 11.25, + "rssi_dbm": -41, + "full_usb_bound_peer_ids_and_nonce_verified": true, + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "receiver_packet_delta": { + "received": 1, + "sent": 0, + "sent_flood": 0, + "sent_direct": 0, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "offline_queue_reads": 0, + "round": 3, + "direction": "peer_to_hub" + } + ] + } + ], + "retained_attempt_notes": [ + "Original preflash core already contained watchdog flag8. After retaining candidate idle flag8 diagnostic, one identity-bound warm preparation returned0; full USB test then passed." + ], + "usb": { + "passed": true, + "queries_requested": 100, + "persistent_cycles_completed": 100, + "reopens_requested": 10, + "reopens_completed": 10, + "channel_state_unchanged": true, + "cold_boot_tested": false, + "initial_core_stats": { + "battery_mv": 4120, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 123 + }, + "final_core_stats": { + "battery_mv": 4112, + "error_flags": 0, + "outbound_queue_length": 0, + "uptime_seconds": 27 + }, + "transport": { + "discarded_prefix_bytes": 0, + "ignored_push_frames": 0, + "invalid_length_candidates": 0, + "ports_closed": 31, + "ports_opened": 31, + "request_bytes_sent": 6755, + "request_frames_sent": 738, + "response_frames_received": 743, + "response_payload_bytes": 30106 + }, + "owned_contact_and_warm_reboot": { + "passed": true, + "crud_requested": true, + "create_update_readback": true, + "reopen_readback": true, + "owned_record_survives_warm_reboot": true, + "owned_contact_removed_and_reopen_verified": true, + "warm_reboot_verified": true, + "reboot_requests_sent": 1, + "uptime_before_reboot": 223, + "uptime_after_reboot": 16 + }, + "stable_binary_tail_summary": { + "sessions_checked": 30, + "all_passed": true, + "maximum_buffered_bytes": 0, + "maximum_input_bytes": 0, + "source_summary_sha256": "53e4e11ec8f1166955649359075a4c920cf29d5e275203c531b43bd24b1d7177" + } + } + } + ], + "nrf_repeaters": [ + { + "board": "Heltec MeshTower V2 SD", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "application_sha256": "3aabda910a3b582c6c339bdc09612ccc9b1caa9ef5d9275439929a8acd8acfe9", + "qualification": "PASS: app-only USB update and readiness", + "installed_candidate_left": true, + "persistent_queries_completed": 100, + "fresh_reopens_completed": 10, + "warm_reboot_requests": 1, + "core_errors": 0, + "settings_preservation": { + "saved_getters_checked": 14, + "saved_getters_originally_unavailable": [ + "get usb.logging.always", + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 5, + "trusted_signer_list_preserved": true + }, + "identity_preserved": true, + "candidate_endf_verified": true, + "bootloader_version_unchanged": true, + "rtc_current": true, + "max_completed_command_seconds": 1.0952, + "usb_objects_closed": true, + "automatic_sleep_proofs": { + "automatic_sleep_before_usb": { + "uptime_secs": 11, + "status": "mode=auto active=on battery=0% clock=rtc window=sleep radio=sleep wake=610s hold=0s", + "no_awake_override": true + }, + "automatic_sleep_after_usb": { + "uptime_secs": 42, + "status": "mode=auto active=on battery=0% clock=rtc window=sleep radio=sleep wake=579s hold=0s", + "no_awake_override": true + }, + "automatic_sleep_after_warm_reboot": { + "uptime_secs": 11, + "status": "mode=auto active=on battery=0% clock=rtc window=sleep radio=sleep wake=567s hold=0s", + "no_awake_override": true + } + }, + "collector_originally_active": null, + "collector_unit_config_equal": null, + "collector_serial_owner_restored": null, + "installed_artifact_target": "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-full-ota" + }, + { + "board": "SolarXiao 33S", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "application_sha256": "61543eb675c2ed3eb8d55d03cd78b5ce4806817178a020f62d7d209353085f50", + "qualification": "PASS: app-only USB update and readiness", + "installed_candidate_left": true, + "persistent_queries_completed": 100, + "fresh_reopens_completed": 10, + "warm_reboot_requests": 1, + "core_errors": 0, + "settings_preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 2, + "trusted_signer_list_preserved": true + }, + "identity_preserved": true, + "candidate_endf_verified": true, + "bootloader_version_unchanged": true, + "rtc_current": true, + "max_completed_command_seconds": 4.0798, + "usb_objects_closed": true, + "automatic_sleep_proofs": {}, + "collector_originally_active": null, + "collector_unit_config_equal": null, + "collector_serial_owner_restored": null, + "installed_artifact_target": "solarxiao_33S_repeater-full-ota" + }, + { + "board": "RAK3401", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "application_sha256": "13ddc99a9fea2650880303e01ad658e0974129ca145ad0d11d2efceb288de045", + "qualification": "PASS: app-only USB update and readiness", + "installed_candidate_left": true, + "persistent_queries_completed": 100, + "fresh_reopens_completed": 10, + "warm_reboot_requests": 1, + "core_errors": 0, + "settings_preservation": { + "saved_getters_checked": 14, + "saved_getters_originally_unavailable": [ + "get usb.logging.always", + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 1, + "trusted_signer_list_preserved": true + }, + "identity_preserved": true, + "candidate_endf_verified": true, + "bootloader_version_unchanged": true, + "rtc_current": true, + "max_completed_command_seconds": 0.9998, + "usb_objects_closed": true, + "automatic_sleep_proofs": {}, + "collector_originally_active": true, + "collector_unit_config_equal": true, + "collector_serial_owner_restored": true, + "installed_artifact_target": "RAK_3401_repeater_lora_ota_no_external_sensors-full-ota" + }, + { + "board": "Seeed XIAO nRF52840", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "application_sha256": "48c81181a776519da471557c3fcb330f4427254c2adebd9752bca2dc3c28bc50", + "qualification": "PASS: app-only USB update and readiness", + "installed_candidate_left": true, + "persistent_queries_completed": 100, + "fresh_reopens_completed": 10, + "warm_reboot_requests": 1, + "core_errors": 0, + "settings_preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 1, + "trusted_signer_list_preserved": true + }, + "identity_preserved": true, + "candidate_endf_verified": true, + "bootloader_version_unchanged": true, + "rtc_current": true, + "max_completed_command_seconds": 3.9601, + "usb_objects_closed": true, + "automatic_sleep_proofs": {}, + "collector_originally_active": null, + "collector_unit_config_equal": null, + "collector_serial_owner_restored": null, + "installed_artifact_target": "Xiao_nrf52_repeater-full-ota" + }, + { + "board": "RAK4631", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "qualification": { + "persistent_queries_completed": 100, + "reopens_completed": 10, + "warm_reboot_requests": 1, + "uptime_before_warm_reboot": 10, + "uptime_after_warm_reboot": 3, + "source_bound_first_attempt_measurements_reused": true, + "new_queries_or_reboots_substituted": false, + "settings_preservation": { + "saved_getters_checked": 7, + "saved_getters_originally_unavailable": [ + "get password", + "get guest", + "get radio2", + "get radio2.cross", + "get radio.rxps.config", + "get powersaving", + "get usb.logging", + "get usb.logging.always", + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": false, + "acl_entries_preserved": null, + "trusted_signer_list_preserved": true + }, + "password_and_acl_originally_unavailable": true, + "password_or_acl_preserved_claimed": false, + "clock_within_90_seconds": true, + "final_core_stats": { + "battery_mv": 4223, + "uptime_secs": 282, + "errors": 0, + "queue_len": 0 + }, + "usb_completed_commands_measured": 250, + "usb_max_completed_command_seconds": 1.0997, + "final_usb_session_closed": true + }, + "started_utc": "2026-10-28T16:33:51.523830+00:00", + "finished_utc": "2026-10-28T16:33:53.532673+00:00", + "initial_failed_comparison_retained": true, + "original_summary_sha256": "e67d82c08327298732048ba3d2f276a4056bfb07e3729a1a485d5f89460bfb83", + "legacy_unknown_classifier_only": true, + "user_test_radio_no_backup_prerequisite_override": true, + "original_rollback_image_available": false, + "bootloader_numeric_version_before": "0x02040CFF", + "bootloader_version_after": "OTAFIX2.4.12", + "bootloader_crc_equal_claimed": false, + "bootloader_version_format_changed": true, + "clock_synchronized_forward": true, + "application_sha256": "915ced25f967ec302eacd218fdc10ee776eca579e71f61bdb89a3bc705f189e6", + "installed_candidate_left": true, + "identity_preserved": true, + "candidate_endf_verified": true, + "installed_artifact_target": "RAK_4631_repeater_lora_ota_no_external_sensors-full-ota" + } + ], + "esp_repeaters": [ + { + "board": "Heltec V3", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "candidate_sha256": "d983f8d27adb4a7d5fa9e9bd4ea6fc39925e7a54f75ae4a90f8dbb5ea68423ee", + "expected_runtime_version": "v1.18.0.2-halo-keymind-cascade-dev-observer-c9acec47", + "candidate_version": "v1.18.0.2-halo-keymind-cascade-dev-observer-c9acec47", + "flash_bytes": 8388608, + "backup_complete": true, + "backup_sha256": "872f321c5be4abd78f5d05d1a15fa8afc0dd1bd8c68a07cf59ae1ae044a7f13b", + "identity_probe_passed": true, + "bootloader_and_partition_preserved": true, + "usb_passed": true, + "usb_query_cycles": 100, + "usb_reopens": 10, + "usb_opens": 11, + "usb_core_errors_max": 0, + "packet_receive_error_delta": 0, + "warm_passed": true, + "warm_requests_sent": 1, + "warm_lower_uptime_proved": true, + "warm_wait_rejections": 0, + "candidate_core_errors": 0, + "saved_getters_preserved": true, + "identity_preserved": true, + "candidate_usb_qualified": true, + "legacy_radio2_off_annotation": true, + "final_state": "candidate installed with original identity and queried saved settings", + "controlled_retests": null, + "prewrite_guard_refusals": null, + "candidate_failure": null, + "restoration_failure": null, + "attempts": [ + { + "stage": "backup", + "started_utc": "2026-10-28T12:56:04.312630+00:00", + "finished_utc": "2026-10-28T13:12:26.051140+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "aa859e891d5b9aea1a2d2768f7d68fced3422ab48d76c69adf5d3ea5e2ed939d" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:19:49.092296+00:00", + "finished_utc": "2026-10-28T13:29:43.606637+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "75742aac4b751d8af430d91ed1d9e3ec4494cf908aa2590b33fce680808354ce" + } + ], + "status_sha256": "3b533ad5bbb59f689ef15833845039e0e89632ca91cb1cf0f3d42659fe33adcd", + "worker_alive": false, + "serial_unowned": true, + "worker_lock_free": true, + "installed_artifact_target": "Heltec_v3_repeater_observer_mqtt" + }, + { + "board": "LilyGo T-Deck", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "candidate_sha256": "83a73ddd7add2a98fef58b2a7c1335157e7ee4633d959923d78f876ec2f6b9d2", + "expected_runtime_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "candidate_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "flash_bytes": 16777216, + "backup_complete": true, + "backup_sha256": "00cc847d6c1929ae9206f5473d74df6e52136fc2b67b7a0eea0c082502a72ec7", + "identity_probe_passed": true, + "bootloader_and_partition_preserved": true, + "usb_passed": true, + "usb_query_cycles": 100, + "usb_reopens": 10, + "usb_opens": 11, + "usb_core_errors_max": 0, + "packet_receive_error_delta": 0, + "warm_passed": true, + "warm_requests_sent": 1, + "warm_lower_uptime_proved": true, + "warm_wait_rejections": 0, + "candidate_core_errors": 0, + "saved_getters_preserved": true, + "identity_preserved": true, + "candidate_usb_qualified": true, + "legacy_radio2_off_annotation": true, + "final_state": "candidate installed with original identity and queried saved settings", + "controlled_retests": 1, + "prewrite_guard_refusals": 1, + "candidate_failure": null, + "restoration_failure": null, + "attempts": [ + { + "stage": "backup", + "started_utc": "2026-10-28T12:56:04.571400+00:00", + "finished_utc": "2026-10-28T13:06:00.841849+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "aa859e891d5b9aea1a2d2768f7d68fced3422ab48d76c69adf5d3ea5e2ed939d" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:07:51.906423+00:00", + "finished_utc": "2026-10-28T13:18:36.820139+00:00", + "passed": false, + "error_type": "RuntimeError", + "reason": "Original saved getter differs: get radio2", + "worker_sha256": "c61a053b0c3a83ace4f8e72150d89221045466b3941aa538e68fa612c67688fb" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:21:26.531161+00:00", + "finished_utc": "2026-10-28T13:21:35.104344+00:00", + "passed": false, + "error_type": "RuntimeError", + "reason": "Stage capture exists; review old attempt before retry", + "worker_sha256": "75742aac4b751d8af430d91ed1d9e3ec4494cf908aa2590b33fce680808354ce" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:24:32.447584+00:00", + "finished_utc": "2026-10-28T13:29:13.875374+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "4319129d542c4fd6ed50fb1b8f491a94e336e1f2fa7db388a1ed0a529057376e" + } + ], + "status_sha256": "fb0e528b033b4a680445354ae4047c535aa6a0b168f6fc0c3c0fbcfa6ea4aa7b", + "worker_alive": false, + "serial_unowned": true, + "worker_lock_free": true, + "installed_artifact_target": "LilyGo_TDeck_repeater" + }, + { + "board": "SenseCAP Indicator", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "candidate_sha256": "78c494a116f4a233a9d8c72be2a80fbf0bf71506028723cec18b358dac1fd2ab", + "expected_runtime_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "candidate_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "flash_bytes": 8388608, + "backup_complete": true, + "backup_sha256": "94043073e5a37ea6f84798fb2bea2592ca55793ccf432cce9c24c339a1b41e18", + "identity_probe_passed": true, + "bootloader_and_partition_preserved": true, + "usb_passed": true, + "usb_query_cycles": 100, + "usb_reopens": 10, + "usb_opens": 11, + "usb_core_errors_max": 0, + "packet_receive_error_delta": 0, + "warm_passed": true, + "warm_requests_sent": 1, + "warm_lower_uptime_proved": true, + "warm_wait_rejections": 3, + "candidate_core_errors": 0, + "saved_getters_preserved": true, + "identity_preserved": true, + "candidate_usb_qualified": true, + "legacy_radio2_off_annotation": true, + "final_state": "candidate installed with original identity and queried saved settings", + "controlled_retests": 1, + "prewrite_guard_refusals": null, + "candidate_failure": null, + "restoration_failure": null, + "application_readiness": { + "started_utc": "2026-10-28T14:04:18.135667+00:00", + "time_origin": "after guarded bootloader-readback runtime handoff", + "budget_seconds": 180, + "passed": true, + "observations": [ + { + "index": 1, + "started_elapsed_seconds": 0.0029, + "error_type": "RuntimeError", + "reason": "Exact echoed query did not complete" + }, + { + "index": 2, + "started_elapsed_seconds": 8.1667, + "error_type": "RuntimeError", + "reason": "Exact echoed query did not complete" + }, + { + "index": 3, + "started_elapsed_seconds": 16.3587, + "error_type": "RuntimeError", + "reason": "Exact echoed query did not complete" + }, + { + "index": 4, + "started_elapsed_seconds": 24.5301, + "valid_full_version_elapsed_seconds": 29.3055, + "version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47 (Build: 28-Oct-2026)", + "bound_identity_role_and_version_verified": true + } + ], + "valid_full_version_elapsed_seconds": 29.3055 + }, + "controlled_indicator_readiness_trial": true, + "restoration_pinned_data_validator_passed": true, + "prior_candidate_readiness_refusals": [ + { + "failure": { + "at_utc": "2026-10-28T13:28:03.365737+00:00", + "error_type": "RuntimeError", + "reason": "Exact echoed query did not complete" + }, + "original_application_and_data_restored": true, + "final_read_only_completion_verified": true, + "firmware_defect_established": false + } + ], + "attempts": [ + { + "stage": "backup", + "started_utc": "2026-10-28T12:56:04.651215+00:00", + "finished_utc": "2026-10-28T13:12:31.010660+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "aa859e891d5b9aea1a2d2768f7d68fced3422ab48d76c69adf5d3ea5e2ed939d" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:19:49.092307+00:00", + "finished_utc": "2026-10-28T13:45:16.140166+00:00", + "passed": false, + "error_type": "RuntimeError", + "reason": "Exact echoed query did not complete", + "worker_sha256": "75742aac4b751d8af430d91ed1d9e3ec4494cf908aa2590b33fce680808354ce" + }, + { + "stage": "read-only restore verification completion", + "started_utc": "2026-10-28T13:49:18.540122+00:00", + "finished_utc": "2026-10-28T13:53:35.144233+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "ae31c39f0b80742d367a43b4e0c0f382735660a0d68cdccf9a3bef86c85559e6" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:57:00.436306+00:00", + "finished_utc": "2026-10-28T14:06:05.542609+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "c16e5794413c39f817ad350442ff6446eca63d65617f917e918d7c36613b36fd" + } + ], + "status_sha256": "e80f2d5ad6601f618a125696b53755ec89d564f264b8238f95384c1d4ce416e7", + "worker_alive": false, + "serial_unowned": true, + "worker_lock_free": true, + "installed_artifact_target": "SenseCapIndicator-LoRa_repeater" + }, + { + "board": "Heltec V4.2", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "candidate_sha256": "ba151fab2c6e6eca6b3025bb2df394fd250372faee0b4c5966291c72ebc3ab29", + "expected_runtime_version": "v1.18.0.2-halo-keymind-cascade-dev-observer-c9acec47", + "candidate_version": "v1.18.0.2-halo-keymind-cascade-dev-observer-c9acec47", + "flash_bytes": 16777216, + "backup_complete": true, + "backup_sha256": "00e32d55ce768d73915f2be329b3a59feadae1fe8a5dc5e2f9a3fbbf126e8914", + "identity_probe_passed": true, + "bootloader_and_partition_preserved": true, + "usb_passed": true, + "usb_query_cycles": 100, + "usb_reopens": 10, + "usb_opens": 11, + "usb_core_errors_max": 0, + "packet_receive_error_delta": 0, + "warm_passed": true, + "warm_requests_sent": 1, + "warm_lower_uptime_proved": true, + "warm_wait_rejections": 1, + "candidate_core_errors": 0, + "saved_getters_preserved": true, + "identity_preserved": true, + "candidate_usb_qualified": true, + "legacy_radio2_off_annotation": null, + "final_state": "candidate installed with original identity and queried saved settings", + "controlled_retests": 1, + "prewrite_guard_refusals": 1, + "candidate_failure": null, + "restoration_failure": null, + "attempts": [ + { + "stage": "backup", + "started_utc": "2026-10-28T12:56:04.409835+00:00", + "finished_utc": "2026-10-28T13:05:59.306600+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "aa859e891d5b9aea1a2d2768f7d68fced3422ab48d76c69adf5d3ea5e2ed939d" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:07:52.006241+00:00", + "finished_utc": "2026-10-28T13:19:19.071074+00:00", + "passed": false, + "error_type": "RuntimeError", + "reason": "Installed version does not match exact candidate", + "worker_sha256": "c61a053b0c3a83ace4f8e72150d89221045466b3941aa538e68fa612c67688fb" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:21:26.531161+00:00", + "finished_utc": "2026-10-28T13:21:35.075911+00:00", + "passed": false, + "error_type": "RuntimeError", + "reason": "Stage capture exists; review old attempt before retry", + "worker_sha256": "75742aac4b751d8af430d91ed1d9e3ec4494cf908aa2590b33fce680808354ce" + }, + { + "stage": "install", + "started_utc": "2026-10-28T13:24:32.385661+00:00", + "finished_utc": "2026-10-28T13:29:38.378669+00:00", + "passed": true, + "error_type": null, + "reason": null, + "worker_sha256": "4319129d542c4fd6ed50fb1b8f491a94e336e1f2fa7db388a1ed0a529057376e" + } + ], + "status_sha256": "77f4ee51ab3222cf518c8356813f13630414ca250d3575c4846226a33a525759", + "worker_alive": false, + "serial_unowned": true, + "worker_lock_free": true, + "installed_artifact_target": "heltec_v4_repeater_observer_mqtt" + } + ], + "infrastructure_rf": { + "schema": 1, + "updated_utc": "2026-10-28T17:14:37.488055+00:00", + "scope": "Eight installed Full Repeater candidates; finite board-only RF measurements", + "private_identifiers_excluded": true, + "boards": [ + { + "board": "Heltec MeshTower V2 SD", + "role": "Full Repeater", + "installed_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "artifact_sha256": "3aabda910a3b582c6c339bdc09612ccc9b1caa9ef5d9275439929a8acd8acfe9", + "artifact_kind": "application-only DFU ZIP", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-tower-run1", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:16:20.934978+00:00", + "measurement_finished_utc": "2026-10-28T14:17:04.204730+00:00", + "source_summary_sha256": "9f62d0115b709ac5da2554881fbac9bfae4c9a3fe50361d4c3ea6afef9d8a849", + "requests_attempted": 3, + "exact_responses_completed": 2, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tower": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TimeoutError", + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 1.547, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.75, + "response_snr_db": -2.0, + "hub_packet_delta": { + "received": 3, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 2, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 3, + "flood_tx": 2, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 2.724, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.5, + "response_snr_db": -2.25, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "measured_core_stats": { + "initial": { + "battery_mv": 2884, + "uptime_secs": 2473, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 2876, + "uptime_secs": 2506, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-tower-run2-paced", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:32:11.590246+00:00", + "measurement_finished_utc": "2026-10-28T14:32:20.893285+00:00", + "source_summary_sha256": "af4c9290c94ef9c03d12369a134b5d2962afbf126b8ad105030d1cbb99be3133", + "requests_attempted": 0, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TypeError", + "rounds": [], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [], + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": false, + "followup_entrypoint_sha256": "c9af8d8a2abadf9e3dc08f309c9e652f97acb344bf00451b865955e92c53702f", + "source_summary_sha256": "749d4d98c036f5f03fc794a96959bac3c92035f8e383a237510cdd08f2af96ba" + }, + "measured_core_stats": {}, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-tower-run3-paced", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:33:31.635298+00:00", + "measurement_finished_utc": "2026-10-28T14:34:22.966328+00:00", + "source_summary_sha256": "0dae6ab7a068106d28d8c729bdacde15e7968af57d2733bf1cfeb5122e14ed19", + "requests_attempted": 2, + "exact_responses_completed": 1, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tower": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TimeoutError", + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 0.822, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.5, + "response_snr_db": -3.75, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [ + { + "round": 1, + "elapsed_seconds": 6.066, + "observations": [ + { + "queue_len": 0, + "sent": 7 + }, + { + "queue_len": 0, + "sent": 7 + }, + { + "queue_len": 0, + "sent": 7 + }, + { + "queue_len": 0, + "sent": 7 + } + ] + }, + { + "round": 2, + "elapsed_seconds": 6.063, + "observations": [ + { + "queue_len": 0, + "sent": 8 + }, + { + "queue_len": 0, + "sent": 8 + }, + { + "queue_len": 0, + "sent": 8 + }, + { + "queue_len": 0, + "sent": 8 + } + ] + } + ], + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": true, + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 83, + "original_hidden": false, + "followup_entrypoint_sha256": "a80312256a8c92749465af6e68c6cf53f41aebc04c3bbee5686157ffea89bdbe", + "source_summary_sha256": "b88b4b54f9d8216e251eaf18a703608c0d581b73e67d4ee4b826cffdc8994bab" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 2905, + "uptime_secs": 3504, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 2866, + "uptime_secs": 3545, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-tower-run4-rxps-off", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T15:04:57.278891+00:00", + "measurement_finished_utc": "2026-10-28T15:05:25.816052+00:00", + "source_summary_sha256": "2c37d0ad78142531cf8da1941e75e29e2d7d60d459d8478371de0ec60bc0e6b1", + "requests_attempted": 0, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tower": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "RuntimeError", + "rounds": [], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [], + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": true, + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 83, + "original_hidden": false, + "original_rxps_configuration_restored_exactly": true, + "followup_entrypoint_sha256": "01a463c29a8ca74be8904f532c7a57a46241235f0c39e7ec47c099059ca5ba78", + "source_summary_sha256": "c3d7c1c03801079dedb4d4b57ee9c694a2298ce5f79724c3543440d15b5c9567" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 2876, + "uptime_secs": 5389, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 2855, + "uptime_secs": 5408, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-tower-run5-rxps-off", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T15:07:07.086893+00:00", + "measurement_finished_utc": "2026-10-28T15:07:56.482606+00:00", + "source_summary_sha256": "c871ecd7596ccc176d977bb4591ceaa8c0d6fa67e5df7286885cb01e1a1bfe0a", + "requests_attempted": 2, + "exact_responses_completed": 1, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tower": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": true, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TimeoutError", + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 0.554, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": -7.75, + "response_snr_db": -2.25, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [ + { + "round": 1, + "elapsed_seconds": 6.061, + "observations": [ + { + "queue_len": 0, + "sent": 11 + }, + { + "queue_len": 0, + "sent": 11 + }, + { + "queue_len": 0, + "sent": 11 + }, + { + "queue_len": 0, + "sent": 11 + } + ] + }, + { + "round": 2, + "elapsed_seconds": 6.061, + "observations": [ + { + "queue_len": 0, + "sent": 12 + }, + { + "queue_len": 0, + "sent": 12 + }, + { + "queue_len": 0, + "sent": 12 + }, + { + "queue_len": 0, + "sent": 12 + } + ] + } + ], + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": true, + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 83, + "original_hidden": false, + "continued_after_zero_rf_full_tuple_readback_guard_refusal": true, + "prior_failed_summary_sha256": "2c37d0ad78142531cf8da1941e75e29e2d7d60d459d8478371de0ec60bc0e6b1", + "continuous_rx_requested_and_readback_verified": true, + "original_rxps_configuration_restored_exactly": true, + "followup_entrypoint_sha256": "97ffcee3a733e03f4f82d60c627bcd9ba5ae0c9ce76fb4a4ed55f73f600d316a", + "source_summary_sha256": "e9a92d9a0fa6448ae54b7719ded2892341d766576f0ee77ed6da8d8993c7961b" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 2869, + "uptime_secs": 5519, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 2862, + "uptime_secs": 5558, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [], + "emergency_trials": [], + "retained_notes": [ + "Baseline2of3 replies; paced quiet-queue follow-up1of2 replies; continuous-RX conditional diagnostic1of2 replies. All missing responses retained, no further RF retry. RXPS-off preflight full-tuple formatter refusal sent0requests and restored exact settings before its measured continuation. Original auto emergency at actual0% restored with hold0." + ] + }, + { + "board": "Seeed XIAO nRF52840", + "role": "Full Repeater", + "installed_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "artifact_sha256": "48c81181a776519da471557c3fcb330f4427254c2adebd9752bca2dc3c28bc50", + "artifact_kind": "application-only DFU ZIP", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-xiao_nrf-run1", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:18:53.496778+00:00", + "measurement_finished_utc": "2026-10-28T14:19:17.459379+00:00", + "source_summary_sha256": "1de4079e52b283690ad790be0cc4049e63742f00226c916232fed2398165da00", + "requests_attempted": 3, + "exact_responses_completed": 3, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "xiao_nrf": { + "passed": false, + "failure_type": "RuntimeError" + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "RuntimeError", + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 1.477, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.25, + "response_snr_db": 11.75, + "hub_packet_delta": { + "received": 2, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 2, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 2, + "flood_tx": 0, + "direct_tx": 2, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 1.549, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.75, + "response_snr_db": 11.75, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 3, + "passed": true, + "elapsed_seconds": 2.489, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.25, + "response_snr_db": 11.5, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "comparison-followup": { + "passed": true, + "method": "offline corrected battery diagnostic comparison only", + "new_hardware_access": false, + "new_rf_send_commands": 0, + "original_failed_summary_preserved": true, + "original_summary_sha256": "1de4079e52b283690ad790be0cc4049e63742f00226c916232fed2398165da00", + "source_summary_sha256": "524e7de46d056324f205ffdc86d6d66bde8d724daff8fed5aa5f50e19c0178db" + }, + "cleanup-readonly-followup": { + "passed": true, + "method": "Fresh exact-identity/source-bound read-only cleanup follow-up", + "new_rf_send_commands": 0, + "setters_sent": 0, + "saved_getters_and_forwarding_gates_equal": true, + "primary_temporary_off": true, + "primary_schedule_empty": true, + "core_stats": { + "battery_mv": 4122, + "uptime_secs": 2616, + "errors": 0, + "queue_len": 0 + }, + "exact_identity_version_verified": true, + "source_summary_sha256": "0764757d92bdf09bcae1974fa5803714ead90d0ad713718eca7aef031b4fd72b" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 3783, + "uptime_secs": 2283, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 3761, + "uptime_secs": 2295, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [], + "emergency_trials": [], + "retained_notes": [ + "All3physical discovery rounds passed. Initial cleanup comparison rejected only changing live battery ADC fields; narrow offline comparison and fresh read-only schedule/core check separately prove final restoration." + ] + }, + { + "board": "SolarXiao MPPT 33S", + "role": "Full Repeater", + "installed_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "artifact_sha256": "61543eb675c2ed3eb8d55d03cd78b5ce4806817178a020f62d7d209353085f50", + "artifact_kind": "application-only DFU ZIP", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-solarxiao33s-run1", + "harness_passed": true, + "measurement_started_utc": "2026-10-28T14:23:05.198135+00:00", + "measurement_finished_utc": "2026-10-28T14:23:28.522519+00:00", + "source_summary_sha256": "295cb54a3dbc865e99bd4d8cbbf05961bce4abc8623fe21a0483886b941392ad", + "requests_attempted": 3, + "exact_responses_completed": 3, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "solarxiao33s": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": null, + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 0.885, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.25, + "response_snr_db": 12.0, + "hub_packet_delta": { + "received": 2, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 2, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 2, + "flood_tx": 0, + "direct_tx": 2, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 1.46, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.0, + "response_snr_db": 12.25, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 3, + "passed": true, + "elapsed_seconds": 0.837, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.0, + "response_snr_db": 12.5, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "measured_core_stats": { + "initial": { + "battery_mv": 3785, + "uptime_secs": 2742, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 4141, + "uptime_secs": 2756, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [ + { + "passed": false, + "scope": "single warm preparation, not RF qualification", + "reboot_requests": 0, + "rf_send_commands": 0, + "clear_stats_commands": 0, + "before_core": { + "battery_mv": 3772, + "uptime_secs": 4408, + "errors": 2, + "queue_len": 0 + }, + "failure_type": "RuntimeError", + "attempt": "collector-owned-rf-emergency-run2", + "source_summary_sha256": "be8c6b5f4d1586075666148d68c04d426d862468e7efdfe3654255f0c77ba668" + }, + { + "passed": true, + "scope": "single warm preparation, not RF qualification", + "reboot_requests": 1, + "rf_send_commands": 0, + "clear_stats_commands": 0, + "before_core": { + "battery_mv": 3785, + "uptime_secs": 4780, + "errors": 2, + "queue_len": 0 + }, + "after_core": { + "battery_mv": 3768, + "uptime_secs": 7, + "errors": 0, + "queue_len": 1 + }, + "preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 2, + "trusted_signer_list_preserved": true + }, + "cad_recovery_admission": { + "live_rx_previously_proved": true, + "queue_and_sent_counter_idle": true, + "observations": [ + { + "queue_len": 0, + "sent": 514 + }, + { + "queue_len": 0, + "sent": 514 + }, + { + "queue_len": 0, + "sent": 514 + } + ], + "automatic_retries": 0 + }, + "attempt": "collector-owned-rf-emergency-run3", + "source_summary_sha256": "8c2852a5e545c332eefbb57a63f031dea7a994d3b2be6c2f504e023e433134e5" + } + ], + "emergency_trials": [ + { + "passed": true, + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "expected_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "driver_sha256": "d8da090510a74bb86be129562432b6a3c433247838f42b3ccf57de27c20786dc", + "reviewed_method_sha256": "2c4799cb239f9d092d5cf46c0366408aa95f766f786f56af4b913e07b636418f", + "cpu_condition": "native USB host enumerated; retained idle slices capped100ms", + "limitations": [ + "Manual emergency entry at actual reported battery; automatic5% threshold not exercised", + "USB-held CPU/RF scheduling only; current consumption and detached USB sleep not measured", + "Past RTC boundaries accelerated; no real45-minute duration or MPPT charging claim" + ], + "boot_observations": [ + { + "command": "clkreboot", + "before_uptime_secs": 911, + "after_uptime_secs": 7, + "uptime_decreased": true, + "core_errors_after": 0 + }, + { + "command": "reboot", + "before_uptime_secs": 15, + "after_uptime_secs": 7, + "uptime_decreased": true, + "core_errors_after": 0 + }, + { + "command": "clkreboot", + "before_uptime_secs": 15, + "after_uptime_secs": 7, + "uptime_decreased": true, + "core_errors_after": 0 + } + ], + "real_minute_lease": false, + "accelerated_hourly_cycles": [], + "manual_mode_survived_reboot": true, + "original_settings_and_present_rtc_restored": true, + "final_power": { + "mode": "auto", + "active": "off", + "battery": "66%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + }, + "finished_utc": "2026-10-28T15:17:02.757321+00:00", + "prior_evidence_sha256": { + "intent.private.json": "a240447d38de0e9dabfa86e24e55a049f41ac340d05ba2e3cecbd940c8ecc4b4", + "summary.safe.json": "16b89af942c652cd960c2d29eb4d3c2f9b589c5acab97c7942b3e3606d9b3a38", + "trial/report.json": "b1e5ff41da3d6d95fb5556ecb1650620543e0f2fc8a9911d989c946a9ebd8a00" + }, + "prior_axes_repeated": false, + "test_scope": "manual-persistence-only", + "one_shot_reboot_delivery_hold_ms": 1500, + "attempt": "emergency-solarxiao33s-70-followup1", + "source_summary_sha256": "43b47592c54d7c8be47eba754aaff703aebd56ab19e9d8116b5b067d4037fcc4", + "underlying_submeasurements": { + "passed": true, + "cleanup": "complete", + "real_minute_lease": false, + "accelerated_hourly_cycles": [], + "manual_mode_survived_reboot": true, + "final_power": { + "mode": "auto", + "active": "off", + "battery": "66%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + }, + "source_report_sha256": "274494cb695a6779994b67c040d6377ae6d42ed01abfb98ab598df85221b4f9a" + } + }, + { + "passed": false, + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "expected_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "driver_sha256": "764414a81317a5f4f28806ab968b25fb487fbdb447c9641d24ff97abbb3ba59e", + "reviewed_method_sha256": "2c4799cb239f9d092d5cf46c0366408aa95f766f786f56af4b913e07b636418f", + "cpu_condition": "native USB host enumerated; retained idle slices capped100ms", + "limitations": [ + "Manual emergency entry at actual reported battery; automatic5% threshold not exercised", + "USB-held CPU/RF scheduling only; current consumption and detached USB sleep not measured", + "Past RTC boundaries accelerated; no real45-minute duration or MPPT charging claim" + ], + "boot_observations": [], + "finished_utc": "2026-10-28T14:45:27.856371+00:00", + "failure_type": "RuntimeError", + "attempt": "emergency-solarxiao33s-70-run1", + "source_summary_sha256": "9b956e4ff22a0129e817016bbb3433ebd1a9a6f25d02d0e4e433a94f44e439a0", + "underlying_submeasurements": { + "passed": false, + "cleanup": "complete", + "real_minute_lease": false, + "accelerated_hourly_cycles": [], + "manual_mode_survived_reboot": false, + "source_report_sha256": "950f9430ddf1f1992b7b889eba0c2b6cbae971eff8f55b178b4bd9310be8563e" + } + }, + { + "passed": false, + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "expected_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "driver_sha256": "764414a81317a5f4f28806ab968b25fb487fbdb447c9641d24ff97abbb3ba59e", + "reviewed_method_sha256": "2c4799cb239f9d092d5cf46c0366408aa95f766f786f56af4b913e07b636418f", + "cpu_condition": "native USB host enumerated; retained idle slices capped100ms", + "limitations": [ + "Manual emergency entry at actual reported battery; automatic5% threshold not exercised", + "USB-held CPU/RF scheduling only; current consumption and detached USB sleep not measured", + "Past RTC boundaries accelerated; no real45-minute duration or MPPT charging claim" + ], + "boot_observations": [ + { + "command": "clkreboot", + "before_uptime_secs": 82, + "after_uptime_secs": 7, + "uptime_decreased": true, + "core_errors_after": 0 + }, + { + "command": "reboot", + "before_uptime_secs": 123, + "after_uptime_secs": 128, + "uptime_decreased": false, + "core_errors_after": 0 + }, + { + "command": "clkreboot", + "before_uptime_secs": 129, + "after_uptime_secs": 7, + "uptime_decreased": true, + "core_errors_after": 0 + } + ], + "finished_utc": "2026-10-28T15:01:09.994480+00:00", + "failure_type": "RuntimeError", + "attempt": "emergency-solarxiao33s-70-run3", + "source_summary_sha256": "16b89af942c652cd960c2d29eb4d3c2f9b589c5acab97c7942b3e3606d9b3a38", + "underlying_submeasurements": { + "passed": true, + "cleanup": "complete", + "real_minute_lease": true, + "accelerated_hourly_cycles": [ + { + "received_monotonic": 26297.607508727, + "advert_epoch": 1793026800, + "no_usb_write_seconds": 22.155895531999704, + "status_after_passive_capture": { + "mode": "manual", + "active": "on", + "battery": "98%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + } + }, + { + "received_monotonic": 26320.097473607, + "advert_epoch": 1793030400, + "no_usb_write_seconds": 22.145149753003352, + "status_after_passive_capture": { + "mode": "manual", + "active": "on", + "battery": "98%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + } + } + ], + "manual_mode_survived_reboot": true, + "final_power": { + "mode": "auto", + "active": "off", + "battery": "97%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + }, + "source_report_sha256": "b1e5ff41da3d6d95fb5556ecb1650620543e0f2fc8a9911d989c946a9ebd8a00" + } + } + ], + "full_body_preservation_followup": { + "passed": true, + "setters_sent": 0, + "reboot_requests": 0, + "rf_send_commands": 0, + "preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 2, + "trusted_signer_list_preserved": true + }, + "core": { + "battery_mv": 3805, + "uptime_secs": 841, + "errors": 0, + "queue_len": 0 + }, + "source_summary_sha256": "22c8d64cae0a324156b67f80b5afe572e2cc5e705d328b3f8fa6992caad0fdcb", + "measurement_finished_utc": "2026-10-28T15:30:38.266158+00:00" + }, + "retained_notes": [ + "Later live-channel core flag2 is CAD_TIMEOUT, distinct from watchdog8. A narrow watchdog-only warm preparer refused2 without reboot; exact-source live receive/queue diagnostics and any explicitly admitted single CAD recovery are separate evidence." + ] + }, + { + "board": "RAK3401 gateway", + "role": "Full Repeater", + "installed_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "artifact_sha256": "13ddc99a9fea2650880303e01ad658e0974129ca145ad0d11d2efceb288de045", + "artifact_kind": "application-only DFU ZIP", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-rak3401-run1", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:45:16.350117+00:00", + "measurement_finished_utc": "2026-10-28T14:45:26.013118+00:00", + "source_summary_sha256": "5180b6ff3f16ea7d7e72c598dac796213efa55978d01749bc97cb657a9b4d452", + "requests_attempted": 0, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "RuntimeError", + "rounds": [], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [], + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": false, + "followup_entrypoint_sha256": "c00607ba128dd428a813a75cdaab6291de485a7b62328d0e6fbbc19777f03c0c", + "source_summary_sha256": "39e059f2748900d3afdccfa0bbfeb85253eb34af737299a828593a67b2bfb69c" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 4203, + "uptime_secs": 4000, + "errors": 8, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-rak3401-run3-warm", + "harness_passed": true, + "measurement_started_utc": "2026-10-28T14:57:31.910266+00:00", + "measurement_finished_utc": "2026-10-28T14:58:13.050136+00:00", + "source_summary_sha256": "ce5da07700f4e8fea412c21ea3de48ba3ca2078330d970bac7285e838f7e15eb", + "requests_attempted": 3, + "exact_responses_completed": 3, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "rak3401": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": null, + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 2.777, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.5, + "response_snr_db": 12.0, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 0.594, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.25, + "response_snr_db": 12.0, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 3, + "passed": true, + "elapsed_seconds": 2.67, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.25, + "response_snr_db": 12.75, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [ + { + "round": 1, + "elapsed_seconds": 6.027, + "observations": [ + { + "queue_len": 0, + "sent": 0 + }, + { + "queue_len": 0, + "sent": 0 + }, + { + "queue_len": 0, + "sent": 0 + }, + { + "queue_len": 0, + "sent": 0 + } + ] + }, + { + "round": 2, + "elapsed_seconds": 6.025, + "observations": [ + { + "queue_len": 0, + "sent": 1 + }, + { + "queue_len": 0, + "sent": 1 + }, + { + "queue_len": 0, + "sent": 1 + }, + { + "queue_len": 0, + "sent": 1 + } + ] + }, + { + "round": 3, + "elapsed_seconds": 6.026, + "observations": [ + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + } + ] + } + ], + "hidden_eligibility_temporarily_enabled": true, + "advert_intervals_restored": true, + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 0, + "original_hidden": true, + "followup_entrypoint_sha256": "4c853ae958964fb70ac74a1fe9df2d7847ac4d1656cc0a9a87565775a1f7138d", + "source_summary_sha256": "f3dda64fa76ef4492f435206ebbee30156581e6355265bbf14551ba04af450a5" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 4235, + "uptime_secs": 13, + "errors": 0, + "queue_len": 1 + }, + "final": { + "battery_mv": 4199, + "uptime_secs": 44, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [ + { + "passed": true, + "scope": "single warm preparation, not RF qualification", + "reboot_requests": 1, + "rf_send_commands": 0, + "clear_stats_commands": 0, + "before_core": { + "battery_mv": 4181, + "uptime_secs": 4721, + "errors": 8, + "queue_len": 0 + }, + "after_core": { + "battery_mv": 4248, + "uptime_secs": 4, + "errors": 0, + "queue_len": 1 + }, + "preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 1, + "trusted_signer_list_preserved": true + }, + "attempt": "collector-owned-rf-emergency-run3", + "source_summary_sha256": "033b417ec59f67972f28f493946477d73942dbda72040ab9e1b39aec7bac8ac3" + } + ], + "emergency_trials": [ + { + "passed": true, + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "expected_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4", + "driver_sha256": "d8da090510a74bb86be129562432b6a3c433247838f42b3ccf57de27c20786dc", + "reviewed_method_sha256": "2c4799cb239f9d092d5cf46c0366408aa95f766f786f56af4b913e07b636418f", + "cpu_condition": "native USB host enumerated; retained idle slices capped100ms", + "limitations": [ + "Manual emergency entry at actual reported battery; automatic5% threshold not exercised", + "USB-held CPU/RF scheduling only; current consumption and detached USB sleep not measured", + "Past RTC boundaries accelerated; no real45-minute duration or MPPT charging claim" + ], + "boot_observations": [ + { + "command": "clkreboot", + "before_uptime_secs": 1200, + "after_uptime_secs": 4, + "uptime_decreased": true, + "core_errors_after": 0 + }, + { + "command": "reboot", + "before_uptime_secs": 120, + "after_uptime_secs": 4, + "uptime_decreased": true, + "core_errors_after": 0 + }, + { + "command": "clkreboot", + "before_uptime_secs": 15, + "after_uptime_secs": 4, + "uptime_decreased": true, + "core_errors_after": 0 + } + ], + "real_minute_lease": true, + "accelerated_hourly_cycles": [ + { + "received_monotonic": 27424.446708501, + "advert_epoch": 1793030400, + "no_usb_write_seconds": 22.147087785997428, + "status_after_passive_capture": { + "mode": "manual", + "active": "on", + "battery": "100%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + } + }, + { + "received_monotonic": 27446.931863828, + "advert_epoch": 1793034000, + "no_usb_write_seconds": 22.137041695001244, + "status_after_passive_capture": { + "mode": "manual", + "active": "on", + "battery": "100%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + } + } + ], + "manual_mode_survived_reboot": true, + "original_settings_and_present_rtc_restored": true, + "final_power": { + "mode": "auto", + "active": "off", + "battery": "100%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + }, + "finished_utc": "2026-10-28T15:20:04.154150+00:00", + "test_scope": "full emergency scheduling", + "one_shot_reboot_delivery_hold_ms": 1500, + "attempt": "emergency-rak3401-70-followup1", + "source_summary_sha256": "53dbd02d5f78dca7e4adb3b8fc4bb306a1098eee872b3caefec625143fa7c71f", + "underlying_submeasurements": { + "passed": true, + "cleanup": "complete", + "real_minute_lease": true, + "accelerated_hourly_cycles": [ + { + "received_monotonic": 27424.446708501, + "advert_epoch": 1793030400, + "no_usb_write_seconds": 22.147087785997428, + "status_after_passive_capture": { + "mode": "manual", + "active": "on", + "battery": "100%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + } + }, + { + "received_monotonic": 27446.931863828, + "advert_epoch": 1793034000, + "no_usb_write_seconds": 22.137041695001244, + "status_after_passive_capture": { + "mode": "manual", + "active": "on", + "battery": "100%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + } + } + ], + "manual_mode_survived_reboot": true, + "final_power": { + "mode": "auto", + "active": "off", + "battery": "100%", + "clock": "rtc", + "window": "awake", + "radio": "awake", + "wake": 0, + "hold": 0 + }, + "source_report_sha256": "3c74aca40e1559caa744a218c86d46e8f5c2f0e9021b2fa6b4ecef9834f50bae" + } + } + ], + "full_body_preservation_followup": { + "passed": true, + "setters_sent": 0, + "reboot_requests": 0, + "rf_send_commands": 0, + "preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 1, + "trusted_signer_list_preserved": true + }, + "core": { + "battery_mv": 4242, + "uptime_secs": 651, + "errors": 0, + "queue_len": 0 + }, + "source_summary_sha256": "22c8d64cae0a324156b67f80b5afe572e2cc5e705d328b3f8fa6992caad0fdcb", + "measurement_finished_utc": "2026-10-28T15:30:38.266158+00:00" + }, + "retained_notes": [ + "Later idle core flag8 is RADIO_WATCHDOG. Any single identity/settings/ACL/signer-preserving warm preparation is separate from RF/emergency qualification. Collector unit/config digests and active serial ownership are restored by an external finally guard." + ] + }, + { + "board": "Heltec V3", + "role": "Full Repeater", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-observer-c9acec47", + "artifact_sha256": "d983f8d27adb4a7d5fa9e9bd4ea6fc39925e7a54f75ae4a90f8dbb5ea68423ee", + "artifact_kind": "active application BIN", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-v3-run1", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:23:29.338249+00:00", + "measurement_finished_utc": "2026-10-28T14:23:39.358170+00:00", + "source_summary_sha256": "16db31fe3e933a1497404db87dfd060e8b1167bc9748a690684e3ea2c94e7f27", + "requests_attempted": 0, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "RuntimeError", + "rounds": [], + "measured_core_stats": { + "initial": { + "battery_mv": 3964, + "uptime_secs": 3236, + "errors": 8, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-v3-run2-hidden", + "harness_passed": true, + "measurement_started_utc": "2026-10-28T15:09:50.983925+00:00", + "measurement_finished_utc": "2026-10-28T15:10:42.070740+00:00", + "source_summary_sha256": "13e9fd71acff3b8a727d8f19edb2083b744a9272169c1f986d00f2b395c1978b", + "requests_attempted": 3, + "exact_responses_completed": 3, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "v3": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": null, + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 2.553, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.25, + "response_snr_db": 11.75, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 0.64, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.25, + "response_snr_db": 11.75, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 3, + "passed": true, + "elapsed_seconds": 1.969, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.75, + "response_snr_db": 11.75, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [ + { + "round": 1, + "elapsed_seconds": 6.117, + "observations": [ + { + "queue_len": 0, + "sent": 1 + }, + { + "queue_len": 0, + "sent": 1 + }, + { + "queue_len": 0, + "sent": 1 + }, + { + "queue_len": 0, + "sent": 1 + } + ] + }, + { + "round": 2, + "elapsed_seconds": 6.118, + "observations": [ + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + } + ] + }, + { + "round": 3, + "elapsed_seconds": 10.178, + "observations": [ + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + } + ] + } + ], + "hidden_eligibility_temporarily_enabled": true, + "advert_intervals_restored": true, + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 0, + "original_hidden": true, + "followup_entrypoint_sha256": "97ffcee3a733e03f4f82d60c627bcd9ba5ae0c9ce76fb4a4ed55f73f600d316a", + "source_summary_sha256": "81562cd3d2ba72717e2eca98fe2afc5ce7d5b4ff28eee591e76f4b30a5e0008b" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 3999, + "uptime_secs": 11, + "errors": 0, + "queue_len": 1 + }, + "final": { + "battery_mv": 4122, + "uptime_secs": 52, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [ + { + "passed": true, + "scope": "single warm preparation, not RF qualification", + "reboot_requests": 1, + "rf_send_commands": 0, + "clear_stats_commands": 0, + "before_core": { + "battery_mv": 4034, + "uptime_secs": 1310, + "errors": 8, + "queue_len": 0 + }, + "after_core": { + "battery_mv": 3999, + "uptime_secs": 5, + "errors": 0, + "queue_len": 1 + }, + "preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 0, + "trusted_signer_list_preserved": true + }, + "source_summary_sha256": "75584a1ebb58b12ac0f935e9b2f3a30c20fc949a80196f9e9881381e660874af" + } + ], + "emergency_trials": [], + "retained_notes": [ + "Initial RF preflight refused pre-existing quiet watchdog flag8 before RF. Separate read-only diagnostic used an unintended host-test transport fallback; guarded recovery and further qualification are reported separately." + ] + }, + { + "board": "LilyGo T-Deck", + "role": "Full Repeater", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "artifact_sha256": "83a73ddd7add2a98fef58b2a7c1335157e7ee4633d959923d78f876ec2f6b9d2", + "artifact_kind": "active application BIN", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-tdeck-run1", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:23:40.166004+00:00", + "measurement_finished_utc": "2026-10-28T14:24:14.978321+00:00", + "source_summary_sha256": "60116b567de022444d3055c5e497980245143a8a768af89e727283e132ef7454", + "requests_attempted": 1, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tdeck": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TimeoutError", + "rounds": [], + "measured_core_stats": { + "initial": { + "battery_mv": 4389, + "uptime_secs": 3277, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 4394, + "uptime_secs": 3302, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-tdeck-run2-paced", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:32:21.686369+00:00", + "measurement_finished_utc": "2026-10-28T14:32:30.988868+00:00", + "source_summary_sha256": "c798dfe40648beb0300ace5eb45619e804bc6347c6ace425a576ac07930b54e0", + "requests_attempted": 0, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TypeError", + "rounds": [], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [], + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": false, + "followup_entrypoint_sha256": "c9af8d8a2abadf9e3dc08f309c9e652f97acb344bf00451b865955e92c53702f", + "source_summary_sha256": "749d4d98c036f5f03fc794a96959bac3c92035f8e383a237510cdd08f2af96ba" + }, + "measured_core_stats": {}, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-tdeck-run3-paced", + "harness_passed": true, + "measurement_started_utc": "2026-10-28T14:34:23.759280+00:00", + "measurement_finished_utc": "2026-10-28T14:35:12.786591+00:00", + "source_summary_sha256": "3d8f27122f5024745784c418ba3c4e33b3915f8105103d4c75387deb09290c0e", + "requests_attempted": 3, + "exact_responses_completed": 3, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tdeck": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": null, + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 1.94, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 9.75, + "response_snr_db": 12.25, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 2.268, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.5, + "response_snr_db": 12.25, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 3, + "passed": true, + "elapsed_seconds": 2.999, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 10.25, + "response_snr_db": 2.0, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [ + { + "round": 1, + "elapsed_seconds": 6.037, + "observations": [ + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + } + ] + }, + { + "round": 2, + "elapsed_seconds": 6.038, + "observations": [ + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + } + ] + }, + { + "round": 3, + "elapsed_seconds": 8.047, + "observations": [ + { + "queue_len": 0, + "sent": 5 + }, + { + "queue_len": 0, + "sent": 6 + }, + { + "queue_len": 0, + "sent": 6 + }, + { + "queue_len": 0, + "sent": 6 + }, + { + "queue_len": 0, + "sent": 6 + } + ] + } + ], + "hidden_eligibility_temporarily_enabled": true, + "advert_intervals_restored": true, + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 0, + "original_hidden": true, + "followup_entrypoint_sha256": "a80312256a8c92749465af6e68c6cf53f41aebc04c3bbee5686157ffea89bdbe", + "source_summary_sha256": "37211d9e8373cea98d2b8f16a39fd1ca64acc328a88966d77c2122718f2db2fa" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 4394, + "uptime_secs": 3921, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 4395, + "uptime_secs": 3960, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [], + "emergency_trials": [], + "retained_notes": [ + "Original saved local and flood advert intervals0 make the node hidden; first received request correctly had no discovery reply. Conditional isolated trial temporarily enabled local advert interval120 and restored0." + ] + }, + { + "board": "SenseCAP Indicator", + "role": "Full Repeater", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47", + "artifact_sha256": "78c494a116f4a233a9d8c72be2a80fbf0bf71506028723cec18b358dac1fd2ab", + "artifact_kind": "active application BIN", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-indicator-run1", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:24:15.772182+00:00", + "measurement_finished_utc": "2026-10-28T14:24:48.664488+00:00", + "source_summary_sha256": "2461fed4601067f31b85ed3af12ad51e5174bd037d80bab1419716e2ae85a77e", + "requests_attempted": 1, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "indicator": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TimeoutError", + "rounds": [], + "measured_core_stats": { + "initial": { + "battery_mv": 0, + "uptime_secs": 1126, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 0, + "uptime_secs": 1149, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-indicator-run2-paced", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T14:32:31.782058+00:00", + "measurement_finished_utc": "2026-10-28T14:32:40.943567+00:00", + "source_summary_sha256": "da598d9ed59044a3f76c64715deeed440b2b9690ba36d60449fc5dfbb905306b", + "requests_attempted": 0, + "exact_responses_completed": 0, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "TypeError", + "rounds": [], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [], + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": false, + "followup_entrypoint_sha256": "c9af8d8a2abadf9e3dc08f309c9e652f97acb344bf00451b865955e92c53702f", + "source_summary_sha256": "749d4d98c036f5f03fc794a96959bac3c92035f8e383a237510cdd08f2af96ba" + }, + "measured_core_stats": {}, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + }, + { + "attempt": "rf-tag-indicator-run3-paced", + "harness_passed": true, + "measurement_started_utc": "2026-10-28T14:35:13.581533+00:00", + "measurement_finished_utc": "2026-10-28T14:35:59.066652+00:00", + "source_summary_sha256": "db660034f4b760d5ea217d74e9c0655b800ddb94915372dd10ec7c12c92eeff3", + "requests_attempted": 3, + "exact_responses_completed": 3, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "indicator": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": null, + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 1.61, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.75, + "response_snr_db": 11.5, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 0.547, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 13.0, + "response_snr_db": 11.75, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 3, + "passed": true, + "elapsed_seconds": 1.625, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.5, + "response_snr_db": 11.5, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "changed_condition": { + "schema": 1, + "changed_condition": true, + "automatic_retries": 0, + "discovery_requests_maximum": 3, + "initial_and_between_requests_stable_tx_observations": [ + { + "round": 1, + "elapsed_seconds": 6.121, + "observations": [ + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + } + ] + }, + { + "round": 2, + "elapsed_seconds": 6.188, + "observations": [ + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + } + ] + }, + { + "round": 3, + "elapsed_seconds": 12.257, + "observations": [ + { + "queue_len": 0, + "sent": 5 + }, + { + "queue_len": 0, + "sent": 5 + }, + { + "queue_len": 0, + "sent": 5 + }, + { + "queue_len": 0, + "sent": 6 + }, + { + "queue_len": 0, + "sent": 6 + }, + { + "queue_len": 0, + "sent": 6 + }, + { + "queue_len": 0, + "sent": 6 + } + ] + } + ], + "hidden_eligibility_temporarily_enabled": true, + "advert_intervals_restored": true, + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 0, + "original_hidden": true, + "followup_entrypoint_sha256": "a80312256a8c92749465af6e68c6cf53f41aebc04c3bbee5686157ffea89bdbe", + "source_summary_sha256": "9e1c79da865a316cdb83b4ed35a1311b67b19d4c0a49500a1c5b2cb2a30677e7" + }, + "measured_core_stats": { + "initial": { + "battery_mv": 0, + "uptime_secs": 1783, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 0, + "uptime_secs": 1819, + "errors": 0, + "queue_len": 0 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [], + "emergency_trials": [], + "retained_notes": [ + "Original saved local and flood advert intervals0 make the node hidden; first received request correctly had no discovery reply. Conditional isolated trial temporarily enabled local advert interval120 and restored0." + ] + }, + { + "board": "Heltec V4.2", + "role": "Full Repeater", + "installed_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-observer-c9acec47", + "artifact_sha256": "ba151fab2c6e6eca6b3025bb2df394fd250372faee0b4c5966291c72ebc3ab29", + "artifact_kind": "active application BIN", + "usb_qualified": true, + "rf_trials": [ + { + "attempt": "rf-tag-v42-run1", + "harness_passed": true, + "measurement_started_utc": "2026-10-28T14:24:49.477630+00:00", + "measurement_finished_utc": "2026-10-28T14:25:19.778985+00:00", + "source_summary_sha256": "cc40df11ced21f45d6956f5a166773cd2e7c9e24aa9638a2b9bc799aeca719fb", + "requests_attempted": 3, + "exact_responses_completed": 3, + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "v42": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": null, + "rounds": [ + { + "round": 1, + "passed": true, + "elapsed_seconds": 1.143, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.5, + "response_snr_db": 11.5, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 2, + "passed": true, + "elapsed_seconds": 1.889, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 11.5, + "response_snr_db": 11.25, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + }, + { + "round": 3, + "passed": true, + "elapsed_seconds": 2.26, + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "radio2_extension_matches_cli_profile": true, + "request_snr_db": 12.25, + "response_snr_db": 11.25, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0 + } + ], + "measured_core_stats": { + "initial": { + "battery_mv": 4174, + "uptime_secs": 3329, + "errors": 0, + "queue_len": 0 + }, + "final": { + "battery_mv": 4174, + "uptime_secs": 3350, + "errors": 0, + "queue_len": 1 + } + }, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-c9acec47" + } + ], + "warm_preparations": [], + "emergency_trials": [], + "retained_notes": [] + }, + { + "board": "RAK 4631", + "role": "repeater", + "installed_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "installed_full_version": "v1.18.0.2-halo-keymind-cascade-dev-70c7d5b4 (Build: 28-Oct-2026)", + "artifact_sha256": "915ced25f967ec302eacd218fdc10ee776eca579e71f61bdb89a3bc705f189e6", + "artifact_kind": "application-only Full DFU ZIP", + "usb_qualified": true, + "usb": { + "persistent_queries_completed": 100, + "reopens_completed": 10, + "warm_reboot_requests": 1, + "uptime_before_warm_reboot": 10, + "uptime_after_warm_reboot": 3, + "source_bound_first_attempt_measurements_reused": true, + "new_queries_or_reboots_substituted": false, + "settings_preservation": { + "saved_getters_checked": 7, + "saved_getters_originally_unavailable": [ + "get password", + "get guest", + "get radio2", + "get radio2.cross", + "get radio.rxps.config", + "get powersaving", + "get usb.logging", + "get usb.logging.always", + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": false, + "acl_entries_preserved": null, + "trusted_signer_list_preserved": true + }, + "password_and_acl_originally_unavailable": true, + "password_or_acl_preserved_claimed": false, + "clock_within_90_seconds": true, + "final_core_stats": { + "battery_mv": 4223, + "uptime_secs": 282, + "errors": 0, + "queue_len": 0 + }, + "usb_completed_commands_measured": 250, + "usb_max_completed_command_seconds": 1.0997, + "final_usb_session_closed": true + }, + "usb_followup_sha256": "2adfff79b8d22ea14c5d1d6d85f07b4ff54a034f2a03d3e4c647d5df096f3e33", + "initial_install_report_sha256": "e67d82c08327298732048ba3d2f276a4056bfb07e3729a1a485d5f89460bfb83", + "application_install": { + "user_test_radio_no_backup_prerequisite_override": true, + "rollback_image_available": false, + "original_application_backup_obtained": false, + "bootloader_written": false, + "softdevice_written": false, + "filesystem_image_written": false, + "partition_table_written": false, + "erase_requested": false, + "automatic_flash_retries": 0, + "fresh_preflash_identity_role_version_hash_verified": true + }, + "rf_trials": [ + { + "attempt": "rf226-tag-rak70-run1", + "harness_passed": false, + "measurement_started_utc": "2026-10-28T17:06:34.969638+00:00", + "measurement_finished_utc": "2026-10-28T17:06:44.640110+00:00", + "source_summary_sha256": "33461cf045e980c118e83d4f91601d1dbcb4c7b63dd990bd9556143e07fc5761", + "requests_attempted": 0, + "exact_responses_completed": 0, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33", + "target_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": "RuntimeError", + "rounds": [], + "condition": { + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": false, + "quiet_admission": [] + } + }, + { + "attempt": "rf226-tag-rak70-after-warm-run1", + "harness_passed": true, + "measurement_started_utc": "2026-10-28T17:12:19.957026+00:00", + "measurement_finished_utc": "2026-10-28T17:13:08.178488+00:00", + "source_summary_sha256": "4cb7b41b64bb61386e920d3dd98ca1ba2d90cf829b967c75ef449d4e33669ff9", + "requests_attempted": 3, + "exact_responses_completed": 3, + "peer_board": "RAK WisMesh Tag", + "peer_source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "peer_expected_version": "v1.18.0.2-halo-keymind-cascade-dev-226ccc33", + "target_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "rf_retries": 0, + "offline_queue_reads": 0, + "channel_setters": 0, + "ota_workspace_acquired": false, + "cleanup": { + "rak": { + "saved_settings_equal": true, + "primary_ram_lease_cleared": true, + "owned_emergency_hold_revoked": false, + "offline_queue_reads": 0 + }, + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "failure_type": null, + "rounds": [ + { + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "response_sha256": "64e60a56288787d17207fe49d2291a6b2c5430f6711dae7401f660b3d1655bd5", + "passed": true, + "round": 1, + "elapsed_seconds": 0.942, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0, + "radio2_extension_matches_cli_profile": true + }, + { + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "response_sha256": "dee63106f130c4be4ac95d445614a51d64c96514b621e84632770ac639e15f62", + "passed": true, + "round": 2, + "elapsed_seconds": 0.536, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0, + "radio2_extension_matches_cli_profile": true + }, + { + "full_target_identity_and_tag_verified": true, + "radio2_profile": { + "flags": 0 + }, + "response_sha256": "42062110641036c998221e5464a38c03aec6c1ef350f95bcf8b302ea838e4cd4", + "passed": true, + "round": 3, + "elapsed_seconds": 1.505, + "hub_packet_delta": { + "received": 1, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 1, + "receive_errors": 0 + }, + "target_packet_delta": { + "recv": 1, + "sent": 1, + "flood_tx": 0, + "direct_tx": 1, + "flood_rx": 0, + "direct_rx": 1, + "recv_errors": 0 + }, + "offline_queue_reads": 0, + "radio2_extension_matches_cli_profile": true + } + ], + "condition": { + "original_local_advert_minutes": 0, + "original_flood_advert_hours": 47, + "original_hidden": false, + "hidden_eligibility_temporarily_enabled": false, + "advert_intervals_restored": true, + "quiet_admission": [ + { + "round": 1, + "observations": [ + { + "queue_len": 0, + "sent": 1 + }, + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + }, + { + "queue_len": 0, + "sent": 2 + } + ] + }, + { + "round": 2, + "observations": [ + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + }, + { + "queue_len": 0, + "sent": 3 + } + ] + }, + { + "round": 3, + "observations": [ + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 4 + }, + { + "queue_len": 0, + "sent": 5 + }, + { + "queue_len": 0, + "sent": 5 + }, + { + "queue_len": 0, + "sent": 5 + }, + { + "queue_len": 0, + "sent": 5 + } + ] + } + ] + } + } + ], + "warm_preparations": [ + { + "schema": 1, + "board": "RAK 4631", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "scope": "single documented warm preparation, not RF qualification", + "passed": true, + "reboot_requests": 1, + "rf_sends": 0, + "clearstats": 0, + "before_core": { + "battery_mv": 4254, + "uptime_secs": 2545, + "errors": 8, + "queue_len": 0 + }, + "after_core": { + "battery_mv": 4280, + "uptime_secs": 4, + "errors": 0, + "queue_len": 1 + }, + "preservation": { + "saved_getters_checked": 15, + "saved_getters_originally_unavailable": [ + "get telemetry.mode.base", + "get telemetry.mode.loc", + "get telemetry.mode.env", + "get max.neighbours", + "get rx.delay", + "get tx.delay" + ], + "acl_comparison_available": true, + "acl_entries_preserved": 1, + "trusted_signer_list_preserved": true + }, + "source_summary_sha256": "f3f0dbb415541f058f76f17604b0f91d6aceccad9533a93c604a2358c634b25d" + } + ], + "emergency_trials": [], + "retained_notes": [ + "Legacy password and ACL were unavailable before the upgrade; preservation is not claimed.", + "First RF admission saw idle flag8 and sent zero RF requests. One documented warm preparation preceded the finite three-request RF pass.", + "Current before/after warm settings and one current ACL entry were preserved; this does not recover the unavailable legacy comparison." + ] + } + ], + "collector_live_flow": { + "schema": 1, + "passed": true, + "rf_send_attempts": 1, + "automatic_retries": 0, + "receiver_usb_opened": false, + "logging_settings_changed": false, + "offline_queue_reads": 0, + "channel_setters": 0, + "frequency_setters": 0, + "broker_external_receipt_proved": false, + "started_utc": "2026-10-28T15:25:58.659076+00:00", + "sink_source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "sender_source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "collector_ownership_and_config_verified": true, + "packet_payload_sha256": "682707a94c76404cdfbed77f803e23df689e623ec8174196942e80623b4caee1", + "sender_packet_delta": { + "received": 0, + "sent": 1, + "sent_flood": 0, + "sent_direct": 1, + "received_flood": 0, + "received_direct": 0, + "receive_errors": 0 + }, + "exact_owned_raw_payload_seen": true, + "following_rx_metadata_seen": true, + "existing_packet_publish_call_succeeded": true, + "raw_to_publish_journal_records": 3, + "journal_evidence_sha256": "be7d5a47a3bfb79922720f6164beaad16d749d607e4b8fcae385a33a2249f7c9", + "collector_still_original_owner": true, + "original_sender_tx_restored": true, + "finished_utc": "2026-10-28T15:26:07.913874+00:00" + }, + "collector_restorations": [ + { + "passed": true, + "started_utc": "2026-10-28T15:15:29.760380+00:00", + "finished_utc": "2026-10-28T15:20:07.186026+00:00", + "collector_originally_active": true, + "collector_config_files_equal": true, + "collector_serial_owned_after_restore": true, + "collector_restored": true, + "results": [ + { + "board_key": "solarxiao33s", + "passed": true, + "exit_code": 0, + "source_summary_sha256": "43b47592c54d7c8be47eba754aaff703aebd56ab19e9d8116b5b067d4037fcc4" + }, + { + "board_key": "rak3401", + "passed": true, + "exit_code": 0, + "source_summary_sha256": "53dbd02d5f78dca7e4adb3b8fc4bb306a1098eee872b3caefec625143fa7c71f" + } + ], + "attempt": "collector-owned-emergency-followup-run1", + "source_summary_sha256": "e5d2ab916675da829f4d77b3857ead47c415bbeefb68a321cf880ef3d9d0cbdb" + }, + { + "passed": false, + "started_utc": "2026-10-28T14:45:07.191818+00:00", + "finished_utc": "2026-10-28T14:45:30.917270+00:00", + "collector_originally_active": true, + "collector_config_files_equal": true, + "collector_serial_owned_after_restore": true, + "collector_restored": true, + "results": [ + { + "phase": "RAK3401RF", + "passed": false, + "rounds_completed": 0, + "requests_attempted": 0, + "exit_code": 1 + }, + { + "phase": "solarxiao33sEmergency", + "passed": false, + "exit_code": 1 + } + ], + "failure_type": "RuntimeError", + "attempt": "collector-owned-rf-emergency-run1", + "source_summary_sha256": "8c1dad31da912d3d187f31873f2da1a724afd3570485a7d8a93168a86b373dab" + }, + { + "passed": false, + "started_utc": "2026-10-28T14:50:48.270065+00:00", + "finished_utc": "2026-10-28T14:50:58.855600+00:00", + "collector_originally_active": true, + "collector_config_files_equal": true, + "collector_serial_owned_after_restore": true, + "collector_restored": true, + "results": [ + { + "phase": "solarxiao33sWarmPreparation", + "passed": false, + "reboot_requests": 0 + } + ], + "failure_type": "RuntimeError", + "attempt": "collector-owned-rf-emergency-run2", + "source_summary_sha256": "30d74e0af1c72f1b230bcfc06159ac22044f917386a31f3d513acce0b51f4c0e" + }, + { + "passed": false, + "started_utc": "2026-10-28T14:57:00.023532+00:00", + "finished_utc": "2026-10-28T15:01:13.035455+00:00", + "collector_originally_active": true, + "collector_config_files_equal": true, + "collector_serial_owned_after_restore": true, + "collector_restored": true, + "results": [ + { + "phase": "solarxiao33sWarmPreparation", + "passed": true, + "reboot_requests": 1 + }, + { + "phase": "rak3401WarmPreparation", + "passed": true, + "reboot_requests": 1 + }, + { + "phase": "RAK3401RF", + "passed": true, + "rounds_completed": 3, + "requests_attempted": 3, + "exit_code": 0 + }, + { + "phase": "solarxiao33sEmergency", + "passed": false, + "exit_code": 1 + } + ], + "failure_type": "RuntimeError", + "attempt": "collector-owned-rf-emergency-run3", + "source_summary_sha256": "ab84816b627a87abd922016898489e8893744b2b7eb3731bab2573824c725f97" + } + ], + "previous_export_sha256": "488e3d5c781bdb2483e778893e74b84c7a570564ba759ef52d7c38d0c0f495cf" + }, + "final_ownership": { + "schema": 1, + "checked_utc": "2026-10-28T17:18:03.976137+00:00", + "hardware_ports_opened": 0, + "intentional_rf_transmissions": 0, + "ble_connections_requested": 0, + "collector_active": true, + "collector_file_digests_checked": 5, + "collector_all_original_digests_equal": true, + "collector_exact_port_owners_in_original_service_cgroup": true, + "collector_owner_processes": 1, + "t1000_usb_authorized": true, + "active_bench_processes": 0, + "all_owned_serial_workers_finished": true + }, + "separate_comparison_followups": { + "v43": { + "schema": 1, + "passed": true, + "method": "offline corrected static radio2 comparison only", + "new_hardware_access": false, + "new_rf_send_commands": 0, + "original_failed_summary_preserved": true, + "original_summary_sha256": "024759290a84c836196453089785c5351866df55894e539840b1f7e46b590b61", + "original_failure_type": "RuntimeError", + "comparison_driver_sha256": "72f6dbb4a8b57de377f0e0a7c56af8c782cea5815025183df068c37d37ac3ff0", + "followup_driver_sha256": "032f6f70241d8035a38adbf741e65d6f97e68a185ab6e25d1c68ff3ef05b7665", + "six_source_identity_nonce_counter_bound_zero_hop_legs_verified": true, + "both_owned_radio_tx_restorations_verified": true, + "comparisons": { + "tag": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "v43": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + } + }, + "evidence": { + "tag": { + "before_sha256": "a9f4e8fb8703d90b2949e9261fa4d418378e988a6a0f0a6e4c9cc88aac9c8c09", + "after_sha256": "a9f4e8fb8703d90b2949e9261fa4d418378e988a6a0f0a6e4c9cc88aac9c8c09" + }, + "v43": { + "before_sha256": "3607af154db1a09c3426321ace1c74ef85ed4529eff0c0879d7855e608d70e22", + "after_sha256": "9f298bf5a5b14c8ba5dff989f96831cb9c81adb77653bd0b3254b0545f6ec071" + } + } + }, + "xiao_nrf": { + "schema": 1, + "passed": true, + "method": "offline corrected battery diagnostic comparison only", + "new_hardware_access": false, + "new_rf_send_commands": 0, + "original_failed_summary_preserved": true, + "original_recovery_flag_value": false, + "original_recovery_record_unchanged": true, + "original_recovery_record_sha256": "86c4fe6d5fa2471071f5d52e54ae5254807c1a23f6ed37f56833734c382d16a8", + "original_summary_sha256": "1de4079e52b283690ad790be0cc4049e63742f00226c916232fed2398165da00", + "original_campaign_driver_sha256": "72f6dbb4a8b57de377f0e0a7c56af8c782cea5815025183df068c37d37ac3ff0", + "comparison_driver_sha256": "c1968736f088a76c740dd20428a4d1ab65e9bb5b39a3f883d199d3fc273547d4", + "followup_driver_sha256": "68ad9d8485c03b141717315d6700daef56a4d86bd8eb3e5548c9248a00c28d11", + "three_source_identity_tag_counter_bound_zero_hop_discovery_rounds_verified": true, + "radio2_extensions_match_current_cli": true, + "saved_settings_and_forwarding_gates_equal": true, + "normal_radio_restore_acknowledged": true, + "temporary_profile_observed_off": true, + "schedule_cancellation_inferred_from_reviewed_normalradio_handler": true, + "explicit_post_cleanup_empty_schedule_getter_observed": false, + "live_battery_measurement_changed": true, + "hub_cleanup": { + "saved_getters_equal": true, + "channel_names_and_keys_equal": true, + "contact_static_records_equal": true, + "contact_live_timestamp_changes": 0, + "binary_preferences_equal": true, + "offline_queue_reads": 0 + }, + "cleanup_transcript_sha256": "5e807f6cee6a9e2ac731615206a6333f6eca37e497230407f3677796f55448d5" + } + }, + "historical_initial_build_audit": { + "schema": 1, + "audit": "independent source/build/public-whitelist check", + "passed": true, + "board_plans": 15, + "packaged_profiles": 20, + "hashed_packages": 40, + "both_manifest_hashes_match": true, + "four_nrf_installed_zip_hashes_match_verified_packages": true, + "public_json_build_section_exact": true, + "public_json_private_path_username_mac_scan_clean": true, + "hardware_accessed": false + }, + "source_report_sha256": { + "verified-builds.safe.json": "af63233ec159510509f33d77bb351245679be6f2c511d5c7b7e585659516c452", + "companion-summary.safe.json": "53e4e11ec8f1166955649359075a4c920cf29d5e275203c531b43bd24b1d7177", + "nrf-infra-summary.safe.json": "0a954bc83a25d186701d8808a8a0cffd0a556933dfe3976bcc06f77f965b300a", + "esp-usb-results.safe.json": "8f86160c40eaf87057e5c1d7ea2866025476318541596c7fb461d0144764327b", + "companion-226-summary.safe.json": "c5d0e0edea12b8b95cbd06aa9e988c096e74865f0a067a56564268a773eb9389", + "ble-handover-builds.safe.json": "23b6d3b1c1216595f05b86af474f89ace57279bf20c134f4d5479ce932450334", + "rak4631-candidate70-followup.safe.json": "2adfff79b8d22ea14c5d1d6d85f07b4ff54a034f2a03d3e4c647d5df096f3e33", + "infrastructure-final-summary.safe.json": "a50e66f8811b2c7a6de7195bbc3aed786ad0a94b6af410b7ce22c848285f4dba", + "extra-5a72a991/build_status.json": "f4fb2af886881808a373fda5d116bb1a5487e2047157dcb8cf5da062d806f5fa", + "rak-ci-final.safe.json": "ec3a7887e4639858821c454046bcd69462efa6af4a2af62c3dcc455abdcc5409", + "campaign-final-ownership.safe.json": "8cb3521a9c0850eb364b961030e7d65a26bd7a7c97e328929b4e35b84821a6de" + }, + "unqualified_boards": [ + { + "board": "Seeed XIAO ESP32-S3 WIO", + "candidate_installed": false, + "historical_role": "observer Repeater", + "historical_source_short": "36d9735e5", + "application_probe_responded": false, + "rom_probe_identity_not_established": true, + "physical_boot_reset_attempted": true, + "physical_boot_held_powerup_attempted": true, + "application_usb_descriptor_returned_after_both_attempts": true, + "mac_bound_ip_not_found": true, + "http_probe_sent": false, + "flash_reads_completed": 0, + "flash_writes_completed": 0 + } + ], + "limitations": [ + "Finite shipping-firmware bench checks; not every firmware feature.", + "Build capacity and read-only OTA readiness do not prove an actual LoRa update installation.", + "No RF range, calibrated TX power, current, battery state-of-charge, MPPT charging, display pixel or cold-power qualification.", + "T1000 USB host deauthorization is not a physical battery-only cable-unplug trial.", + "Earlier failed attempts and harness refusals remain separate from later measurements.", + "Installed source commits differ by board and test axis; historical C9 results do not qualify the corrected226 image.", + "All14 installations pass finite USB checks; this does not imply all BLE/RF axes pass." + ], + "corrected_companion_unique_rf_trials": { + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "pairs": 3, + "legs": 18, + "maximum_elapsed_seconds": 0.524, + "all_passed": true, + "report_sha256": [ + "37857800ab9560015192edb42e8b20033db7aaaeaa604d9fe243e29646a6606b", + "8f2a793f984e5b45d2c1b8b60dd5e811bf215f669f8e3ab16505df60c8217729", + "c6615cf9e548fe9f7ebbc50b2ef7e37c5c57b7b478f860aee94720b88bfd20c9" + ], + "note": "The same pair is referenced by both boards; these counts deduplicate report digests." + }, + "installed_package_provenance": [ + { + "board": "Heltec V4.3 OLED FEM off", + "target": "heltec_v4_3_companion_radio_full_femoff", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "artifact_kind": "application BIN", + "artifact_sha256": "fb320cf886e56b577e07f792a2d505213f0faf63e51305f5fab5ca120010f8d2" + }, + { + "board": "Seeed Tracker T1000-E", + "target": "t1000e_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "65c8d9c7f0927890cf25d54322d499dd7a6b5d4d6ce6e6e2a677f973716db4eb" + }, + { + "board": "RAK WisMesh Tag", + "target": "RAK_WisMesh_Tag_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "c9da30b5d898c61587982c58b19e2f3593246a21a75f16599948dc965a2741db" + }, + { + "board": "Heltec T096", + "target": "Heltec_t096_companion_radio_full_femon", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "3e0ad88ca18a1f85811f0dbfc440466a11735c8c6e9db951265a8815c020d9d4" + }, + { + "board": "MeshPocket", + "target": "Mesh_pocket_companion_radio_full", + "source_commit": "226ccc332d29e78c3dc69cdb70a228baca403711", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "4f85629da02a3826b8548a106fa199262408237c9f44aa78e950f5ab7ff1a994" + }, + { + "board": "Heltec MeshTower V2 SD", + "target": "Heltec_tower_v2_sdcard_repeater_lora_ota_no_external_sensors-full-ota", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "3aabda910a3b582c6c339bdc09612ccc9b1caa9ef5d9275439929a8acd8acfe9" + }, + { + "board": "SolarXiao 33S", + "target": "solarxiao_33S_repeater-full-ota", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "61543eb675c2ed3eb8d55d03cd78b5ce4806817178a020f62d7d209353085f50" + }, + { + "board": "RAK3401", + "target": "RAK_3401_repeater_lora_ota_no_external_sensors-full-ota", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "13ddc99a9fea2650880303e01ad658e0974129ca145ad0d11d2efceb288de045" + }, + { + "board": "Seeed XIAO nRF52840", + "target": "Xiao_nrf52_repeater-full-ota", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "48c81181a776519da471557c3fcb330f4427254c2adebd9752bca2dc3c28bc50" + }, + { + "board": "RAK4631", + "target": "RAK_4631_repeater_lora_ota_no_external_sensors-full-ota", + "source_commit": "70c7d5b478b19f16d232389779ca455e73be7eba", + "artifact_kind": "DFU ZIP", + "artifact_sha256": "915ced25f967ec302eacd218fdc10ee776eca579e71f61bdb89a3bc705f189e6" + }, + { + "board": "Heltec V3", + "target": "Heltec_v3_repeater_observer_mqtt", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "artifact_kind": "application BIN", + "artifact_sha256": "d983f8d27adb4a7d5fa9e9bd4ea6fc39925e7a54f75ae4a90f8dbb5ea68423ee" + }, + { + "board": "LilyGo T-Deck", + "target": "LilyGo_TDeck_repeater", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "artifact_kind": "application BIN", + "artifact_sha256": "83a73ddd7add2a98fef58b2a7c1335157e7ee4633d959923d78f876ec2f6b9d2" + }, + { + "board": "SenseCAP Indicator", + "target": "SenseCapIndicator-LoRa_repeater", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "artifact_kind": "application BIN", + "artifact_sha256": "78c494a116f4a233a9d8c72be2a80fbf0bf71506028723cec18b358dac1fd2ab" + }, + { + "board": "Heltec V4.2", + "target": "heltec_v4_repeater_observer_mqtt", + "source_commit": "c9acec474bb9617d4f92dbdc0401765701989288", + "artifact_kind": "application BIN", + "artifact_sha256": "ba151fab2c6e6eca6b3025bb2df394fd250372faee0b4c5966291c72ebc3ab29" + } + ], + "installed_board_source_kind_hash_tuples_match_verified_full_builds": true +} diff --git a/docs/test-results/index.md b/docs/test-results/index.md index c06696ea8..35e7d1fd1 100644 --- a/docs/test-results/index.md +++ b/docs/test-results/index.md @@ -58,6 +58,7 @@ Completed validation reports, experiments, and test guides are collected here. O ## Companion, USB, BLE, and display +- [Mercerwood 1.18.0.2 candidate checks, 2026-10-28](hardware_validation_mercerwood_1_18_0_2_2026-10-28.md) - [Mercerwood qualification: 12 active radios, 2026-10-20](hardware_validation_mercerwood_1_18_0_1_2026-10-20.md) - [Mercerwood Companion qualification follow-up, 2026-10-19](companion_qualification_followup_2026-10-19.md) - [ESP32 management password hardware check, 2026-10-19](esp32_management_password_2026-10-19.md)