Pulse/scripts/installtests
rcourtman 6351fd6526 fix(updates): select releases by highest version, not GitHub list order
Production telemetry (7d, 2026-07-17) shows a persistent tail of live
installs on 6.0.0-rc.x and 6.0.3/6.0.4 while 6.0.5 has been stable since
2026-07-09. Root cause for the reachable stranding class: release
selection trusted GitHub's created_at ordering, and this repo interleaves
v5-line maintenance releases with v6 releases (v5.1.36 was created the
day before v6.0.5). Whenever a v5.1.x release is the most recently
created stable:

- stable channel (getLatestReleaseForChannel) returned the first
  non-prerelease in list order -> "no update" for every v6 install
  until the next v6 release ships
- the RSS rate-limit fallback returned the first feed entry matching the
  channel, same failure, both channels
- the unattended updater trusted /releases/latest, which GitHub defines
  as most-recently-created stable -> timer no-ops in the same window

All three now select the highest eligible version: the API path tracks
newest stable + newest prerelease in one pass (prerelease = GitHub flag
OR tag shape), the feed fallback picks the max matching the channel, and
pulse-auto-update.sh scans /releases pairing each tag with its own
draft/prerelease flags before the fail-closed shape filter, keeping
/releases/latest as fallback. helm-chart-* tags fail semver parsing and
are dropped everywhere.

Verified not broken (pinned by new tests): rc-channel installs are
offered the newer stable (6.0.0-rc.6 -> 6.0.5) and move onto the next rc
line when one opens (-> 6.1.0-rc.2); the auto-update prerelease filter
(fail-closed is_prerelease_tag, metadata-flag refusal) still refuses
prerelease targets on stable. Go tests fail on the pre-fix code
(returned 5.1.37 / "no update").

Contract: deployment-installability now pins version-max release
selection with proofs in manager_stranded_upgrade_test.go and
pulse_auto_update_test.go.
2026-07-17 23:21:49 +01:00
..
windowslifecycleserver Extract the transport-independent action lifecycle service 2026-07-10 11:06:55 +01:00
backfill_release_assets_test.go Add historical release asset backfill workflow 2026-04-22 17:25:58 +01:00
build_release_assets_test.go fix(release): fail closed on malformed release notes 2026-07-17 11:12:22 +01:00
docker_entrypoint_test.go Refresh Pulse 6.1 RC1 mobile evidence 2026-07-13 19:41:41 +01:00
install_docker_sh_test.go Prepare v6.1.0-rc.2 release 2026-07-16 23:45:31 +01:00
install_ps1_test.go Harden native Windows agent lifecycle 2026-07-10 19:16:23 +01:00
install_sh_test.go Fix native agent release lifecycle verification 2026-07-10 01:49:38 +01:00
provider_msp_deploy_test.go Make the provider MSP portal honest and self-sufficient without an email provider 2026-07-10 11:22:57 +01:00
pulse_auto_update_test.go fix(updates): select releases by highest version, not GitHub list order 2026-07-17 23:21:49 +01:00
release_ldflags_test.go Require signed unified agent release assets 2026-04-22 02:00:29 +01:00
root_install_sh_test.go Grant CAP_NET_RAW to the installed systemd unit for ICMP probes 2026-07-11 18:15:22 +01:00
uninstall_sensor_proxy_test.go Prepare v6.0.0 release candidate 2026-06-04 14:07:14 +01:00
windows_agent_lifecycle.ps1 Extract the transport-independent action lifecycle service 2026-07-10 11:06:55 +01:00