Scope

This draft separates file hashes, build provenance, Authenticode, and user-facing reputation signals for a Python GUI app on Windows 11 x64. It does not supply a malware classification, certificate, signing service, Store decision, or SmartScreen outcome.

The estate’s --onedir status is a separate licensing and distribution decision: for PolyForm Noncommercial/Internal Use builds, bundled LGPL Qt and other LGPL libraries must remain replaceable by end users. It is not evidence that --onedir is generally better.

Answer

Use each mechanism for its own claim.

Mechanism What it can show What it does not show
SHA-256 hash Downloaded bytes match a published value when compared correctly. Who built the file, whether it is benign, or whether Windows will trust it.
Build provenance attestation A verified artifact was built by the named workflow from the named public source. Malware safety, a commercial identity, or SmartScreen reputation.
Authenticode signature A Windows signature can identify a signer and detect post-signing integrity changes, subject to Windows trust evaluation. Malware safety or a fixed SmartScreen result.
SmartScreen and similar reputation signals Windows may use them in download and execution decisions. A result established by a hash, provenance, or certificate alone.

Decision path

  1. Publish a SHA-256 file for each artifact when you want users to compare bytes.
  2. Attach build provenance when your release system supports it, and document the source and workflow verification command.
  3. Use Authenticode only when you have a signing identity and operation that you can validate. Do not describe an unsigned artifact as signed.
  4. Treat SmartScreen results and external Store or WinGet acceptance as outcomes outside these mechanisms.

Production evidence

The Build-Tools release workflow calculates SHA-256 files for the ZIP and installer and submits both files to GitHub’s provenance attestation action. The Build-Tools README gives the gh attestation verify shape and required signer repository. The shared installer script retains a commented signing hook rather than establishing signed production artifacts.

For WinGet, Simple UNA Log Viewer’s initial submission and update document that application’s accepted lifecycle only. They do not change the distinct meanings of hashes, provenance, or Authenticode.

Unsupported or external outcomes

  • Authenticode-signed estate artifacts are not reproduced.
  • No mechanism here proves malware safety.
  • No mechanism here proves or controls SmartScreen reputation.
  • Microsoft Store or MSIX is external. Store distribution may be viable but is not reproduced here.
  • General WinGet acceptance is external; Simple UNA Log Viewer is the limited accepted lifecycle example.
  • --onefile and standalone native PySide6 output are not reproduced for the mapped PolyForm route. This does not say --onefile universally violates LGPL; other license and distribution models need their own analysis and testing.
  • This is not legal advice. Layout alone does not fulfill all license obligations; notices, source or offer requirements, and the actual dependency and license versions still matter.

Source ledger

Source owner Primary URL Review class Last reviewed Exact claim or evidence mapped
Microsoft https://learn.microsoft.com/en-us/windows/apps/package-and-deploy/code-signing-options Release-critical August 14, 2026 Store and direct-distribution signing choices, geography limits, and SmartScreen boundary.
GitHub https://docs.github.com/en/actions/how-tos/secure-your-work/use-artifact-attestations/use-artifact-attestations Release-critical August 14, 2026 Artifact provenance verification model.
JDE-Projects Build-Tools https://github.com/JDE-Projects/Build-Tools/blob/ab90ba3459fe0e7cadab8d23d7e920d0bacabdaa/.github/workflows/release.yml Production evidence August 14, 2026 SHA-256 and provenance for ZIP and installer artifacts.
JDE-Projects Build-Tools https://github.com/JDE-Projects/Build-Tools/blob/ab90ba3459fe0e7cadab8d23d7e920d0bacabdaa/README.md Production evidence August 14, 2026 Verification command and signer-repository boundary.
JDE-Projects Build-Tools https://github.com/JDE-Projects/Build-Tools/blob/ab90ba3459fe0e7cadab8d23d7e920d0bacabdaa/installer/installer.iss Production evidence August 14, 2026 Signing hook remains commented in the reproduced installer.
Microsoft WinGet Community Repository https://github.com/microsoft/winget-pkgs/pull/403412 Production evidence August 14, 2026 Initial package lifecycle for Simple UNA Log Viewer only.
Microsoft WinGet Community Repository https://github.com/microsoft/winget-pkgs/pull/416401 Production evidence August 14, 2026 Package-update lifecycle for Simple UNA Log Viewer only.
JDE-Projects Simple UNA Log Viewer https://github.com/JDE-Projects/Simple-UNA-Log-Viewer/blob/df2ce2118a0d8c2ffa3ec0ea0189dc6a6eefc1e3/THIRD-PARTY-LICENSES.txt Production evidence August 14, 2026 Estate notice states the --onedir replaceability goal.
Qt https://www.qt.io/development/open-source-lgpl-obligations Framework-critical August 14, 2026 Qt LGPL obligations boundary.
Qt https://www.qt.io/faq/qt-open-source-licensing Framework-critical August 14, 2026 Qt open-source licensing context.
Free Software Foundation https://www.gnu.org/licenses/lgpl-3.0.en.html Framework-critical August 14, 2026 LGPLv3 primary license text.