Commit Graph
5747 Commits
Author SHA1 Message Date
mikecarper 55354c7fbe Keep sub-second RS232 standby interrupt-idle eligible 2026-10-17 11:03:43 -07:00
mikecarper 5bdc6de0ed Sleep ST7735 controllers before releasing display power 2026-10-17 11:02:29 -07:00
mikecarper 21f8b3384f Enable T096 DC/DC initialization before battery checks 2026-10-17 11:01:01 -07:00
mikecarper dd7a10f9aa Sleep between noise-floor samples and reduce idle refreshes 2026-10-17 10:18:14 -07:00
mikecarper 50428f0fb7 Enable contact caching for high-capacity nRF52 companions 2026-10-17 10:14:17 -07:00
mikecarper 8a5f735bba Reuse active Sensor tracker wake deadlines 2026-10-17 02:25:37 -07:00
mikecarper 629557fcfe Fix nRF52 idle sleep event and CryptoCell handling 2026-10-17 02:22:26 -07:00
mikecarper 756d887bad Add on-demand power-saving diagnostics 2026-10-17 01:15:54 -07:00
mikecarper 04c3d1118d Preserve current Room downloads during QSPI rollout 2026-10-16 23:46:21 -07:00
mikecarper ce53567a4c Consolidate onboard QSPI infrastructure build profiles 2026-10-16 23:42:10 -07:00
mikecarper d5d84d325b Retire internal-only SolarXiao Room release variants 2026-10-16 23:24:36 -07:00
mikecarper a16229a3eb Bound GPS UTC fields and accept variable time precision 2026-10-16 20:35:11 -07:00
mikecarper 135d361368 Require fresh complete GPS observations before clock synchronization 2026-10-16 19:48:34 -07:00
mikecarper 31a53b1f4a Preserve stalled USB recovery after a cancelled watchdog reboot
Restart the retry interval without treating queue cleanup as completed USB transmission. Cover cancellation journals, fresh recovery deadlines, real progress and rollover, with historical policy and runtime negative controls.
2026-10-16 19:25:15 -07:00
mikecarper 0dcba50d88 Reject unsupported RXPS before changing suspended scan policy
Keep rejected power-saving requests from changing radio2's saved RX policy or timings. Exercise actual CLI, scan restoration and calibration sleep guards with semantic negative controls.
2026-10-16 19:17:22 -07:00
mikecarper 4348fdcc56 Keep UI startup and rescue windows closed after observed expiry 2026-10-16 19:00:45 -07:00
mikecarper b7c2636aa9 Retry nonblocking Ethernet operations in runtime regression fixture 2026-10-16 18:44:16 -07:00
mikecarper 705aa40518 Align USB sleep wake harness with sensor elapsed refresh anchors 2026-10-16 18:42:00 -07:00
mikecarper 8e13fccdd1 Retire expired tracker awake leases before foreground deferrals 2026-10-16 18:37:24 -07:00
mikecarper eda70c832b Format infrastructure startup version labels without allocating 2026-10-16 18:27:08 -07:00
mikecarper 57ca55f98f Keep expired beacon RF-start guards retired across uptime rollover 2026-10-16 18:09:12 -07:00
mikecarper a24f9d5ef8 Keep sensor UI polling and refresh working across uptime rollover 2026-10-16 17:56:45 -07:00
mikecarper 01d9b7c376 Keep legacy UI version regression aligned with refresh initialization 2026-10-16 17:54:29 -07:00
mikecarper 6dfecb8879 Reuse outbound block storage for host-compressed OTA data 2026-10-16 17:33:13 -07:00
mikecarper 9684e410e3 Keep RGB Companion status timing working across rollover 2026-10-16 17:21:44 -07:00
mikecarper ec2bf83882 Keep Companion backlight button polling working across rollover 2026-10-16 17:04:33 -07:00
mikecarper b483a917f6 Keep monochrome Companion LED timing working across rollover 2026-10-16 16:54:08 -07:00
mikecarper eec1caa170 Keep Companion sensor polling running across timer rollover 2026-10-16 16:43:54 -07:00
mikecarper 4c3a5691e1 Keep Companion UI deadlines working across rollover and long idle 2026-10-16 16:28:58 -07:00
mikecarper d01b63f0c3 Keep RTTTL tones and queued speech running across timer rollover 2026-10-16 16:08:33 -07:00
mikecarper 9b4d3350df Drive every RGB LED channel for Companion notifications 2026-10-16 15:50:38 -07:00
mikecarper 866f9d682f Preserve armed OTA handoffs when debug resume is requested 2026-10-16 15:43:32 -07:00
mikecarper 4865162fb4 Reserve configured NOR pins from user GPIO control 2026-10-16 15:09:46 -07:00
mikecarper 9e4891989f Preserve armed OTA handoffs by rejecting apply reentry 2026-10-16 15:00:23 -07:00
mikecarper de0e18e8cc Report unverified USB watchdog saves without promising rollback 2026-10-16 13:57:14 -07:00
mikecarper 5fc0943f59 Report uncertain preference saves without promising rollback 2026-10-16 13:45:48 -07:00
mikecarper f6c00be3e0 Bound region name exports for small destinations 2026-10-16 12:54:36 -07:00
mikecarper df0e7c3f89 Preserve durable region policy on failed replacement saves 2026-10-16 11:56:00 -07:00
mikecarper 4b81a9d5e0 Persist unchanged Companion channel route SETs before OK
Require a real raw-table save for same-value channel SETs. This repairs the false acknowledgement after successful constructor recovery of an older backup followed by a failed candidate write.

