# Backups Validation - Progress and Firmware Fingerprint

Date: 2026-07-14

Status: approved

## Scope

This validation closes the Backups Stage 1 UX revision and the Backups Stage 2 package/fingerprint base that were implemented before Restore or Import. It covers read-only operations only.

Not included:

- Restore backup package
- Import firmware from connected ESP32
- OTA
- Provisioning
- Fleet Management
- Edge OS

## Device

- Chip: ESP32-D0WD revision 1
- MAC: `2c:bc:bb:75:f2:74`
- Flash ID: `16405e`
- Flash size: 4 MB / `4,194,304` bytes
- Connection: Web Serial over HTTPS
- Baudrate: `115200`

## Complete Flash Read

Result: passed.

- Operation: local complete device backup download
- Size: `4,194,304` bytes
- SHA-256: `a9ea663ba7afc32f90e73bf25d4e535aeeb182e9285ec5e7c974e4cc67d58600`
- UI global progress: monotonic from start to completion
- UI partial progress: reset by block with block labels
- Final state: `Completed`

The SHA-256 differs from the existing server backup SHA-256 `ca965603a5c02668e63721b34c05fba0dc2494e3050edcb36b1c621bcafe785a`. This is expected when mutable NVS/device state changes between captures. The firmware fingerprint exists to compare reusable firmware regions independently from device-specific state.

## Partition Read

Result: passed.

- Partition: `app0`
- Offset: `0x10000`
- Size: `1,310,720` bytes / `0x140000`
- SHA-256: `d79d4b3db73b490429122d64e076dedecf3c3a198497374ce3a8fa4b575fd948`
- Matches persisted backup region SHA-256: yes

## Firmware Fingerprint

Result: passed.

Current persisted backup values:

- Device Backup SHA-256: `ca965603a5c02668e63721b34c05fba0dc2494e3050edcb36b1c621bcafe785a`
- Firmware Fingerprint SHA-256: `4ee0ccd14c1d85ed814cfe8067e6834bec7081a1bf5005768a087cd2e8e6283f`
- Firmware Fingerprint size: `4,096,000` bytes
- Repository matches: `1`

Included in the firmware fingerprint:

- bootloader
- partition table
- app partitions
- reusable filesystem partitions

Excluded by default:

- NVS
- OTA data
- coredump
- device-state regions
- diagnostic regions
- sensitive regions

## Metadata JSON

Result: passed.

Local single-file capture metadata now exposes top-level:

- `sha256`
- `sizeBytes`

The existing `files[]` array remains present for detailed file-level metadata.

## Device Integrity

Result: passed.

Manual physical validation confirmed:

- ESP32 resets correctly.
- Firmware boots normally.
- Complete flash read did not modify flash contents.
- Partition read/download did not modify flash contents.

## Decision

Backups Stage 1 read-only operations and Backups Stage 2 package/fingerprint base remain approved. The project may proceed to planning Compare with repository and Import firmware from connected ESP32. Restore backup package is still explicitly out of scope.
