# Checklist: Controller A B profile A-2 next-day comparison

Identity note (2026-07-29): historical label `A-CTRL-2` is permanent specimen
`USB04_32G`; serial `071C49DE246A1F97`.

Status: complete
Type: checklist
Updated: 2026-08-01
Next Action: none; retain as completed Controller A parity evidence
Parent: work/wp/completed/wp-diagnose-and-mitigate-controller-a-usb-false-success-durability.md

## Goal

Test the freshly formatted A-2 USB stick on Controller A while A runs the exact
firmware image previously qualified on Controller B. Preserve an exact rollback
image and use physical Pi inspection as the durability authority.

## Prepared State

- Controller A was programmed and verified on J-Link `69664082` with
  `Debug/7520553_SMI_FW_00_05_00.srec`, SHA-256
  `486B048B65BCE801CA26DD6B4448F11B92F6B4C815DAFE082E48CBD4F170CCF9`.
- Post-deploy target capture passed with Controller A SD CID
  `035344535330384780976F0084018559`, no system errors, and all three HPT lanes
  active. Raw evidence is under the ignored generated-evidence directory
  `work/evidence/hpt-log-store-circular-mirror/controller-a/a-to-b-profile-swap-20260727/post-deploy/`.
- A-2 is safely unmounted on `srv-rpi00.local`: `/dev/sda`, USB serial
  `071C49DE246A1F97`, FAT32 label `A-CTRL-2`, UUID `772A-D191`.
- A-2 passed full `fsck.vfat -n -v` and contains only the restored W00/W01 WAV
  files. Do not reformat it before this comparison.
- The old B image does not contain `gUsbDurabilityMetrics`; therefore the newer
  USB capture script cannot collect that metric. This is expected profile
  compatibility, not a target failure. Use controller outcomes plus the
  post-removal Pi directory/hash/fsck inspection as the decisive evidence.

## Checklist

- [x] Format A-2 FAT32, restore W00/W01, sync, unmount, and pass full FAT check.
- [x] Save the pre-swap Controller A conservative S-record and complete internal
  flash capture for rollback.
- [x] Program and verify Controller A with the exact Controller B image.
- [x] Capture Controller A SD identity and healthy post-deploy HPT state.
- [x] Move A-2 from the Pi to Controller A; do not disturb the controller SD card.
- [x] Confirm A-2 mounts and the controller can read/load both WAV files.
- [x] Run one PID export and record the exact on-screen terminal outcome.
- [x] Run one HPT CSV export over a fixed retained range within
  `301739760..301940520`; record filename, entered/effective range, row count,
  and exact on-screen terminal outcome.
- [x] Allow the controller operation to finish, then move A-2 to the Pi.
- [x] On the Pi, verify the expected WAV, PID, and CSV files; hash them; inspect
  the CSV completion marker/range; sync and safely unmount.
- [x] Run a full read-only FAT check and record whether any orphan, allocation,
  directory, or dirty-bit defect exists.
- [x] Compare this result with the prior A-2/Controller-B pass and the prior
  A-2/Controller-A conservative-profile result. Classify the fault boundary as
  controller hardware, firmware profile, or unresolved interaction.
- [x] If the B profile fails or leaves Controller A unsuitable, restore the exact
  conservative rollback S-record below; do not rebuild it.
  Not required: the exact B profile passed on Controller A.

## Runtime Closeout

- [x] Controller A boots and responds through J-Link after the profile swap.
- [x] Controller A reports the expected SD CID and healthy current HPT state.
- [x] The former Controller A profile is retained as an exact rollback artifact.
- [x] Final firmware disposition for Controller A is recorded after comparison:
  retain the exact B comparison profile until the owner requests rollback or
  deployment of a successor candidate.
- [x] A-2 is safely unmounted on `srv-rpi00.local` at closeout.

## 2026-07-28 Result

- Exact B-profile S-record:
  `486B048B65BCE801CA26DD6B4448F11B92F6B4C815DAFE082E48CBD4F170CCF9`.
- Controller A mounted A-2 and enumerated exactly `W00.wav` and `W01.wav`.
- WAV load reached `1000` (100%) with `system_errors = 0`.
- PID output: `MainPid 2026-07-28 05-37.txt`, 225 bytes, SHA-256
  `6BCB89F2EFACC503B950EF00151A51AF8353C40B53781110C14DDC441737FC3A`.
- HPT output: `A2_A_BPROFILE.csv`, 165,645 bytes, SHA-256
  `16B7A576DC8C0F4BC31FE6AC07BD93C8BA3B3D1302393F143A069B5EFB8CE6CF`.
- HPT terminal state: complete and published, 3,283 selected/healthy records,
  zero degraded records, zero snapshot or requested-range gaps, USB status 0.
- CSV tail independently contains
  `Export completion: COMPLETE; records published: 3283`.
- Both WAV hashes remained equal to their prepared-source hashes.
- Full unmounted `fsck.vfat -n -v` passed: 5 files, 37/1,893,477 clusters,
  with no FAT, allocation, directory, orphan, or dirty-bit finding.
- Classification: the original false-success incident is not a deterministic
  Controller A hardware fault or a deterministic B-profile transport fault.
  The same controller, exact B image, and A-2 stick pass after clean formatting.
  The remaining supported boundary is the stick's prior filesystem/device-session
  state; the exact low-level transient inside the stick is not independently
  recoverable after reformatting.

## Rollback

Exact rollback S-record:

`work/evidence/hpt-log-store-circular-mirror/controller-a/a-to-b-profile-swap-20260727/rollback-current-a/controller-a-conservative-F09B9156.srec`

SHA-256:

`F09B9156C10E100BA38652FF1204110F1E6B7477D4018AECA11691A7D8D6BDEC`

Complete pre-swap internal-flash capture:

`work/evidence/hpt-log-store-circular-mirror/controller-a/a-to-b-profile-swap-20260727/rollback-current-a/internal-flash.bin`

Size: `4194304` bytes. SHA-256:

`5A2F2E6D9CF0B87C61CC8A7428756B01B2B1DC519CBBD46C0372CBDAC124D872`

Rollback command (requires the deliberate confirmation token shown):

```powershell
.\script\program-bench.ps1 -Bench setup-a `
  -ArtifactPath '.\work\evidence\hpt-log-store-circular-mirror\controller-a\a-to-b-profile-swap-20260727\rollback-current-a\controller-a-conservative-F09B9156.srec' `
  -ExpectedSha256 'F09B9156C10E100BA38652FF1204110F1E6B7477D4018AECA11691A7D8D6BDEC' `
  -Confirm 'PROGRAM-69664082'
```

## Verification

Completion requires both the controller terminal outcomes and independent Pi
inspection after physical removal. A controller `Success` screen alone is not
proof that the files survived USB removal.
