Release hygiene: checksums, test gate, no PDBs, correct ICU/macOS/uninstall guidance#174
Conversation
|
Note on the red Generated by Claude Code |
- Remove ICU runtime guidance: the published binary is built with InvariantGlobalization=true and never loads ICU, so the install.sh detection check (which also named the wrong apt package) and the README end-user ICU section were misleading. CONTRIBUTING.md is untouched - developers running tests still need ICU. - Publish SHA256SUMS as a release asset covering every archive, and verify downloaded archives in install.sh (sha256sum/shasum) and install.ps1 (Get-FileHash). Both fail clearly on mismatch and warn but continue when SHA256SUMS is absent (older releases). - Strip debug symbols from release artifacts via -p:DebugType=none so opcilloscope.pdb no longer ships in the archives. - Gate release builds on a full `dotnet test -c Release` job so a tag on an untested commit cannot publish untested binaries. - Skip claude-code-review on fork PRs (the OAuth token secret is not available to forks, so the job always posted a red X). - Ignore publish/ output from the README-documented publish command. - Prompt to remove the OPC UA certificate data dir (~/.local/share/opcilloscope) in uninstall.sh, mirroring uninstall.ps1. - Docs: document --insecure in CLAUDE.md's CLI section; note in the README that unsigned macOS binaries downloaded by browser are Gatekeeper-quarantined (xattr -d com.apple.quarantine or use the curl installer). https://claude.ai/code/session_012Vopnd9vWkzELveHRgZhie
17c839f to
d4d8d32
Compare
Code Review — PR #174: Release hygiene
OverviewSolid release-hygiene PR that closes several real gaps: SHA-256 integrity verification for downloaded binaries, a test gate before release builds, stripping PDB symbols from archives, correct ICU/macOS install guidance, and a long-overdue uninstall fix for certificate stores. All changes are purposeful and well-scoped. release.ymlStrengths
Minor observations
install.sh —
|
| Area | Status |
|---|---|
| Test gate on release | Solid |
| SHA256SUMS generation | Correct |
| install.sh checksum verification | Works; minor grep fragility noted |
| install.ps1 checksum abort path | WARN: Verify Write-Err exits; add explicit exit 1 as defence |
| uninstall.sh data-dir prompt | Well implemented |
| PDB stripping | Good |
| Fork guard | Good |
| Docs / README / CLAUDE.md | Good |
The install.ps1 abort path is the one item worth a follow-up patch. Everything else is clean.
Summary
Release/install/docs hygiene from the v1.0 follow-up review (
docs/V1-REVIEW-FOLLOWUP.md, items 13, 16 + the release lows):InvariantGlobalization=trueand never loads ICU, but install.sh warned fresh-system users and the README told Ubuntu 24.04/Debian 13 users to installlibicu72(Debian 12's package). Both removed; CONTRIBUTING.md untouched — developers running the test projects genuinely need ICU.SHA256SUMSasset covering every archive, and install.sh/install.ps1 verify the downloaded archive against it — hard fail on mismatch, graceful warning when SHA256SUMS doesn't exist (older releases) or no hash tool is available.-p:DebugType=none.testjob (fulldotnet test -c Releaseon ubuntu) gates the build matrix — previously a tag on an untested commit published untested binaries.~/.local/share/opcilloscope(PKI/cert stores), matching uninstall.ps1 and the README's manual instructions — it previously declared success while leaving certificate data behind.--insecureflag; README notes that macOS binaries are unsigned (Gatekeeper quarantine +xattr -d com.apple.quarantine/ curl-installer workaround)..gitignoregainspublish/.Test plan
bash -nclean on install.sh/uninstall.sh; checksum match/tamper paths simulated functionallydotnet build Opcilloscope.sln -c Release— 0 warnings, 0 errorsPart of the v1 follow-up punch list (
docs/V1-REVIEW-FOLLOWUP.md, items 13, 16 + lows).https://claude.ai/code/session_012Vopnd9vWkzELveHRgZhie
Generated by Claude Code