# Checklist: Controller A HPT customer export qualification

Status: complete
Type: checklist
Updated: 2026-07-23
Next Action: none; retain with the Controller A customer-export evidence
Parent: work/wp/active/wp-triple-mirrored-circular-hpt-log-store.md

## Goal

Prove on Controller A that a normal customer-selected HPT time range is staged
only after complete raw traversal and published as a complete CSV through the
existing UI without interrupting minute logging or exposing a partial file.

## Frozen Candidate

- Controller A assembly `1751136`
- J-Link `69664082`
- Card `HPTCS0`
- Debug SREC SHA-256:
  `532D7A2A9F147525D87028F680983EDD5BCCB40510E0C6E380E09102682E3353`

Any source or artifact change invalidates this candidate and returns to the
software/build gate.

The prior candidate
`B46C2367A5EE2220EAF3F3FD2B325F82ACD6931D84FFD23ECBCBCDD00C4F7FE7`
completed USB publication but exposed the unsupported 64-bit formatting defect
recorded below. It is not the current qualification candidate.

## Completed Software and Target Staging Gate

- [x] New export status reports requested/actual range, sequence range, gaps,
  healthy/degraded records, completion, and publication.
- [x] Raw traversal snapshots media generation and exclusive end sequence.
- [x] Only clean iterator end hands the SDRAM buffer to USB.
- [x] Relevant gap, malformed payload, ambiguous copies, reclaim, capacity, and
  iterator errors fail without USB handoff.
- [x] USB output uses `HPTE.TMP` and renames only after close, flush, staged
  count verification, and an explicit completion trailer.
- [x] Export model and 16/16 export source invariants pass.
- [x] Existing 55/55 HPT commissioning and 20/20 SD safety invariants pass.
- [x] Isolated clean Debug and Release builds/package checks pass.
- [x] Controller A programming/verification reports `O.K.`.
- [x] With no USB mounted, Controller A stages generation 3, sequences 1–43:
  43 scanned, 38 selected, zero gaps, 38 healthy, zero degraded.
- [x] Normal reset clears the diagnostic staging state and reopens `HPTCS0`
  ready with HPT/SSP status zero and retirements `2/1/0`.
- [x] Correct unsupported `%llu` metadata serialization using bounded decimal
  strings and add a source invariant that rejects the unsupported sequence
  format.
- [x] Corrective export/model/HPT/SD checks pass `17/17`, pass, `55/55`, and
  `20/20`.
- [x] Corrective isolated Debug and Release clean builds/package checks pass.
- [x] Corrective Debug candidate programs/verifies `O.K.` on Controller A.
- [x] Corrective post-program status is `HPT_READY`, export idle, HPT/SSP
  status zero, first-error sector zero, and retirements `2/1/0`.

## First USB Publication Finding

The owner completed the visible progress flow and received the normal success
message on the prior candidate. Target status independently reported
`PUBLISHED`, complete/published `1/1`, 58 scanned, 11 selected, 11 healthy,
zero degraded, zero gaps, actual sequences 48 through 58, and no HPT/SSP/USB
error.

Host inspection found final file
`SMI6_07162026_20260723t1010-20260723t1021.csv`, 1,183 bytes, SHA-256
`FB304C0ECEBF27F58541C2AF386FBD29773826422BE85540F55B0E425E269965`.
`HPTE.TMP` was absent, all 11 data rows were ordered, and the completion trailer
reported 11 published records. The file is not accepted because the deployed
small printf library emitted literal `lu` for `%llu`, shifted later variadic
arguments into the wrong metadata fields, and therefore corrupted lines 9
through 12. The corrective candidate must repeat the complete publication gate.

## Owner-Assisted USB Publication Gate

- [x] Confirm Controller A is in normal non-heating operation.
- [x] Insert a blank expendable FAT32 USB stick.
- [x] From the normal data-log export screen, choose a short range containing
  known recent records and retain the generated `.csv` filename.
- [x] Confirm the progress screen remains visible, advances through SD staging
  and USB publication, and ends with the normal success message.
- [x] Do not remove USB or interrupt controller power until success or an
  explicit error is displayed.
- [x] Codex captures `S_HptExportStatus` and verifies `PUBLISHED`, complete=1,
  requested-range gaps=0, selected count equals published count, and no HPT/SSP
  error.
- [x] Inspect the USB stick: final CSV exists, `HPTE.TMP` does not, metadata
  reports requested/actual ranges and health, the data rows are sequence-ordered,
  and the final `Export completion: COMPLETE` count matches the staged count.
- [x] Confirm minute logging sequence advanced during or immediately after the
  export and chamber control/UI stayed responsive.
- [x] Preserve the CSV hash and target capture under
  `work/evidence/hpt-log-store-circular-mirror/controller-a/`.

Corrective target publication is captured and passed: state `PUBLISHED`,
complete/published `1/1`, 90 scanned, 10 selected, 10 healthy, zero degraded,
zero gaps, actual sequences 81 through 90, and HPT/SSP/USB status zero. Logging
advanced through sequence 91.

Corrective host inspection then passed. File
`SMI6_07162026_20260723t1041-20260723t1051.csv` is 1,132 bytes with SHA-256
`BFA8D68FA555C3562BB2B90F9AE44C5FA2880C4FCA21661EE3EEA9E8260D1BF9`.
Its requested/actual timestamps, snapshot/actual sequences, health, and gap
counts match the target capture exactly. Ten rows are ordered at 60-second
intervals, the completion trailer reports ten records, and `HPTE.TMP` is
absent. Stable 20.0–20.1 C readings and no event columns, together with
continued sequence advancement and successful UI completion, satisfy the
normal non-heating/control-responsiveness condition.

## Runtime Closeout

- [x] Remove the USB stick through the normal service procedure after all file
  inspection/capture is complete.
- [x] Controller A remains on the frozen candidate with `HPTCS0` installed,
  export idle, and no pending USB handoff.
- [x] Update the parent workpackage without claiming wrap, interruption,
  Controller B, or multi-card qualification.

## Verification

- `script/check-hpt-customer-export.ps1`
- `script/test-hpt-customer-export-model.py`
- `script/check-hpt-commissioning.ps1`
- `script/check-sd-safety.ps1`
- Controller RAM capture using
  `script/jlink-read-controller-a-hpt-export.jlink`
- Customer CSV contents and SHA-256