Keep resolved alias keys, raw AUTO policy and runtime generation untouched. Preserve GET and unchanged contact behavior, changed-policy validation and indeterminate-publication quarantine.

Cover real stale-backup creation, failure/retry, reboot and exact old-skip controls. Add actual alias/BaseChatMesh and raw app-key regression tests on all four backends. Verified 117 related host tests, 16 final caller rechecks, four firmware qualifications and linked nRF52 crypto checks.
2026-10-16 11:34:51 -07:00
mikecarper 24b1264a0e Fence Companion channel writes after uncertain publication
Latch only channel storage on Indeterminate writer outcomes, including failed transaction setup. Preserve ordinary failure retries, confirmed rollback, contacts and the live accepted channel keys.

Exercise actual CLI and binary callers with all four storage backends, reboot behavior and exact missing-latch negative controls. Share TX storage failure diagnostics to retain the strict Wio-E5 Mini flash gate.

Verified 103 related host tests, four platform firmware qualifications and linked nRF52 crypto/stack checks. A separate stale-backup constructor/no-op acknowledgement case remains under audit.
2026-10-16 11:22:36 -07:00
mikecarper 508dd23673 Keep channel faults from disabling healthy Companion contacts 2026-10-16 10:59:11 -07:00
mikecarper 22c31c0246 Confirm beacon file moves before acknowledging publication 2026-10-16 10:32:27 -07:00
mikecarper e69c89e8d3 Fail closed after uncertain shared data route publication 2026-10-16 10:27:05 -07:00
mikecarper c6b576c7ec Include observed move recovery in the boot inventory fixture
Extract the production transaction move state and helper used by recovery. Check inventory invalidation, late rename errors, no-op success and unknown post-move metadata without replacing recovery policy.

Keep exact former rename-result behavior as a negative control for both misleading return directions.
2026-10-16 09:32:30 -07:00
mikecarper 9d98c7cdf5 Model owner-bound STM32 files in identity recovery tests
Provide InternalFS for the actual FileRead helper and forbid default File construction in the STM32 fixture. Verify empty and missing handles retain the requested owner and null owners use the safe fallback without I/O.

Retain existing identity transaction and migration authority checks.
2026-10-16 09:22:10 -07:00
mikecarper 3e51c26f74 Exercise recovery-aware Companion reboot guards in tests
Extract the production contact flush, retry and UI shutdown helpers instead of leaving stale fixture-only methods. Keep rollover negative controls and cover volatile contacts, accepted dirty work, authoritative repair and rebuild failures.
2026-10-16 09:16:25 -07:00
mikecarper e5706bafa1 Restart contact streams after storage recovery
Release cached path snapshots before resetting contacts while retaining the requesting transport and table revision for a complete stream restart. Keep explicit session cancellation unchanged and avoid copying uncached contact buffers.

Cover cached and uncached recovery, transport isolation, empty reloads, backpressure, and the former cancellation as a negative control.
2026-10-16 09:11:19 -07:00
mikecarper 587700a36a Preserve accepted contacts after transient path read errors
Recheck cached immutable paths before resetting the live table after raw I/O failure. Keep accepted RAM mutations, current jobs and save deadlines when reads recover; stronger source or publication uncertainty still forces full recovery. Use the existing recovery byte and a fixed scratch buffer, with no cache allocation or eviction.

Cover full-cache transient recovery, persistent I/O and checksum failures, nRF unread-scope restoration, active ESP jobs, real uncertain publication and unchanged lazy deadlines with sanitizer tests and restored-reset negative controls.
2026-10-16 08:54:12 -07:00
mikecarper a3e9bec997 Model contact recovery in the radio sleep fixture
Compile the actual contact recovery flag and accessor in the sleep harness used by CI. Check that pending repair wakes the loop while a retained source flag alone does not. Retain all six temporary-radio, terminal and nRF52 lease variants and their original sleep assertions.
2026-10-16 08:52:44 -07:00
mikecarper b393737593 Preserve contacts when source discovery is unknown
Do not classify legacy or page-name stat errors as unread payloads. Keep candidate contact files unchanged, retry source selection, and use bounded volatile operation if authority remains unknown. Cover legacy absence, downgrade leftovers, cleanup-time metadata recovery and persistent faults with actual-source sanitizer tests and restored-bug negative controls.
2026-10-16 08:38:26 -07:00