# USB VBUS adapter regeneration-safety closeout — 2026-08-17

Status: complete
Result: PASS; one e2 Studio regeneration completed, all out-of-scope generated churn was rejected, canonical Debug/Release rebuilds and all repository invariant suites passed
Type: evidence
Updated: 2026-08-17
Next Action: none; retain this as the completion evidence for campaign 008 and the diagnostic-only VBUS adapter workpackage
Campaign: 008-prove-usb-vbus-adapter-regeneration-safety
Parent: work/wp/completed/wp-migrate-usb-vbus-control-out-of-ssp.md
Canonical Truth: docs/firmware-update-validation-and-recovery.md

## Scope and authority

The owner selected queue campaign
`008-prove-usb-vbus-adapter-regeneration-safety` and authorized exactly one
clean e2 regeneration plus canonical Debug and Release builds. No controller,
USB-drive, deployment, programming, or production-lifecycle action was
performed.

The clean pre-regeneration checkpoint was commit `1c137bc3`. The e2 Studio
2024-01.1 / SSP 2.6.1 Synergy Configuration editor opened
`configuration.xml`, and `Generate Project Content` was invoked exactly once.

## Regeneration result and rejected churn

The user-owned adapter and configuration input survived the generation with
their recorded SHA-256 identities unchanged:

| File | SHA-256 |
| --- | --- |
| `src/UsbVbusControl.c` | `68756C7DBC41CA4E206D67BB15693522CFA277F2342A3B9D6BEA39A8DA0CBB3A` |
| `src/UsbVbusControl.h` | `1D4EF766A22E411E0C354FBBD2C397D2168A188A23791FCEA47B80F54969B416` |
| `configuration.xml` | `3569F93B94729DDC85614EA35482715807DB97385AF642B9BCFE49AEA3DDF373` |

e2 also rewrote or reverted the following out-of-scope managed/vendor paths.
None of this churn was admitted; every path was restored from the clean
checkpoint before validation or building:

- `.cproject`;
- `src/synergy_gen/common_data.c`;
- `synergy/ssp/inc/driver/instances/r_sdmmc.h`;
- `synergy/ssp/inc/framework/el/ux_hcd_synergy.h`;
- `synergy/ssp/inc/framework/el/ux_host_class_storage.h`;
- `synergy/ssp/src/driver/r_sdmmc/r_sdmmc.c`;
- the four modified files under
  `synergy/ssp/src/framework/el/ux_host_class_storage/ux_host_class_storage_src/`;
- both `ux_hcd_synergy_power_*_port.c` stubs; and
- `synergy/ssp/src/framework/sf_el_ux/ux_hcd_synergy_transfer_abort.c`.

After rejection, `git status --short --untracked-files=no` reported only the
Tool Shed campaign lifecycle files. The focused USB workflow invariant suite
passed before either build.

## Vendor-stub baseline adjudication

The raw power-stub hashes printed in
`work/evidence/after-measurement-matrix-ship-readiness-gate-audit-20260809.md`
could not be reproduced from the repository, e2 output, Eclipse local history,
or the available workspace copies. They are not used as a replacement source
baseline.

Direct Git history is authoritative for the vendor files: `git log --follow`
and `git blame` show no change after the SSP 2.6.1 update commit `f8dad720`.
The restored working files match the current Git blobs byte-for-byte, remain
the unsupported SSP implementations, and have these SHA-256 identities:

| File | Git-blob SHA-256 |
| --- | --- |
| `synergy/ssp/src/framework/sf_el_ux/ux_hcd_synergy_power_on_port.c` | `9528B9609389D128D7BAA5B8B0EFF91480115D33AA6E87AA922DC0B4B0787069` |
| `synergy/ssp/src/framework/sf_el_ux/ux_hcd_synergy_power_down_port.c` | `7232E438D51E3EA416971E61A2F0FDA51C91E5A55ADCC1E91D4FAD684F65692B` |

This corrects the closeout comparison without rewriting the historical Aug. 9
artifact. The source check also proved that normal production publication does
not call the diagnostic VBUS adapter.

## Canonical build evidence

Both configurations were rebuilt with the repository's managed-make wrapper,
`script/vscode-e2-build.ps1 -Action Rebuild -Jobs 8`.

| Configuration | Artifact | Bytes | SHA-256 |
| --- | --- | ---: | --- |
| Debug | `7520553_SMI_FW.elf` | 14,761,352 | `4F63145EA2B3A09771DBCB7C3EA382AE93192650DB50D19E3549AA3B921F6FA5` |
| Debug | `7520553_SMI_FW.map` | 36,703,269 | `EF1567446F7B6EB8C035EAB6D59C34899609F8BD207594F33953F04004DDB890` |
| Debug | `7520553_SMI_FW.srec` | 8,678,266 | `C67836EBDC371AC70EF465B55C96516689A1EE9C9E84B4C5CD27E6E4DAAE65E9` |
| Release | `7520553_SMI_FW.elf` | 11,425,656 | `2EAC26DF49EE082760C2CEF3FC4BBBAE8740ADBB196AD67D75AED5AF9EB2056D` |
| Release | `7520553_SMI_FW.map` | 5,458,340 | `28808DD567FA14ABD85BC9E679EDC81B8D848EB93D5872CCE5465C14D1592F58` |
| Release | `7520553_SMI_FW.srec` | 8,678,266 | `D1FBFC257043DFFB04DA9B883F26992DF4D8EE1525089BE63485E43A0519E761` |

The Release S-record identity matches the already recorded candidate used by
the later qualification queue; this campaign did not deploy it.

## Validation and disposition

- `script/check-usb-mass-storage-workflows.ps1`: PASS before builds.
- All 27 repository `script/check-*.ps1` suites: PASS after both builds.
- Canonical Debug rebuild: PASS.
- Canonical Release rebuild: PASS.
- Protected source and vendor SSP content after builds: clean against Git.
- Target or removable-media actions: none.

The user-owned adapter is regeneration-safe as a diagnostic-only source
surface. Production retains the minimal FileX/USB Mass Storage Class
publication lifecycle; regeneration did not authorize or introduce VBUS
cycling, optional SCSI requirements, remounting, rereading, or specimen-specific
behavior.
