# HPT triple-circular pre-Controller-A software gate

Status: superseded by the 00.05.00 version-boundary rebuild; retain as 00.04.13 prototype evidence
Type: evidence
Updated: 2026-07-22
Next Action: use the 00.05.00 hashes in the active Controller A checklist
Campaign Reason: Historical record from campaign 013-close-hpt-media-2-initial-release-qualification; retained independently after campaign closure and requires no separate owner-queue execution.
Campaign: standalone
Parent: work/wp/active/wp-triple-mirrored-circular-hpt-log-store.md

## Implemented

- New product-owned `HptTripleCircular` media 2.0 core with three logical lanes.
- Geometry-derived 2--32 GB layout, 2,048-sector segments, 1,023 records/segment,
  142,560-slot minimum per lane, and 11,000-segment upper bound per lane.
- Independent lane data/commit writes, bounded three-attempt I/O, two-of-three
  healthy result, one-copy degraded result, explicit total loss, and lane mask.
- Circular segment advance, whole-lane-segment retirement, reserve/replacement
  status, majority read, sequence iterator, redundant superblocks and segment headers.
- Read-only recognition of legacy HPT media 1.0 as an explicit upgrade state.
- Existing two-screen service 468 destructive gate extended to recognized media 1.0;
  unknown/corrupt/generic unsupported/I/O-failing media remains non-formatable.
- Normal queued 64-byte `S_LogRecord` snapshots append through the raw triple store.
- Service state exposes lane mask, retired segments, mismatch/loss, and replace-media status.
- No generated Synergy files were intentionally edited.

## Automated evidence

- `python script/test-hpt-triple-circular-model.py`: PASS for minimum capacity,
  undersized rejection, quorum, lone-copy degradation, total loss, disagreement,
  whole-segment retirement, replacement threshold, and more than three wraps.
- `script/check-hpt-commissioning.ps1`: PASS 33/33.
- `script/check-sd-safety.ps1`: PASS 20/20.
- Python syntax compilation: PASS.
- Isolated e2 studio 2024-01.1/SSP 2.6.1 Debug clean build: PASS.
- Isolated e2 studio 2024-01.1/SSP 2.6.1 Release clean build: PASS.
- `git diff --check`: required at final workspace verification.

## Frozen artifacts

| Artifact | SHA-256 |
| --- | --- |
| Debug SREC | `27D69A81726CD3A396C9BF08BAE833342036A7B6CA4BEBE2BFB83EBBAD457492` |
| Debug ELF | `DD8FF68C89CE31C5B6FFDE10C909D9E511E603BA9C20053DADA04B5D7BDB5295` |
| Release SREC | `572A78A7091C169F6B65A92EBE1CE37B6D76CDCCA1C811F37B0E30507326CB56` |
| Release ELF | `BC87EBF53B000DC8F29F82F642D16E51E6AEF99A4FAF04A3689585D3912F7953` |

The Debug map links `HptTripleCircularFormat`, `Open`, `Append`, and `Read`.
The static `gHptQualification` object is `0x4400` (17,408) bytes. Total linked
`.bss` is `0x6abf4` bytes. The large store and retired-segment bitmap are static,
not allocated on the 4,096-byte SD-thread stack. Runtime stack high-water remains
a Controller A evidence requirement.

## Qualification boundary

No controller was programmed and no SD card was read or written during this
increment. The executable Python model is a requirements oracle; it does not
replace execution of the compiled ARM core. Controller A must prove media 1.0
read-only classification before any separately authorized destructive upgrade.
This evidence does not qualify power interruption, repeated physical wrap,
Controller B, retail card families, endurance, or release behavior.
